@@ -6,19 +6,27 @@ import (
66 "github.com/RoboCup-SSL/ssl-go-tools/pkg/persistence"
77 "google.golang.org/protobuf/proto"
88 "log"
9+ "os"
10+ "path/filepath"
911 "strings"
1012 "time"
1113)
1214
1315type Recorder struct {
14- Recorder * persistence.Recorder
16+ Recorder * persistence.Recorder
17+ logFileName string
18+ logFileDir string
1519}
1620
17- func NewRecorder () (r * Recorder ) {
21+ func NewRecorder (logFileDir string ) (r * Recorder ) {
1822 r = new (Recorder )
1923 r .Recorder = new (persistence.Recorder )
2024 * r .Recorder = persistence .NewRecorder ()
2125 r .Recorder .AddMessageConsumer (r .consumeMessage )
26+ r .logFileDir = logFileDir
27+ if err := os .MkdirAll (r .logFileDir , os .ModePerm ); err != nil {
28+ log .Println ("Could not create log file dir" , err )
29+ }
2230 return
2331}
2432
@@ -45,9 +53,9 @@ func (r *Recorder) consumeMessage(message *persistence.Message) {
4553 }
4654
4755 if ! r .Recorder .IsRecording () && isTeamSet (& refMsg ) && (isGameStage (& refMsg ) || isPreGameStage (& refMsg )) {
48- name : = logFileName (& refMsg )
49- log .Println ("Start recording " , name )
50- if err := r .Recorder .StartRecording (name ); err != nil {
56+ r . logFileName = logFileName (& refMsg )
57+ log .Println ("Start recording " , r . logFileName )
58+ if err := r .Recorder .StartRecording (r . logFileName ); err != nil {
5159 log .Println ("Failed to start recorder: " , err )
5260 }
5361 } else if r .Recorder .IsRecording () {
@@ -56,6 +64,9 @@ func (r *Recorder) consumeMessage(message *persistence.Message) {
5664 if err := r .Recorder .StopRecording (); err != nil {
5765 log .Println ("Failed to stop recorder: " , err )
5866 }
67+ if err := os .Rename (r .logFileName , filepath .Join (r .logFileDir , r .logFileName )); err != nil {
68+ log .Println ("Could not move log file" , err )
69+ }
5970 } else if ! r .Recorder .IsPaused () && isBreakStage (& refMsg ) {
6071 log .Println ("Pause recording" )
6172 r .Recorder .SetPaused (true )
0 commit comments