handler

package
v0.0.0-...-25644c0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2024 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ACCEPTED = 0 + iota
	WRONG_ANSWER
	CPU_TIME_LIMIT_EXCEEDED
	REAL_TIME_LIMIT_EXCEEDED
	MEMORY_LIMIT_EXCEEDED
	RUNTIME_ERROR
	SYSTEM_ERROR
)

Variables

View Source
var (
	ErrTypeAssertionFail   = errors.New("type assertion failed")
	ErrMarshalJson         = errors.New("json marshal error")
	ErrValidate            = errors.New("validation error")
	ErrSandbox             = errors.New("sandbox error")
	ErrTestcaseGet         = errors.New("testcase get error")
	ErrCompile             = errors.New("compile error")
	ErrWrongAnswer         = errors.New("wrong answer")
	ErrCpuTimeLimitExceed  = errors.New("cputime limit exceeded")
	ErrRealTimeLimitExceed = errors.New("realtime limit exceeded")
	ErrMemoryLimitExceed   = errors.New("memory limit exceeded")
	ErrRuntime             = errors.New("runtime error")
)

Functions

func ParseFirstError

func ParseFirstError(j []JudgeResult) error

Types

type Handler

type Handler interface {
	Handle(data interface{}) (json.RawMessage, error)
}

type HandlerError

type HandlerError struct {
	Message string `json:"data"`
	// contains filtered or unexported fields
}

func (*HandlerError) Error

func (h *HandlerError) Error() string

func (*HandlerError) Level

func (h *HandlerError) Level() logger.Level

func (*HandlerError) Unwrap

func (h *HandlerError) Unwrap() error

func (*HandlerError) Wrap

func (h *HandlerError) Wrap(err error) *HandlerError

type JudgeHandler

type JudgeHandler struct {
	// contains filtered or unexported fields
}

func NewJudgeHandler

func NewJudgeHandler(
	compiler sandbox.Compiler,
	runner sandbox.Runner,
	testcaseManager testcase.TestcaseManager,
	langConfig sandbox.LangConfig,
	file file.FileManager,
	logger logger.Logger,
) *JudgeHandler

func (*JudgeHandler) Handle

func (j *JudgeHandler) Handle(id string, data []byte) (json.RawMessage, error)

handle top layer logical flow

type JudgeResult

type JudgeResult struct {
	TestcaseId string          `json:"testcaseId"`
	ResultCode JudgeResultCode `json:"resultCode"`
	CpuTime    int             `json:"cpuTime"`
	RealTime   int             `json:"realTime"`
	Memory     int             `json:"memory"`
	Signal     int             `json:"signal"`
	ExitCode   int             `json:"exitCode"`
	ErrorCode  int             `json:"errorCode"`
	Error      string          `json:"error"`
}

type JudgeResultCode

type JudgeResultCode int8

JudgeResult ResultCode

func SandboxResultCodeToJudgeResultCode

func SandboxResultCodeToJudgeResultCode(code sandbox.ResultCode) JudgeResultCode

FIXME: use more proper name FIXME: refactor

type Request

type Request struct {
	Code        string `json:"code"`
	Language    string `json:"language"`
	ProblemId   int    `json:"problemId"`
	TimeLimit   int    `json:"timeLimit"`
	MemoryLimit int    `json:"memoryLimit"`
}

func (Request) Validate

func (r Request) Validate() (*Request, error)

type Result

type Result struct {
	TotalTestcase int           `json:"totalTestcase"`
	AcceptedNum   int           `json:"acceptedNum"`
	JudgeResult   []JudgeResult `json:"judgeResult"`
}

func (*Result) Accepted

func (r *Result) Accepted()

func (*Result) Marshal

func (r *Result) Marshal() (json.RawMessage, error)

func (*Result) SetJudgeResult

func (r *Result) SetJudgeResult(idx int, testcaseId string, execResult sandbox.ExecResult)

func (*Result) SetJudgeResultCode

func (r *Result) SetJudgeResultCode(idx int, code JudgeResultCode)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL