|
@@ -19,7 +19,7 @@ var (
|
|
urlExamBegin = "36.110.106.142/exam/begin"
|
|
urlExamBegin = "36.110.106.142/exam/begin"
|
|
urlExamEnd = "36.110.106.142/exam/end"
|
|
urlExamEnd = "36.110.106.142/exam/end"
|
|
cacheMutex sync.Mutex
|
|
cacheMutex sync.Mutex
|
|
- cacheTeamName map[string]time.Time
|
|
|
|
|
|
+ cacheTeamName = make(map[string]time.Time)
|
|
heartBeatTimeThreshold = 5 * time.Second // 心跳时间
|
|
heartBeatTimeThreshold = 5 * time.Second // 心跳时间
|
|
)
|
|
)
|
|
|
|
|
|
@@ -74,8 +74,10 @@ func examBegin() {
|
|
cacheMutex.Lock()
|
|
cacheMutex.Lock()
|
|
{
|
|
{
|
|
if !util.ContainsKey(cacheTeamName, teamName) { // 1 如果缓存数组中没有此队名,代表考试开始,缓存此队名,和当前时间戳
|
|
if !util.ContainsKey(cacheTeamName, teamName) { // 1 如果缓存数组中没有此队名,代表考试开始,缓存此队名,和当前时间戳
|
|
- cacheTeamName[teamName] = time.Now()
|
|
|
|
|
|
+ examBeginTime := time.Now()
|
|
|
|
+ cacheTeamName[teamName] = examBeginTime
|
|
_, _ = util.PostJsonResponseString(urlExamBegin, map[string]string{"teamName": teamName})
|
|
_, _ = util.PostJsonResponseString(urlExamBegin, map[string]string{"teamName": teamName})
|
|
|
|
+ c_log.GlobalLogger.Infof("队伍 %v 的考试开始。", teamName)
|
|
} else { // 2 如果缓存数组中有此队名,代表考试进行中,刷新时间戳
|
|
} else { // 2 如果缓存数组中有此队名,代表考试进行中,刷新时间戳
|
|
cacheTeamName[teamName] = time.Now()
|
|
cacheTeamName[teamName] = time.Now()
|
|
}
|
|
}
|
|
@@ -99,6 +101,7 @@ func examEnd() {
|
|
for _, teamName := range keysToDelete { // 检查缓存中的队名,如果超过心跳时间,则代表考试结束,删除缓存中的队名
|
|
for _, teamName := range keysToDelete { // 检查缓存中的队名,如果超过心跳时间,则代表考试结束,删除缓存中的队名
|
|
delete(cacheTeamName, teamName)
|
|
delete(cacheTeamName, teamName)
|
|
_, _ = util.PostJsonResponseString(urlExamEnd, map[string]string{"teamName": teamName})
|
|
_, _ = util.PostJsonResponseString(urlExamEnd, map[string]string{"teamName": teamName})
|
|
|
|
+ c_log.GlobalLogger.Infof("队伍 %v 的考试结束。", teamName)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cacheMutex.Unlock()
|
|
cacheMutex.Unlock()
|