go-judge/pkg/envexec/interface.go
criyle 1f86f25995 Refactor & Documentation
- pkg/runner -> pkg/envexec
- add idea about executor server
2020-03-03 02:32:59 -05:00

39 lines
794 B
Go

package envexec
import (
"time"
"github.com/criyle/go-sandbox/container"
"github.com/criyle/go-sandbox/runner"
)
// EnvironmentPool implements pool of environments
type EnvironmentPool interface {
Get() (container.Environment, error)
Put(container.Environment)
}
// Cgroup defines interface to limit and monitor resources consumption of a process
type Cgroup interface {
SetMemoryLimit(runner.Size) error
SetProcLimit(uint64) error
CPUUsage() (time.Duration, error)
MemoryUsage() (runner.Size, error)
AddProc(int) error
Reset() error
Destory() error
}
// CPUUsager access process cpu usage (from cgroup)
type CPUUsager interface {
CPUUsage() (time.Duration, error)
}
// CgroupPool implements pool of Cgroup
type CgroupPool interface {
Get() (Cgroup, error)
Put(Cgroup)
}