From 0381a5dda0edf8b286de506766784ec15d412777 Mon Sep 17 00:00:00 2001 From: Saxon1 Date: Thu, 19 Apr 2018 16:33:12 +0930 Subject: [PATCH] ready for some testing --- revid/RevidCLI.go | 106 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 80 insertions(+), 26 deletions(-) diff --git a/revid/RevidCLI.go b/revid/RevidCLI.go index 635b5247..1932b097 100644 --- a/revid/RevidCLI.go +++ b/revid/RevidCLI.go @@ -1,3 +1,30 @@ +/* +NAME + RevidCLI.go + +DESCRIPTION + See Readme.md + +AUTHORS + Saxon A. Nelson-Milton + Jack Richardson + +LICENSE + RevidCLI.go is Copyright (C) 2017 the Australian Ocean Lab (AusOcean) + + It is free software: you can redistribute it and/or modify them + under the terms of the GNU General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with revid in gpl.txt. If not, see [GNU licenses](http://www.gnu.org/licenses). +*/ package main import ( @@ -76,8 +103,10 @@ func main() { flags[i] = flag.String(flagNames[i][0], "", flagNames[i][1]) } + // Do we want a netsender session netSenderFlagPtr := flag.Bool("netSender", false, "Are we checking vars through netsender?") - runDurationPtr := flag.Int("runDuration",defaultRunDuration,"how long do you want revid to run for?") + // User might also want to define how long revid runs for + runDurationPtr := flag.Int("runDuration",defaultRunDuration,"How long do you want revid to run for?") flag.Parse() @@ -147,25 +176,18 @@ func main() { config.Timeout = flags[timeoutPtr] config.IntraRefreshPeriod = flags[intraRefreshPeriodPtr] - // Try to create the revid instance with the given config - for revid, err := NewRevid(config); err != nil; { - // If the config does have a logger, use it to output error, otherwise - // just output to std output - if config.Logger != nil { - config.Logger.Log("FATAL ERROR", err) - } else { - fmt.Printf("FATAL ERROR: %v", err) - } - } - + createRevidInstance() revid.Start() + // Is the netsender flag been used ? if so run this loop for *netSenderFlagPtr { periodicNetsenderReport() sleepTime, err := strconv.Atoi(netsender.GetConfigParam("monPeriod")) time.Sleep(time.Duration(sleepTime) * time.Second) } + // If we're not running a netsender session then we run revid for the amount + // of time the user defined or the default 2 days time.Sleep( time.Duration(*runDurationPtr) * time.Second ) revid.Stop() } @@ -212,43 +234,62 @@ func periodicNetsenderReport(){ } func updateRevid() { - revid.Stop() time.Sleep( time.Duration(revidStopTime) * time.Second ) for key, value := range vars { switch key { case "FramesPerClip": - config.FramesPerClip = value + asInt,err := strconv.Atoi(value) + if asInt > 0 && err == nil { + config.FramesPerClip = value + } case "RtmpUrl": config.RtmpUrl = value case "Bitrate": - config.Bitrate = value + asInt,err := strconv.Atoi(value) + if asInt > 0 && err == nil { + config.Bitrate = value + } case "OutputFileName": config.OutputFileName = value case "InputFileName": config.InputFileName = value case "Height": - config.Height = value + asInt,err := strconv.Atoi(value) + if asInt > 0 && err == nil { + config.Height = value + } case "Width": - config.Width = value + asInt,err := strconv.Atoi(value) + if asInt > 0 && err == nil { + config.Width = value + } case "FrameRate": - config.FrameRate = value + asInt,err := strconv.Atoi(value) + if asInt > 0 && err == nil { + config.FrameRate = value + } case "HttpAddress": config.HttpAddress = value case "Quantization": - config.Quantization = value + asInt,err := strconv.Atoi(value) + if asInt > 0 && err == nil { + config.Quantization = value + } case "Timeout": - config.Timeout = value + asInt,err := strconv.Atoi(value) + if asInt > 0 && err == nil { + config.Timeout = value + } case "IntraRefreshPeriod": - confog.IntraRefreshPeriod = value + asInt,err := strconv.Atoi(value) + if asInt > 0 && err == nil { + confog.IntraRefreshPeriod = value + } } } - revid, err := Newrevidance(config) - if err != nil { - fmt.Println(err) - } - + createRevidInstance() revid.Start() } @@ -340,3 +381,16 @@ func revidReportActions(pin int) (int, error) { return -1, errors.New("External pin not defined") } } + +func createRevidInstance(){ + // Try to create the revid instance with the given config + for revid, err := NewRevid(config); err != nil; { + // If the config does have a logger, use it to output error, otherwise + // just output to std output + if config.Logger != nil { + config.Logger.Log("FATAL ERROR", err) + } else { + fmt.Printf("FATAL ERROR: %v", err) + } + } +}