|
@@ -16,7 +16,8 @@ var (
|
|
|
dir = "/home/root/competition/"
|
|
|
commandArgs = []string{"record", "--split", "--duration=1", "/pji_gps", "/data_read"}
|
|
|
topic = "/cicv_competition"
|
|
|
- examBeginUrl = "3"
|
|
|
+ urlExamBegin = "36.110.106.142/exam/begin"
|
|
|
+ urlExamEnd = "36.110.106.142/exam/end"
|
|
|
cacheMutex sync.Mutex
|
|
|
cacheTeamName map[string]time.Time
|
|
|
heartBeatTimeThreshold = 5 * time.Second
|
|
@@ -26,6 +27,8 @@ var (
|
|
|
|
|
|
func ForCompetition() {
|
|
|
go dataCollection()
|
|
|
+ go examBegin()
|
|
|
+ go examEnd()
|
|
|
}
|
|
|
|
|
|
|
|
@@ -72,7 +75,7 @@ func examBegin() {
|
|
|
{
|
|
|
if !util.ContainsKey(cacheTeamName, teamName) {
|
|
|
cacheTeamName[teamName] = time.Now()
|
|
|
-
|
|
|
+ _, _ = util.PostJsonResponseString(urlExamBegin, map[string]string{"teamName": teamName})
|
|
|
} else {
|
|
|
cacheTeamName[teamName] = time.Now()
|
|
|
}
|
|
@@ -87,15 +90,15 @@ func examEnd() {
|
|
|
time.Sleep(time.Duration(1) * time.Second)
|
|
|
cacheMutex.Lock()
|
|
|
{
|
|
|
- keysToDelete := []string{}
|
|
|
+ var keysToDelete []string
|
|
|
for teamName, heartBeatTime := range cacheTeamName {
|
|
|
if time.Since(heartBeatTime) > heartBeatTimeThreshold {
|
|
|
keysToDelete = append(keysToDelete, teamName)
|
|
|
}
|
|
|
}
|
|
|
- for _, key := range keysToDelete {
|
|
|
- delete(cacheTeamName, key)
|
|
|
-
|
|
|
+ for _, teamName := range keysToDelete {
|
|
|
+ delete(cacheTeamName, teamName)
|
|
|
+ _, _ = util.PostJsonResponseString(urlExamEnd, map[string]string{"teamName": teamName})
|
|
|
}
|
|
|
}
|
|
|
cacheMutex.Unlock()
|