no replay if not needed and no multiple replays at same time

This commit is contained in:
Timo Volkmann 2021-01-06 13:37:29 +01:00
parent 7805e89f5f
commit f07d27b325
3 changed files with 17 additions and 7 deletions

View File

@ -26,7 +26,7 @@ type Service interface {
StopRecord() (*TrackingMetadata, error)
StopAll() (*TrackingMetadata, error)
LoadTracking(trackingId uuid.UUID) (*Tracking, error)
LoadTracking(trackingId uuid.UUID, replay bool) (*Tracking, error)
DeleteTracking(trackingId uuid.UUID)
StartReplay()
@ -216,7 +216,7 @@ func (t *trackingService) StopAll() (*TrackingMetadata, error) {
return tm, err
}
func (t *trackingService) LoadTracking(trackingId uuid.UUID) (*Tracking, error) {
func (t *trackingService) LoadTracking(trackingId uuid.UUID, replay bool) (*Tracking, error) {
if !(t.opMode == REPLAY || t.opMode == STOPPED || t.opMode == LIVE || t.opMode == RECORDING) {
t.StopAll()
}
@ -225,7 +225,14 @@ func (t *trackingService) LoadTracking(trackingId uuid.UUID) (*Tracking, error)
if err != nil {
return nil, err
}
if replay == false {
return tracking, nil
}
t.safelyReplaceTracking(*tracking)
if t.replaypipe != nil {
t.replaypipe.Stop()
t.replaypipe = nil
}
t.replaypipe = NewReplayPipeline(t.publisher, t.tracking)
t.publisher.SetStreaming(true)
t.opMode = REPLAY

View File

@ -214,7 +214,7 @@ window.addEventListener("load", function(evt) {
document.getElementById("replaystarten").onclick = function(evt) {
let sel = document.getElementById("meas")
console.log(trackings[sel.selectedIndex].UUID)
fetch(`http://localhost:3011/trackings/${trackings[sel.selectedIndex].UUID}`, { method: 'GET'}).then(results => {
fetch(`http://localhost:3011/trackings/${trackings[sel.selectedIndex].UUID}?replay=true`, { method: 'GET'}).then(results => {
return results.json()
}).then(r => {
console.log(r.data.Data)

View File

@ -23,9 +23,6 @@ func CreateServer(s core.Service, sub core.Subscriber, c *core.Configuration) {
// Websocket
app.Get("/ws", websocket.New(createFiberWebsocketHandler(sub)))
// TODO: Get all SerialPorts
// app.Get("/serialports")
// Tracking persistence controls HTTP JSON RPC API
trackings := app.Group("/trackings")
trackings.Get("/", allTrackingsHandler(s, c)) // Get all trackings Metadata
@ -59,7 +56,13 @@ func LoadTrackingHandler(s core.Service, c *core.Configuration) fiber.Handler {
ctx.Status(404).JSON(err)
return err
}
tracking, err := s.LoadTracking(uid)
var replay bool
if ctx.Query("replay", "false") == "true" {
replay = true
} else {
replay = false
}
tracking, err := s.LoadTracking(uid, replay)
if err != nil {
logrus.Error(err)
ctx.Status(404).JSON(err)