aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/game
diff options
context:
space:
mode:
Diffstat (limited to 'backend/game')
-rw-r--r--backend/game/hub.go29
1 files changed, 26 insertions, 3 deletions
diff --git a/backend/game/hub.go b/backend/game/hub.go
index d17ff7c..11a466b 100644
--- a/backend/game/hub.go
+++ b/backend/game/hub.go
@@ -270,7 +270,17 @@ func (hub *gameHub) processTaskResults() {
// TODO: broadcast to watchers
}
case *taskqueue.TaskResultRunTestcase:
- err := hub.processTaskResultRunTestcase(taskResult)
+ var err error
+ err = hub.processTaskResultRunTestcase(taskResult)
+ _ = err // TODO: handle err?
+ aggregatedStatus, err := hub.q.AggregateTestcaseResults(hub.ctx, int32(taskResult.TaskPayload.SubmissionID))
+ _ = err // TODO: handle err?
+ err = hub.q.CreateSubmissionResult(hub.ctx, db.CreateSubmissionResultParams{
+ SubmissionID: int32(taskResult.TaskPayload.SubmissionID),
+ Status: aggregatedStatus,
+ Stdout: "",
+ Stderr: "",
+ })
if err != nil {
for player := range hub.players {
if player.playerID != taskResult.TaskPayload.UserID() {
@@ -280,13 +290,26 @@ func (hub *gameHub) processTaskResults() {
Type: playerMessageTypeS2CExecResult,
Data: playerMessageS2CExecResultPayload{
Score: nil,
- Status: api.GamePlayerMessageS2CExecResultPayloadStatus(err.Status),
+ Status: api.GamePlayerMessageS2CExecResultPayloadStatus("internal_error"),
},
}
}
// TODO: broadcast to watchers
+ continue
+ }
+ for player := range hub.players {
+ if player.playerID != taskResult.TaskPayload.UserID() {
+ continue
+ }
+ player.s2cMessages <- &playerMessageS2CExecResult{
+ Type: playerMessageTypeS2CExecResult,
+ Data: playerMessageS2CExecResultPayload{
+ Score: nil,
+ Status: api.GamePlayerMessageS2CExecResultPayloadStatus(aggregatedStatus),
+ },
+ }
+ // TODO: broadcast to watchers
}
- // TODO: aggregate results of testcases
default:
panic("unexpected task result type")
}