implemented automatic persistence for trackings
This commit is contained in:
parent
09791727a4
commit
1ea6822202
@ -6,6 +6,7 @@ import (
|
||||
"git.timovolkmann.de/gyrogpsc/web"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/viper"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -24,13 +25,14 @@ func main() {
|
||||
time.Sleep(5 * time.Second)
|
||||
service.StopRecord()
|
||||
time.Sleep(5 * time.Second)
|
||||
service.NewSetup(core.TCP)
|
||||
service.NewSetup(core.TCP, core.SERIAL)
|
||||
time.Sleep(5 * time.Second)
|
||||
service.StartRecord()
|
||||
time.Sleep(5 * time.Second)
|
||||
time.Sleep(120 * time.Second)
|
||||
service.StopRecord()
|
||||
time.Sleep(5 * time.Second)
|
||||
service.StopAll()
|
||||
os.Exit(0)
|
||||
}()
|
||||
|
||||
web.CreateServer(service, disp, conf)
|
||||
|
||||
@ -9,8 +9,7 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
conf := &core.Configuration{}
|
||||
configurationFromFile(conf)
|
||||
conf := configurationFromFile()
|
||||
|
||||
repo := storage.NewRepository(conf)
|
||||
disp := core.NewDispatcher()
|
||||
@ -20,18 +19,31 @@ func main() {
|
||||
web.CreateServer(service, disp, conf)
|
||||
}
|
||||
|
||||
func configurationFromFile(c *core.Configuration) {
|
||||
viper.SetDefault("TcpCollectorPort", ":3010")
|
||||
viper.SetDefault("SerialCollectorPort", "/dev/tty.usbmodem14201")
|
||||
viper.SetDefault("HttpPort", "layouts")
|
||||
viper.SetDefault("publishIntervalMs", 50)
|
||||
viper.SetDefault("syncUpdateIntervalMs", 494)
|
||||
func configurationFromFile() *core.Configuration {
|
||||
viper.SetDefault("collectors.porttcp", ":3010")
|
||||
viper.SetDefault("collectors.portserial", "/dev/tty.usbmodem14201")
|
||||
viper.SetDefault("webserver.port", ":3011")
|
||||
viper.SetDefault("pipeline.publishIntervalMs", 50)
|
||||
viper.SetDefault("pipeline.syncUpdateIntervalMs", 494)
|
||||
viper.SetDefault("debuglevel", "INFO")
|
||||
|
||||
viper.SetConfigName("gpsconfig") // name of config file (without extension)
|
||||
viper.SetConfigType("yaml")
|
||||
viper.AddConfigPath(".")
|
||||
viper.AddConfigPath("./../../")
|
||||
|
||||
viper.Unmarshal(c)
|
||||
logrus.Println(c)
|
||||
if err := viper.ReadInConfig(); err != nil {
|
||||
logrus.Warn("couldn't find config file. using standard configuration")
|
||||
}
|
||||
|
||||
c := core.Configuration{}
|
||||
if err := viper.Unmarshal(&c); err != nil {
|
||||
logrus.Debug("couldn't load config...")
|
||||
logrus.Error(err)
|
||||
}
|
||||
lvl, err := logrus.ParseLevel(c.Debuglevel)
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
logrus.SetLevel(lvl)
|
||||
return &c
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ import (
|
||||
"net"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Collector interface {
|
||||
@ -55,7 +56,6 @@ func (s *serialCollector) isSerialCollActive() bool {
|
||||
return s.active
|
||||
}
|
||||
|
||||
|
||||
func (s *serialCollector) Collect() {
|
||||
s.mu.Lock()
|
||||
s.active = true
|
||||
@ -67,7 +67,20 @@ func (s *serialCollector) Collect() {
|
||||
}
|
||||
port, err := serial.Open(s.config.Collectors.SerialCollectorPort, mode)
|
||||
if err != nil {
|
||||
logrus.Fatalln("can't open serial port:", err.Error())
|
||||
logrus.Warn("can't open serial port:", err)
|
||||
//if e, ok := err.(serial.PortError); ok && e.Code() == serial.PortBusy {
|
||||
for i := 3; i < 20; i = i + 2 {
|
||||
logrus.Warnf("try again in -> %vms", i*i)
|
||||
time.Sleep(time.Millisecond * time.Duration(i*i))
|
||||
port, err = serial.Open(s.config.Collectors.SerialCollectorPort, mode)
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
//}
|
||||
}
|
||||
defer port.Close()
|
||||
|
||||
@ -102,8 +115,6 @@ func (s *serialCollector) Collect() {
|
||||
}()
|
||||
}
|
||||
|
||||
|
||||
|
||||
func (s *serialCollector) Close() {
|
||||
s.mu.Lock()
|
||||
s.active = false
|
||||
|
||||
@ -55,6 +55,7 @@ func (t *trackingService) NewSetup(cols ...CollectorType) {
|
||||
if t.opMode == LIVE {
|
||||
logrus.Println("trackingservice: stop currently running setup before creating new one")
|
||||
t.StopAll()
|
||||
time.Sleep(20 * time.Millisecond)
|
||||
}
|
||||
logrus.Debug("new tracking:", cols)
|
||||
t.opMode = LIVE
|
||||
@ -138,7 +139,6 @@ func (t *trackingService) LoadTracking(trackingId uuid.UUID) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
func (t *trackingService) safelyReplaceTracking(tr Tracking) {
|
||||
m1.Lock()
|
||||
m2.Lock()
|
||||
@ -146,4 +146,3 @@ func (t *trackingService) safelyReplaceTracking(tr Tracking) {
|
||||
m2.Unlock()
|
||||
m1.Unlock()
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user