mirror of
https://github.com/criyle/go-judge.git
synced 2025-11-04 14:50:02 +08:00
64 lines
1.1 KiB
Go
64 lines
1.1 KiB
Go
package runner
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/criyle/go-judge/file"
|
|
"github.com/criyle/go-judge/pkg/envexec"
|
|
"github.com/criyle/go-sandbox/runner"
|
|
)
|
|
|
|
// RunTaskStatus defines success / fail
|
|
type RunTaskStatus int
|
|
|
|
// Success / Fail
|
|
const (
|
|
RunTaskSucceeded RunTaskStatus = iota + 1
|
|
RunTaskFailed
|
|
)
|
|
|
|
// RunTaskResult return the result for run task RPC
|
|
type RunTaskResult struct {
|
|
// status
|
|
Status RunTaskStatus // done / failed
|
|
|
|
// compile result
|
|
Compile *CompileResult
|
|
|
|
// exec result
|
|
Exec *ExecResult
|
|
}
|
|
|
|
// CompileResult returns result for compile tasks
|
|
type CompileResult struct {
|
|
Exec *file.CompiledExec // contains exec if success
|
|
Error string // error message if failed
|
|
}
|
|
|
|
// ExecResult returns result for exec tasks
|
|
type ExecResult struct {
|
|
// status
|
|
Status envexec.Status
|
|
|
|
// score
|
|
ScoringRate float64
|
|
|
|
// error if present else empty string
|
|
Error string
|
|
|
|
// detail stats
|
|
Time time.Duration
|
|
Memory runner.Size
|
|
|
|
// user stdout stderr
|
|
UserOutput []byte
|
|
UserError []byte
|
|
|
|
// stdin / answer file content
|
|
Input []byte
|
|
Answer []byte
|
|
|
|
// SPJ outputs
|
|
SPJOutput []byte
|
|
}
|