aboutsummaryrefslogtreecommitdiffhomepage
path: root/worker/swift/models.go
diff options
context:
space:
mode:
Diffstat (limited to 'worker/swift/models.go')
-rw-r--r--worker/swift/models.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/worker/swift/models.go b/worker/swift/models.go
new file mode 100644
index 0000000..4a318d0
--- /dev/null
+++ b/worker/swift/models.go
@@ -0,0 +1,86 @@
+package main
+
+import (
+ "errors"
+ "time"
+)
+
+const (
+ resultSuccess = "success"
+ resultCompileError = "compile_error"
+ resultRuntimeError = "runtime_error"
+ resultTimeout = "timeout"
+ resultInternalError = "internal_error"
+)
+
+var (
+ errInvalidMaxDuration = errors.New("'max_duration_ms' must be positive")
+)
+
+type swiftCompileRequestData struct {
+ MaxDurationMilliseconds int `json:"max_duration_ms"`
+ Code string `json:"code"`
+ CodeHash string `json:"code_hash"`
+}
+
+func (req *swiftCompileRequestData) maxDuration() time.Duration {
+ return time.Duration(req.MaxDurationMilliseconds) * time.Millisecond
+}
+
+func (req *swiftCompileRequestData) validate() error {
+ if req.MaxDurationMilliseconds <= 0 {
+ return errInvalidMaxDuration
+ }
+ return nil
+}
+
+type swiftCompileResponseData struct {
+ Status string `json:"status"`
+ Stdout string `json:"stdout"`
+ Stderr string `json:"stderr"`
+}
+
+type wasmCompileRequestData struct {
+ MaxDurationMilliseconds int `json:"max_duration_ms"`
+ CodeHash string `json:"code_hash"`
+}
+
+type wasmCompileResponseData struct {
+ Status string `json:"status"`
+ Stdout string `json:"stdout"`
+ Stderr string `json:"stderr"`
+}
+
+func (req *wasmCompileRequestData) maxDuration() time.Duration {
+ return time.Duration(req.MaxDurationMilliseconds) * time.Millisecond
+}
+
+func (req *wasmCompileRequestData) validate() error {
+ if req.MaxDurationMilliseconds <= 0 {
+ return errInvalidMaxDuration
+ }
+ return nil
+}
+
+type testRunRequestData struct {
+ MaxDurationMilliseconds int `json:"max_duration_ms"`
+ CodeHash string `json:"code_hash"`
+ Stdin string `json:"stdin"`
+}
+
+func (req *testRunRequestData) maxDuration() time.Duration {
+ return time.Duration(req.MaxDurationMilliseconds) * time.Millisecond
+}
+
+func (req *testRunRequestData) validate() error {
+ if req.MaxDurationMilliseconds <= 0 {
+ return errInvalidMaxDuration
+ }
+ return nil
+}
+
+type testRunResponseData struct {
+ Status string `json:"status"`
+ Stdout string `json:"stdout"`
+ Stderr string `json:"stderr"`
+}