Доработка документации
This commit is contained in:
@@ -7,6 +7,8 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// DataLogger пишет сэмплы в бинарный файл с буферизацией: буфер 64 КБ
|
||||
// сбрасывается раз в секунду либо при заполнении, после сброса — fsync.
|
||||
type DataLogger struct {
|
||||
file *os.File
|
||||
mu sync.Mutex
|
||||
@@ -16,11 +18,14 @@ type DataLogger struct {
|
||||
closeCh chan struct{}
|
||||
}
|
||||
|
||||
// Sample — одно измерение: метка времени в микросекундах Unix и сырой байт GPIO.
|
||||
type Sample struct {
|
||||
Timestamp int64 // microseconds
|
||||
Value byte
|
||||
}
|
||||
|
||||
// NewDataLogger открывает файл basePath на дозапись и запускает фоновый
|
||||
// цикл сброса буфера. Именование файлов и смену часа обеспечивает RotatingLogger.
|
||||
func NewDataLogger(basePath string) (*DataLogger, error) {
|
||||
// путь будет формироваться через rotation
|
||||
f, err := os.OpenFile(basePath, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
|
||||
@@ -40,6 +45,8 @@ func NewDataLogger(basePath string) (*DataLogger, error) {
|
||||
return d, nil
|
||||
}
|
||||
|
||||
// Write добавляет сэмпл в буфер в формате 9 байт:
|
||||
// uint64 little-endian (микросекунды Unix) + 1 байт значения.
|
||||
func (d *DataLogger) Write(s Sample) {
|
||||
d.mu.Lock()
|
||||
defer d.mu.Unlock()
|
||||
@@ -91,6 +98,7 @@ func (d *DataLogger) flushLoop() {
|
||||
}
|
||||
}
|
||||
|
||||
// Close останавливает цикл сброса, дописывает остаток буфера и закрывает файл.
|
||||
func (d *DataLogger) Close() error {
|
||||
close(d.closeCh)
|
||||
d.flushTick.Stop()
|
||||
|
||||
Reference in New Issue
Block a user