62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package core
|
|
|
|
import (
|
|
"github.com/google/uuid"
|
|
"log"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
type Tracking struct {
|
|
TrackingMetadata
|
|
Records []recordPair
|
|
Rawdata []rawRecord
|
|
mu sync.Mutex
|
|
|
|
}
|
|
|
|
type TrackingMetadata struct {
|
|
UUID uuid.UUID
|
|
TimeCreated time.Time
|
|
collectors []CollectorType
|
|
}
|
|
|
|
func (s *Tracking) EnqueuePair(tcp sensorData, ser sensorData) {
|
|
s.mu.Lock()
|
|
defer s.mu.Unlock()
|
|
rp := recordPair{
|
|
RecordTime: time.Now(),
|
|
data: map[sourceId]sensorData{
|
|
tcp.source: tcp,
|
|
ser.source: ser,
|
|
},
|
|
}
|
|
s.Records = append(s.Records, rp)
|
|
log.Println("tracking Records: len->", len(s.Records))
|
|
}
|
|
|
|
func (s *Tracking) EnqueueRaw(data sensorData) {
|
|
s.mu.Lock()
|
|
defer s.mu.Unlock()
|
|
sr := rawRecord{
|
|
time.Now(),
|
|
data,
|
|
}
|
|
s.Rawdata = append(s.Rawdata, sr)
|
|
log.Println("raw data points: len->", len(s.Records))
|
|
}
|
|
|
|
func emptyTracking() Tracking {
|
|
return Tracking{
|
|
TrackingMetadata: TrackingMetadata{
|
|
UUID: uuid.New(),
|
|
},
|
|
Records: []recordPair{},
|
|
Rawdata: []rawRecord{},
|
|
}
|
|
}
|
|
|
|
func (s *Tracking) isEmpty() bool {
|
|
return len(s.Rawdata) + len(s.Records) == 0
|
|
}
|