This is an automated email from the ASF dual-hosted git repository.
pabloem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 2420585 [BEAM-13155][Playground] add a new status: STATUS_RUN_ERROR;
add a new API method GetRunError; add a new sunKey RunError; update of
validation processing;
new f068a62 Merge pull request #15879 from [BEAM-13155][Playground]
Update the processing of error during run code
2420585 is described below
commit 24205850efc35caff49f8adbbf04f79e625b575c
Author: AydarZaynutdinov <[email protected]>
AuthorDate: Wed Nov 3 18:56:24 2021 +0300
[BEAM-13155][Playground]
add a new status: STATUS_RUN_ERROR;
add a new API method GetRunError;
add a new sunKey RunError;
update of validation processing;
---
playground/api/v1/api.proto | 19 +-
playground/backend/cmd/server/controller.go | 41 +-
playground/backend/cmd/server/controller_test.go | 173 ++++++--
playground/backend/internal/api/v1/api.pb.go | 479 +++++++++++++--------
playground/backend/internal/api/v1/api_grpc.pb.go | 38 ++
playground/backend/internal/cache/cache.go | 3 +
.../backend/internal/cache/redis/redis_cache.go | 2 +-
playground/frontend/lib/api/v1/api.pb.dart | 106 ++++-
playground/frontend/lib/api/v1/api.pbenum.dart | 6 +-
playground/frontend/lib/api/v1/api.pbgrpc.dart | 28 ++
playground/frontend/lib/api/v1/api.pbjson.dart | 30 +-
11 files changed, 666 insertions(+), 259 deletions(-)
diff --git a/playground/api/v1/api.proto b/playground/api/v1/api.proto
index e0e164f..d716ca3 100644
--- a/playground/api/v1/api.proto
+++ b/playground/api/v1/api.proto
@@ -37,8 +37,9 @@ enum Status {
STATUS_COMPILE_ERROR = 4;
STATUS_EXECUTING = 5;
STATUS_FINISHED = 6;
- STATUS_ERROR = 7;
- STATUS_RUN_TIMEOUT = 8;
+ STATUS_RUN_ERROR = 7;
+ STATUS_ERROR = 8;
+ STATUS_RUN_TIMEOUT = 9;
}
enum ExampleType {
@@ -87,7 +88,16 @@ message GetRunOutputRequest {
// RunOutputResponse represents the result of the executed code.
message GetRunOutputResponse {
string output = 1;
- Status compilation_status = 2;
+}
+
+// GetRunErrorRequest contains information of the pipeline uuid.
+message GetRunErrorRequest {
+ string pipeline_uuid = 1;
+}
+
+// GetRunErrorResponse represents the error of the executed code.
+message GetRunErrorResponse {
+ string output = 1;
}
// ListOfExamplesRequest contains information of the needed examples sdk and
categories.
@@ -140,6 +150,9 @@ service PlaygroundService {
// Get the result of pipeline execution.
rpc GetRunOutput(GetRunOutputRequest) returns (GetRunOutputResponse);
+ // Get the error of pipeline execution.
+ rpc GetRunError(GetRunErrorRequest) returns (GetRunErrorResponse);
+
// Get the result of pipeline compilation.
rpc GetCompileOutput(GetCompileOutputRequest) returns
(GetCompileOutputResponse);
diff --git a/playground/backend/cmd/server/controller.go
b/playground/backend/cmd/server/controller.go
index ad964b2..5b92d2b 100644
--- a/playground/backend/cmd/server/controller.go
+++ b/playground/backend/cmd/server/controller.go
@@ -104,6 +104,23 @@ func (controller *playgroundController) GetRunOutput(ctx
context.Context, info *
return &pipelineResult, nil
}
+//GetRunError is returning error output of execution for specific pipeline by
PipelineUuid
+func (controller *playgroundController) GetRunError(ctx context.Context, info
*pb.GetRunErrorRequest) (*pb.GetRunErrorResponse, error) {
+ pipelineId := info.PipelineUuid
+ runErrorInterface, err := controller.cacheService.GetValue(ctx,
uuid.MustParse(pipelineId), cache.RunError)
+ if err != nil {
+ logger.Errorf("%s: GetRunError(): cache.GetValue: error: %s",
pipelineId, err.Error())
+ return nil, errors.NotFoundError("GetRunError", "there is no
run error output for pipelineId: "+pipelineId+", subKey: cache.RunError")
+ }
+ runError, converted := runErrorInterface.(string)
+ if !converted {
+ return nil, errors.InternalError("GetRunError", "run output
can't be converted to string")
+ }
+ pipelineResult := pb.GetRunErrorResponse{Output: runError}
+
+ return &pipelineResult, nil
+}
+
//GetCompileOutput is returning output of compilation for specific pipeline by
PipelineUuid
func (controller *playgroundController) GetCompileOutput(ctx context.Context,
info *pb.GetCompileOutputRequest) (*pb.GetCompileOutputResponse, error) {
pipelineId := info.PipelineUuid
@@ -237,10 +254,10 @@ func setupValidators(sdk pb.Sdk, filepath string)
*[]validators.Validator {
// processCode validates, compiles and runs code by pipelineId.
// During each operation updates status of execution and saves it into cache:
-// - In case of validation step is failed saves playground.Status_STATUS_ERROR
as cache.Status into cache.
+// - In case of validation step is failed saves
playground.Status_STATUS_VALIDATION_ERROR as cache.Status into cache.
// - In case of compile step is failed saves
playground.Status_STATUS_COMPILE_ERROR as cache.Status and compile logs as
cache.CompileOutput into cache.
-// - In case of compile step is completed with no errors saves empty string
("") as cache.CompileOutput into cache.
-// - In case of run step is failed saves playground.Status_STATUS_ERROR as
cache.Status and run logs as cache.RunOutput into cache.
+// - In case of compile step is completed with no errors saves compile output
as cache.CompileOutput into cache.
+// - In case of run step is failed saves playground.Status_STATUS_RUN_ERROR as
cache.Status and run logs as cache.RunError into cache.
// - In case of run step is completed with no errors saves
playground.Status_STATUS_FINISHED as cache.Status and run output as
cache.RunOutput into cache.
// At the end of this method deletes all created folders.
func processCode(ctx context.Context, cacheService cache.Cache, lc
*fs_tool.LifeCycle, compileBuilder *executors.CompileBuilder, pipelineId
uuid.UUID, env *environment.Environment, sdk pb.Sdk) {
@@ -282,7 +299,7 @@ func processCode(ctx context.Context, cacheService
cache.Cache, lc *fs_tool.Life
logger.Infof("%s: Run() ...\n", pipelineId)
runCmd := exec.Run()
if data, err := runCmd.CombinedOutput(); err != nil {
- processError(ctx, err, data, pipelineId, cacheService,
pb.Status_STATUS_ERROR)
+ processError(ctx, err, data, pipelineId, cacheService,
pb.Status_STATUS_RUN_ERROR)
return
} else {
processSuccess(ctx, data, pipelineId, cacheService,
pb.Status_STATUS_FINISHED)
@@ -305,24 +322,19 @@ func processError(ctx context.Context, err error, data
[]byte, pipelineId uuid.U
case pb.Status_STATUS_VALIDATION_ERROR:
logger.Errorf("%s: Validate: %s\n", pipelineId, err.Error())
- // set to cache pipelineId: cache.SubKey_Status:
pb.Status_STATUS_VALIDATION_ERROR
setToCache(ctx, cacheService, pipelineId, cache.Status,
pb.Status_STATUS_VALIDATION_ERROR)
case pb.Status_STATUS_COMPILE_ERROR:
logger.Errorf("%s: Compile: err: %s, output: %s\n", pipelineId,
err.Error(), data)
- // set to cache pipelineId: cache.SubKey_CompileOutput:
err.Error()
setToCache(ctx, cacheService, pipelineId, cache.CompileOutput,
"error: "+err.Error()+", output: "+string(data))
- // set to cache pipelineId: cache.SubKey_Status:
pb.Status_STATUS_ERROR
setToCache(ctx, cacheService, pipelineId, cache.Status,
pb.Status_STATUS_COMPILE_ERROR)
- case pb.Status_STATUS_ERROR:
+ case pb.Status_STATUS_RUN_ERROR:
logger.Errorf("%s: Run: err: %s, output: %s\n", pipelineId,
err.Error(), data)
- // set to cache pipelineId: cache.SubKey_RunOutput: err.Error()
- setToCache(ctx, cacheService, pipelineId, cache.RunOutput,
"error: "+err.Error()+", output: "+string(data))
+ setToCache(ctx, cacheService, pipelineId, cache.RunError,
"error: "+err.Error()+", output: "+string(data))
- // set to cache pipelineId: cache.SubKey_Status:
pb.Status_STATUS_ERROR
- setToCache(ctx, cacheService, pipelineId, cache.Status,
pb.Status_STATUS_ERROR)
+ setToCache(ctx, cacheService, pipelineId, cache.Status,
pb.Status_STATUS_RUN_ERROR)
}
}
@@ -332,23 +344,18 @@ func processSuccess(ctx context.Context, output []byte,
pipelineId uuid.UUID, ca
case pb.Status_STATUS_COMPILING:
logger.Infof("%s: Validate() finish\n", pipelineId)
- // set to cache pipelineId: cache.SubKey_Status:
pb.Status_STATUS_EXECUTING
setToCache(ctx, cacheService, pipelineId, cache.Status,
pb.Status_STATUS_COMPILING)
case pb.Status_STATUS_EXECUTING:
logger.Infof("%s: Compile() finish\n", pipelineId)
- // set to cache pipelineId: cache.SubKey_CompileOutput: output
setToCache(ctx, cacheService, pipelineId, cache.CompileOutput,
string(output))
- // set to cache pipelineId: cache.SubKey_Status:
pb.Status_STATUS_EXECUTING
setToCache(ctx, cacheService, pipelineId, cache.Status,
pb.Status_STATUS_EXECUTING)
case pb.Status_STATUS_FINISHED:
logger.Infof("%s: Run() finish\n", pipelineId)
- // set to cache pipelineId: cache.SubKey_RunOutput: output
setToCache(ctx, cacheService, pipelineId, cache.RunOutput,
string(output))
- // set to cache pipelineId: cache.SubKey_Status:
pb.Status_STATUS_FINISHED
setToCache(ctx, cacheService, pipelineId, cache.Status,
pb.Status_STATUS_FINISHED)
}
}
diff --git a/playground/backend/cmd/server/controller_test.go
b/playground/backend/cmd/server/controller_test.go
index 251fab8..c597910 100644
--- a/playground/backend/cmd/server/controller_test.go
+++ b/playground/backend/cmd/server/controller_test.go
@@ -307,9 +307,6 @@ func TestPlaygroundController_GetCompileOutput(t
*testing.T) {
if !strings.EqualFold(got.Output,
tt.want.Output) {
t.Errorf("GetCompileOutput() got = %v,
want %v", got.Output, tt.want.Output)
}
- if !reflect.DeepEqual(got.CompilationStatus,
tt.want.CompilationStatus) {
- t.Errorf("GetCompileOutput() got = %v,
want %v", got.CompilationStatus, tt.want.CompilationStatus)
- }
}
})
}
@@ -372,8 +369,79 @@ func TestPlaygroundController_GetRunOutput(t *testing.T) {
if !strings.EqualFold(got.Output,
tt.want.Output) {
t.Errorf("GetRunOutput() got = %v, want
%v", got.Output, tt.want.Output)
}
- if !reflect.DeepEqual(got.CompilationStatus,
tt.want.CompilationStatus) {
- t.Errorf("GetRunOutput() got = %v, want
%v", got.CompilationStatus, tt.want.CompilationStatus)
+ }
+ })
+ }
+}
+
+func TestPlaygroundController_GetRunError(t *testing.T) {
+ ctx := context.Background()
+ pipelineId := uuid.New()
+ runError := "MOCK_RUN_ERROR"
+ conn, err := grpc.DialContext(ctx, "bufnet",
grpc.WithContextDialer(bufDialer), grpc.WithInsecure())
+ if err != nil {
+ t.Fatalf("Failed to dial bufnet: %v", err)
+ }
+ defer conn.Close()
+ client := pb.NewPlaygroundServiceClient(conn)
+
+ type args struct {
+ ctx context.Context
+ info *pb.GetRunErrorRequest
+ }
+ tests := []struct {
+ name string
+ prepare func()
+ args args
+ want *pb.GetRunErrorResponse
+ wantErr bool
+ }{
+ {
+ name: "pipelineId doesn't exist",
+ prepare: func() {},
+ args: args{
+ ctx: ctx,
+ info: &pb.GetRunErrorRequest{PipelineUuid:
pipelineId.String()},
+ },
+ want: nil,
+ wantErr: true,
+ },
+ {
+ name: "run error output doesn't exist",
+ prepare: func() {
+ _ = cacheService.SetValue(ctx, pipelineId,
cache.Status, pb.Status_STATUS_VALIDATING)
+ },
+ args: args{
+ ctx: ctx,
+ info: &pb.GetRunErrorRequest{PipelineUuid:
pipelineId.String()},
+ },
+ want: nil,
+ wantErr: true,
+ },
+ {
+ name: "run error output exist",
+ prepare: func() {
+ _ = cacheService.SetValue(ctx, pipelineId,
cache.RunError, runError)
+ },
+ args: args{
+ ctx: ctx,
+ info: &pb.GetRunErrorRequest{PipelineUuid:
pipelineId.String()},
+ },
+ want: &pb.GetRunErrorResponse{Output: runError},
+ wantErr: false,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ tt.prepare()
+ got, err := client.GetRunError(tt.args.ctx,
tt.args.info)
+ if (err != nil) != tt.wantErr {
+ t.Errorf("GetRunError() error = %v, wantErr
%v", err, tt.wantErr)
+ return
+ }
+ if !tt.wantErr {
+ if !strings.EqualFold(got.Output,
tt.want.Output) {
+ t.Errorf("GetRunError() got = %v, want
%v", got.Output, tt.want.Output)
}
}
})
@@ -381,7 +449,6 @@ func TestPlaygroundController_GetRunOutput(t *testing.T) {
}
func Test_processCode(t *testing.T) {
- pipelineId := uuid.New()
networkEnvs, err := environment.GetNetworkEnvsFromOsEnvs()
if err != nil {
panic(err)
@@ -394,25 +461,14 @@ func Test_processCode(t *testing.T) {
if err != nil {
panic(err)
}
- env := environment.NewEnvironment(*networkEnvs, *sdkEnv, *appEnvs)
- lc, _ := fs_tool.NewLifeCycle(pb.Sdk_SDK_JAVA, pipelineId,
os.Getenv("APP_WORK_DIR"))
- filePath := lc.GetAbsoluteExecutableFilePath()
- workingDir := lc.GetAbsoluteExecutableFilesFolderPath()
-
- exec := executors.NewExecutorBuilder().
- WithValidator().
- WithSdkValidators(validators.GetJavaValidators(filePath)).
- WithCompiler().
- WithCommand(sdkEnv.ExecutorConfig.CompileCmd).
- WithArgs(sdkEnv.ExecutorConfig.CompileArgs).
- WithFileName(filePath).
- WithWorkingDir(workingDir)
+ env := environment.NewEnvironment(*networkEnvs, *sdkEnv, *appEnvs)
type args struct {
- ctx context.Context
- env *environment.Environment
- sdk pb.Sdk
+ pipelineId uuid.UUID
+ ctx context.Context
+ env *environment.Environment
+ sdk pb.Sdk
}
tests := []struct {
name string
@@ -420,6 +476,7 @@ func Test_processCode(t *testing.T) {
code string
expectedStatus pb.Status
expectedRunOutput interface{}
+ expectedRunError interface{}
expectedCompileOutput interface{}
args args
}{
@@ -432,10 +489,12 @@ func Test_processCode(t *testing.T) {
expectedStatus:
pb.Status_STATUS_VALIDATION_ERROR,
expectedCompileOutput: nil,
expectedRunOutput: nil,
+ expectedRunError: nil,
args: args{
- ctx: context.Background(),
- env: env,
- sdk: pb.Sdk_SDK_JAVA,
+ ctx: context.Background(),
+ env: env,
+ sdk: pb.Sdk_SDK_JAVA,
+ pipelineId: uuid.New(),
},
},
{
@@ -445,27 +504,31 @@ func Test_processCode(t *testing.T) {
createExecFile: true,
code: "MOCK_CODE",
expectedStatus: pb.Status_STATUS_COMPILE_ERROR,
- expectedCompileOutput: fmt.Sprintf("error: exit status
1, output: %s:1: error: reached end of file while parsing\nMOCK_CODE\n^\n1
error\n", lc.GetAbsoluteExecutableFilePath()),
+ expectedCompileOutput: "error: exit status 1, output:
%s:1: error: reached end of file while parsing\nMOCK_CODE\n^\n1 error\n",
expectedRunOutput: nil,
+ expectedRunError: nil,
args: args{
- ctx: context.Background(),
- env: env,
- sdk: pb.Sdk_SDK_JAVA,
+ ctx: context.Background(),
+ env: env,
+ sdk: pb.Sdk_SDK_JAVA,
+ pipelineId: uuid.New(),
},
},
{
// Test case with calling processCode method with
incorrect logic into code.
- // As a result status into cache should be set as
Status_STATUS_ERROR.
+ // As a result status into cache should be set as
Status_STATUS_RUN_ERROR.
name: "run failed",
createExecFile: true,
code: "class HelloWorld {\n public
static void main(String[] args) {\n System.out.println(1/0);\n }\n}",
- expectedStatus: pb.Status_STATUS_ERROR,
+ expectedStatus: pb.Status_STATUS_RUN_ERROR,
expectedCompileOutput: "",
- expectedRunOutput: fmt.Sprintf("error: exit status
1, output: Exception in thread \"main\" java.lang.ArithmeticException: / by
zero\n\tat HelloWorld.main(%s.java:3)\n", pipelineId),
+ expectedRunOutput: nil,
+ expectedRunError: "error: exit status 1, output:
Exception in thread \"main\" java.lang.ArithmeticException: / by zero\n\tat
HelloWorld.main(%s.java:3)\n",
args: args{
- ctx: context.Background(),
- env: env,
- sdk: pb.Sdk_SDK_JAVA,
+ ctx: context.Background(),
+ env: env,
+ sdk: pb.Sdk_SDK_JAVA,
+ pipelineId: uuid.New(),
},
},
{
@@ -477,15 +540,30 @@ func Test_processCode(t *testing.T) {
expectedStatus: pb.Status_STATUS_FINISHED,
expectedCompileOutput: "",
expectedRunOutput: "Hello world!\n",
+ expectedRunError: nil,
args: args{
- ctx: context.Background(),
- env: env,
- sdk: pb.Sdk_SDK_JAVA,
+ ctx: context.Background(),
+ env: env,
+ sdk: pb.Sdk_SDK_JAVA,
+ pipelineId: uuid.New(),
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
+ lc, _ := fs_tool.NewLifeCycle(pb.Sdk_SDK_JAVA,
tt.args.pipelineId, os.Getenv("APP_WORK_DIR"))
+ filePath := lc.GetAbsoluteExecutableFilePath()
+ workingDir := lc.GetAbsoluteExecutableFilesFolderPath()
+
+ exec := executors.NewExecutorBuilder().
+ WithValidator().
+
WithSdkValidators(validators.GetJavaValidators(filePath)).
+ WithCompiler().
+ WithCommand(sdkEnv.ExecutorConfig.CompileCmd).
+ WithArgs(sdkEnv.ExecutorConfig.CompileArgs).
+ WithFileName(filePath).
+ WithWorkingDir(workingDir)
+
err := lc.CreateFolders()
if err != nil {
t.Fatalf("error during prepare folders: %s",
err.Error())
@@ -494,23 +572,34 @@ func Test_processCode(t *testing.T) {
_, _ = lc.CreateExecutableFile(tt.code)
}
- processCode(tt.args.ctx, cacheService, lc, exec,
pipelineId, tt.args.env, tt.args.sdk)
+ processCode(tt.args.ctx, cacheService, lc, exec,
tt.args.pipelineId, tt.args.env, tt.args.sdk)
- status, _ := cacheService.GetValue(tt.args.ctx,
pipelineId, cache.Status)
+ status, _ := cacheService.GetValue(tt.args.ctx,
tt.args.pipelineId, cache.Status)
if !reflect.DeepEqual(status, tt.expectedStatus) {
t.Errorf("processCode() set status: %s, but
expectes: %s", status, tt.expectedStatus)
}
- compileOutput, _ := cacheService.GetValue(tt.args.ctx,
pipelineId, cache.CompileOutput)
+ compileOutput, _ := cacheService.GetValue(tt.args.ctx,
tt.args.pipelineId, cache.CompileOutput)
+ if tt.expectedCompileOutput != nil &&
strings.Contains(tt.expectedCompileOutput.(string), "%s") {
+ tt.expectedCompileOutput =
fmt.Sprintf(tt.expectedCompileOutput.(string),
lc.GetAbsoluteExecutableFilePath())
+ }
if !reflect.DeepEqual(compileOutput,
tt.expectedCompileOutput) {
t.Errorf("processCode() set compileOutput: %s,
but expectes: %s", compileOutput, tt.expectedCompileOutput)
}
- runOutput, _ := cacheService.GetValue(tt.args.ctx,
pipelineId, cache.RunOutput)
+ runOutput, _ := cacheService.GetValue(tt.args.ctx,
tt.args.pipelineId, cache.RunOutput)
if !reflect.DeepEqual(runOutput, tt.expectedRunOutput) {
t.Errorf("processCode() set runOutput: %s, but
expectes: %s", runOutput, tt.expectedRunOutput)
}
+ runError, _ := cacheService.GetValue(tt.args.ctx,
tt.args.pipelineId, cache.RunError)
+ if tt.expectedRunError != nil &&
strings.Contains(tt.expectedRunError.(string), "%s") {
+ tt.expectedRunError =
fmt.Sprintf(tt.expectedRunError.(string), tt.args.pipelineId)
+ }
+ if !reflect.DeepEqual(runError, tt.expectedRunError) {
+ t.Errorf("processCode() set runError: %s, but
expectes: %s", runError, tt.expectedRunError)
+ }
+
// remove
path := os.Getenv("APP_WORK_DIR") + "/executable_files"
os.RemoveAll(path)
diff --git a/playground/backend/internal/api/v1/api.pb.go
b/playground/backend/internal/api/v1/api.pb.go
index 7e787d0..ef5b62d 100644
--- a/playground/backend/internal/api/v1/api.pb.go
+++ b/playground/backend/internal/api/v1/api.pb.go
@@ -18,7 +18,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
-// protoc v3.18.1
+// protoc v3.17.3
// source: api/v1/api.proto
package playground
@@ -102,8 +102,9 @@ const (
Status_STATUS_COMPILE_ERROR Status = 4
Status_STATUS_EXECUTING Status = 5
Status_STATUS_FINISHED Status = 6
- Status_STATUS_ERROR Status = 7
- Status_STATUS_RUN_TIMEOUT Status = 8
+ Status_STATUS_RUN_ERROR Status = 7
+ Status_STATUS_ERROR Status = 8
+ Status_STATUS_RUN_TIMEOUT Status = 9
)
// Enum value maps for Status.
@@ -116,8 +117,9 @@ var (
4: "STATUS_COMPILE_ERROR",
5: "STATUS_EXECUTING",
6: "STATUS_FINISHED",
- 7: "STATUS_ERROR",
- 8: "STATUS_RUN_TIMEOUT",
+ 7: "STATUS_RUN_ERROR",
+ 8: "STATUS_ERROR",
+ 9: "STATUS_RUN_TIMEOUT",
}
Status_value = map[string]int32{
"STATUS_UNSPECIFIED": 0,
@@ -127,8 +129,9 @@ var (
"STATUS_COMPILE_ERROR": 4,
"STATUS_EXECUTING": 5,
"STATUS_FINISHED": 6,
- "STATUS_ERROR": 7,
- "STATUS_RUN_TIMEOUT": 8,
+ "STATUS_RUN_ERROR": 7,
+ "STATUS_ERROR": 8,
+ "STATUS_RUN_TIMEOUT": 9,
}
)
@@ -566,8 +569,7 @@ type GetRunOutputResponse struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Output string `protobuf:"bytes,1,opt,name=output,proto3"
json:"output,omitempty"`
- CompilationStatus Status
`protobuf:"varint,2,opt,name=compilation_status,json=compilationStatus,proto3,enum=api.v1.Status"
json:"compilation_status,omitempty"`
+ Output string `protobuf:"bytes,1,opt,name=output,proto3"
json:"output,omitempty"`
}
func (x *GetRunOutputResponse) Reset() {
@@ -609,11 +611,100 @@ func (x *GetRunOutputResponse) GetOutput() string {
return ""
}
-func (x *GetRunOutputResponse) GetCompilationStatus() Status {
+// GetRunErrorRequest contains information of the pipeline uuid.
+type GetRunErrorRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PipelineUuid string
`protobuf:"bytes,1,opt,name=pipeline_uuid,json=pipelineUuid,proto3"
json:"pipeline_uuid,omitempty"`
+}
+
+func (x *GetRunErrorRequest) Reset() {
+ *x = GetRunErrorRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_api_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetRunErrorRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRunErrorRequest) ProtoMessage() {}
+
+func (x *GetRunErrorRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_api_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetRunErrorRequest.ProtoReflect.Descriptor instead.
+func (*GetRunErrorRequest) Descriptor() ([]byte, []int) {
+ return file_api_v1_api_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *GetRunErrorRequest) GetPipelineUuid() string {
if x != nil {
- return x.CompilationStatus
+ return x.PipelineUuid
}
- return Status_STATUS_UNSPECIFIED
+ return ""
+}
+
+// GetRunErrorResponse represents the error of the executed code.
+type GetRunErrorResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Output string `protobuf:"bytes,1,opt,name=output,proto3"
json:"output,omitempty"`
+}
+
+func (x *GetRunErrorResponse) Reset() {
+ *x = GetRunErrorResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_api_v1_api_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetRunErrorResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRunErrorResponse) ProtoMessage() {}
+
+func (x *GetRunErrorResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_api_v1_api_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetRunErrorResponse.ProtoReflect.Descriptor instead.
+func (*GetRunErrorResponse) Descriptor() ([]byte, []int) {
+ return file_api_v1_api_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *GetRunErrorResponse) GetOutput() string {
+ if x != nil {
+ return x.Output
+ }
+ return ""
}
// ListOfExamplesRequest contains information of the needed examples sdk and
categories.
@@ -629,7 +720,7 @@ type GetListOfExamplesRequest struct {
func (x *GetListOfExamplesRequest) Reset() {
*x = GetListOfExamplesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_api_proto_msgTypes[8]
+ mi := &file_api_v1_api_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -642,7 +733,7 @@ func (x *GetListOfExamplesRequest) String() string {
func (*GetListOfExamplesRequest) ProtoMessage() {}
func (x *GetListOfExamplesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_api_proto_msgTypes[8]
+ mi := &file_api_v1_api_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -655,7 +746,7 @@ func (x *GetListOfExamplesRequest) ProtoReflect()
protoreflect.Message {
// Deprecated: Use GetListOfExamplesRequest.ProtoReflect.Descriptor instead.
func (*GetListOfExamplesRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_api_proto_rawDescGZIP(), []int{8}
+ return file_api_v1_api_proto_rawDescGZIP(), []int{10}
}
func (x *GetListOfExamplesRequest) GetSdk() Sdk {
@@ -687,7 +778,7 @@ type Example struct {
func (x *Example) Reset() {
*x = Example{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_api_proto_msgTypes[9]
+ mi := &file_api_v1_api_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -700,7 +791,7 @@ func (x *Example) String() string {
func (*Example) ProtoMessage() {}
func (x *Example) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_api_proto_msgTypes[9]
+ mi := &file_api_v1_api_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -713,7 +804,7 @@ func (x *Example) ProtoReflect() protoreflect.Message {
// Deprecated: Use Example.ProtoReflect.Descriptor instead.
func (*Example) Descriptor() ([]byte, []int) {
- return file_api_v1_api_proto_rawDescGZIP(), []int{9}
+ return file_api_v1_api_proto_rawDescGZIP(), []int{11}
}
func (x *Example) GetExampleUuid() string {
@@ -757,7 +848,7 @@ type Categories struct {
func (x *Categories) Reset() {
*x = Categories{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_api_proto_msgTypes[10]
+ mi := &file_api_v1_api_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -770,7 +861,7 @@ func (x *Categories) String() string {
func (*Categories) ProtoMessage() {}
func (x *Categories) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_api_proto_msgTypes[10]
+ mi := &file_api_v1_api_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -783,7 +874,7 @@ func (x *Categories) ProtoReflect() protoreflect.Message {
// Deprecated: Use Categories.ProtoReflect.Descriptor instead.
func (*Categories) Descriptor() ([]byte, []int) {
- return file_api_v1_api_proto_rawDescGZIP(), []int{10}
+ return file_api_v1_api_proto_rawDescGZIP(), []int{12}
}
func (x *Categories) GetSdk() Sdk {
@@ -812,7 +903,7 @@ type GetListOfExamplesResponse struct {
func (x *GetListOfExamplesResponse) Reset() {
*x = GetListOfExamplesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_api_proto_msgTypes[11]
+ mi := &file_api_v1_api_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -825,7 +916,7 @@ func (x *GetListOfExamplesResponse) String() string {
func (*GetListOfExamplesResponse) ProtoMessage() {}
func (x *GetListOfExamplesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_api_proto_msgTypes[11]
+ mi := &file_api_v1_api_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -838,7 +929,7 @@ func (x *GetListOfExamplesResponse) ProtoReflect()
protoreflect.Message {
// Deprecated: Use GetListOfExamplesResponse.ProtoReflect.Descriptor instead.
func (*GetListOfExamplesResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_api_proto_rawDescGZIP(), []int{11}
+ return file_api_v1_api_proto_rawDescGZIP(), []int{13}
}
func (x *GetListOfExamplesResponse) GetSdkExamples() []*Categories {
@@ -860,7 +951,7 @@ type GetExampleRequest struct {
func (x *GetExampleRequest) Reset() {
*x = GetExampleRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_api_proto_msgTypes[12]
+ mi := &file_api_v1_api_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -873,7 +964,7 @@ func (x *GetExampleRequest) String() string {
func (*GetExampleRequest) ProtoMessage() {}
func (x *GetExampleRequest) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_api_proto_msgTypes[12]
+ mi := &file_api_v1_api_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -886,7 +977,7 @@ func (x *GetExampleRequest) ProtoReflect()
protoreflect.Message {
// Deprecated: Use GetExampleRequest.ProtoReflect.Descriptor instead.
func (*GetExampleRequest) Descriptor() ([]byte, []int) {
- return file_api_v1_api_proto_rawDescGZIP(), []int{12}
+ return file_api_v1_api_proto_rawDescGZIP(), []int{14}
}
func (x *GetExampleRequest) GetExampleUuid() string {
@@ -908,7 +999,7 @@ type GetExampleResponse struct {
func (x *GetExampleResponse) Reset() {
*x = GetExampleResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_api_proto_msgTypes[13]
+ mi := &file_api_v1_api_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -921,7 +1012,7 @@ func (x *GetExampleResponse) String() string {
func (*GetExampleResponse) ProtoMessage() {}
func (x *GetExampleResponse) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_api_proto_msgTypes[13]
+ mi := &file_api_v1_api_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -934,7 +1025,7 @@ func (x *GetExampleResponse) ProtoReflect()
protoreflect.Message {
// Deprecated: Use GetExampleResponse.ProtoReflect.Descriptor instead.
func (*GetExampleResponse) Descriptor() ([]byte, []int) {
- return file_api_v1_api_proto_rawDescGZIP(), []int{13}
+ return file_api_v1_api_proto_rawDescGZIP(), []int{15}
}
func (x *GetExampleResponse) GetCode() string {
@@ -956,7 +1047,7 @@ type Categories_Category struct {
func (x *Categories_Category) Reset() {
*x = Categories_Category{}
if protoimpl.UnsafeEnabled {
- mi := &file_api_v1_api_proto_msgTypes[14]
+ mi := &file_api_v1_api_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -969,7 +1060,7 @@ func (x *Categories_Category) String() string {
func (*Categories_Category) ProtoMessage() {}
func (x *Categories_Category) ProtoReflect() protoreflect.Message {
- mi := &file_api_v1_api_proto_msgTypes[14]
+ mi := &file_api_v1_api_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -982,7 +1073,7 @@ func (x *Categories_Category) ProtoReflect()
protoreflect.Message {
// Deprecated: Use Categories_Category.ProtoReflect.Descriptor instead.
func (*Categories_Category) Descriptor() ([]byte, []int) {
- return file_api_v1_api_proto_rawDescGZIP(), []int{10, 0}
+ return file_api_v1_api_proto_rawDescGZIP(), []int{12, 0}
}
func (x *Categories_Category) GetCategoryName() string {
@@ -1034,115 +1125,124 @@ var file_api_v1_api_proto_rawDesc = []byte{
0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x23, 0x0a, 0x0d, 0x70,
0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0c, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65,
0x55, 0x75, 0x69, 0x64,
- 0x22, 0x6d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75,
0x74, 0x70, 0x75, 0x74,
+ 0x22, 0x2e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75,
0x74, 0x70, 0x75, 0x74,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06,
0x6f, 0x75, 0x74, 0x70,
0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75,
0x74, 0x70, 0x75, 0x74,
- 0x12, 0x3d, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x5f,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x0e, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x52, 0x11, 0x63, 0x6f,
- 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x22,
- 0x55, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x66,
0x45, 0x78, 0x61, 0x6d,
- 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x1d, 0x0a, 0x03, 0x73,
- 0x64, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x03, 0x73, 0x64, 0x6b, 0x12, 0x1a,
0x0a, 0x08, 0x63, 0x61,
- 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x63, 0x61,
- 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x8b, 0x01, 0x0a, 0x07, 0x45,
0x78, 0x61, 0x6d, 0x70,
- 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c,
0x65, 0x5f, 0x75, 0x75,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78,
0x61, 0x6d, 0x70, 0x6c,
- 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
0x0b, 0x64, 0x65, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0b,
- 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x27, 0x0a, 0x04, 0x74,
- 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e,
0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x79,
0x70, 0x65, 0x52, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x74,
0x65, 0x67, 0x6f, 0x72,
- 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x03, 0x73, 0x64, 0x6b, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x64,
0x6b, 0x52, 0x03, 0x73,
- 0x64, 0x6b, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f,
0x72, 0x69, 0x65, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x43,
0x61, 0x74, 0x65, 0x67,
- 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x69, 0x65, 0x73, 0x1a,
- 0x5c, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12,
0x23, 0x0a, 0x0d, 0x63,
- 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x2b, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73,
0x18, 0x02, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x45, 0x78, 0x61, 0x6d,
- 0x70, 0x6c, 0x65, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x73, 0x22, 0x52, 0x0a,
- 0x19, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x66, 0x45, 0x78,
0x61, 0x6d, 0x70, 0x6c,
- 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35,
0x0a, 0x0c, 0x73, 0x64,
- 0x6b, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61,
0x74, 0x65, 0x67, 0x6f,
- 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, 0x73, 0x64, 0x6b, 0x45, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65,
- 0x73, 0x22, 0x36, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78,
0x61, 0x6d, 0x70, 0x6c,
- 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0b, 0x65, 0x78,
- 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x22, 0x28, 0x0a,
0x12, 0x47, 0x65, 0x74,
- 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12,
- 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x63,
- 0x6f, 0x64, 0x65, 0x2a, 0x52, 0x0a, 0x03, 0x53, 0x64, 0x6b, 0x12, 0x13,
0x0a, 0x0f, 0x53, 0x44,
- 0x4b, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
0x44, 0x10, 0x00, 0x12,
- 0x0c, 0x0a, 0x08, 0x53, 0x44, 0x4b, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x10,
0x01, 0x12, 0x0a, 0x0a,
- 0x06, 0x53, 0x44, 0x4b, 0x5f, 0x47, 0x4f, 0x10, 0x02, 0x12, 0x0e, 0x0a,
0x0a, 0x53, 0x44, 0x4b,
- 0x5f, 0x50, 0x59, 0x54, 0x48, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0c, 0x0a,
0x08, 0x53, 0x44, 0x4b,
- 0x5f, 0x53, 0x43, 0x49, 0x4f, 0x10, 0x04, 0x2a, 0xd9, 0x01, 0x0a, 0x06,
0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
0x5f, 0x55, 0x4e, 0x53,
- 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15,
0x0a, 0x11, 0x53, 0x54,
- 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54,
0x49, 0x4e, 0x47, 0x10,
- 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
0x56, 0x41, 0x4c, 0x49,
- 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
0x10, 0x02, 0x12, 0x14,
- 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d,
0x50, 0x49, 0x4c, 0x49,
- 0x4e, 0x47, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54,
0x55, 0x53, 0x5f, 0x43,
- 0x4f, 0x4d, 0x50, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
0x10, 0x04, 0x12, 0x14,
- 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x58, 0x45,
0x43, 0x55, 0x54, 0x49,
- 0x4e, 0x47, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54,
0x55, 0x53, 0x5f, 0x46,
- 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0x06, 0x12, 0x10, 0x0a,
0x0c, 0x53, 0x54, 0x41,
- 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x07, 0x12,
0x16, 0x0a, 0x12, 0x53,
- 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x54, 0x49,
0x4d, 0x45, 0x4f, 0x55,
- 0x54, 0x10, 0x08, 0x2a, 0x5a, 0x0a, 0x0b, 0x45, 0x78, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x54, 0x79,
- 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x58, 0x41, 0x4d, 0x50, 0x4c,
0x45, 0x5f, 0x54, 0x59,
- 0x50, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00,
0x12, 0x15, 0x0a, 0x11,
- 0x45, 0x58, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
0x5f, 0x4b, 0x41, 0x54,
- 0x41, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x58, 0x41, 0x4d, 0x50,
0x4c, 0x45, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x54, 0x45, 0x53,
0x54, 0x10, 0x02, 0x32,
- 0xa5, 0x04, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75,
0x6e, 0x64, 0x53, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, 0x75, 0x6e,
0x43, 0x6f, 0x64, 0x65,
- 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75,
0x6e, 0x43, 0x6f, 0x64,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73,
- 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68,
0x65, 0x63, 0x6b, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1b, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53,
0x74, 0x61, 0x74, 0x75,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a,
0x0c, 0x47, 0x65, 0x74,
- 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1b, 0x2e,
0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74,
0x70, 0x75, 0x74, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43,
0x6f, 0x6d, 0x70, 0x69,
- 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1f, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
0x4f, 0x75, 0x74, 0x70,
- 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e,
0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c,
0x65, 0x4f, 0x75, 0x74,
- 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x58, 0x0a, 0x11, 0x47,
- 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x66, 0x45, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x73,
- 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
0x74, 0x4c, 0x69, 0x73,
- 0x74, 0x4f, 0x66, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x47, 0x65, 0x74, 0x4c,
+ 0x22, 0x39, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x45, 0x72,
0x72, 0x6f, 0x72, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x69,
0x70, 0x65, 0x6c, 0x69,
+ 0x6e, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0c, 0x70,
+ 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x75, 0x69, 0x64, 0x22,
0x2d, 0x0a, 0x13, 0x47,
+ 0x65, 0x74, 0x52, 0x75, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x55,
0x0a, 0x18, 0x47, 0x65,
+ 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x66, 0x45, 0x78, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x03, 0x73, 0x64,
0x6b, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x53, 0x64, 0x6b,
+ 0x52, 0x03, 0x73, 0x64, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74,
0x65, 0x67, 0x6f, 0x72,
+ 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74,
0x65, 0x67, 0x6f, 0x72,
+ 0x79, 0x22, 0x8b, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c,
0x65, 0x12, 0x21, 0x0a,
+ 0x0c, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x75, 0x75, 0x69,
0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x55, 0x75, 0x69, 0x64,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x79,
0x70, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x45, 0x78,
+ 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
0x79, 0x70, 0x65, 0x22,
+ 0xc6, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69,
0x65, 0x73, 0x12, 0x1d,
+ 0x0a, 0x03, 0x73, 0x64, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x0b, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x03, 0x73, 0x64,
0x6b, 0x12, 0x3b, 0x0a,
+ 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43,
0x61, 0x74, 0x65, 0x67,
+ 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
0x72, 0x79, 0x52, 0x0a,
+ 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x5c,
0x0a, 0x08, 0x43, 0x61,
+ 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61,
0x74, 0x65, 0x67, 0x6f,
+ 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0c, 0x63,
+ 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12,
0x2b, 0x0a, 0x08, 0x65,
+ 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0f, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x52, 0x08,
+ 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x52, 0x0a, 0x19,
0x47, 0x65, 0x74, 0x4c,
0x69, 0x73, 0x74, 0x4f, 0x66, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x47, 0x65, 0x74,
0x45, 0x78, 0x61, 0x6d,
- 0x70, 0x6c, 0x65, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x47, 0x65, 0x74,
- 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1a,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45,
0x78, 0x61, 0x6d, 0x70,
- 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b,
0x0a, 0x10, 0x47, 0x65,
- 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70,
0x75, 0x74, 0x12, 0x19,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45,
0x78, 0x61, 0x6d, 0x70,
- 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e,
0x61, 0x70, 0x69, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74,
0x70, 0x75, 0x74, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x38, 0x5a, 0x36, 0x62,
0x65, 0x61, 0x6d, 0x2e,
- 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
0x6c, 0x61, 0x79, 0x67,
- 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e,
0x64, 0x2f, 0x69, 0x6e,
- 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x3b, 0x70, 0x6c, 0x61, 0x79, 0x67,
0x72, 0x6f, 0x75, 0x6e,
- 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, 0x64, 0x6b,
0x5f, 0x65, 0x78, 0x61,
+ 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x12, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
0x69, 0x65, 0x73, 0x52,
+ 0x0b, 0x73, 0x64, 0x6b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73,
0x22, 0x36, 0x0a, 0x11,
+ 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x5f, 0x75, 0x75, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65,
+ 0x55, 0x75, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x45,
0x78, 0x61, 0x6d, 0x70,
+ 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12,
0x0a, 0x04, 0x63, 0x6f,
+ 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x2a, 0x52,
+ 0x0a, 0x03, 0x53, 0x64, 0x6b, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x44, 0x4b,
0x5f, 0x55, 0x4e, 0x53,
+ 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c,
0x0a, 0x08, 0x53, 0x44,
+ 0x4b, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06,
0x53, 0x44, 0x4b, 0x5f,
+ 0x47, 0x4f, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x44, 0x4b, 0x5f,
0x50, 0x59, 0x54, 0x48,
+ 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x44, 0x4b, 0x5f,
0x53, 0x43, 0x49, 0x4f,
+ 0x10, 0x04, 0x2a, 0xef, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x12, 0x16, 0x0a,
+ 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50,
0x45, 0x43, 0x49, 0x46,
+ 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41,
0x54, 0x55, 0x53, 0x5f,
+ 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01,
0x12, 0x1b, 0x0a, 0x17,
+ 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44,
0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x14, 0x0a,
0x10, 0x53, 0x54, 0x41,
+ 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x49, 0x4c, 0x49, 0x4e,
0x47, 0x10, 0x03, 0x12,
+ 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f,
0x4d, 0x50, 0x49, 0x4c,
+ 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a,
0x10, 0x53, 0x54, 0x41,
+ 0x54, 0x55, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4e,
0x47, 0x10, 0x05, 0x12,
+ 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49,
0x4e, 0x49, 0x53, 0x48,
+ 0x45, 0x44, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54,
0x55, 0x53, 0x5f, 0x52,
+ 0x55, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x07, 0x12, 0x10,
0x0a, 0x0c, 0x53, 0x54,
+ 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x08,
0x12, 0x16, 0x0a, 0x12,
+ 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x54,
0x49, 0x4d, 0x45, 0x4f,
+ 0x55, 0x54, 0x10, 0x09, 0x2a, 0x5a, 0x0a, 0x0b, 0x45, 0x78, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x54,
+ 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x58, 0x41, 0x4d, 0x50,
0x4c, 0x45, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10,
0x00, 0x12, 0x15, 0x0a,
+ 0x11, 0x45, 0x58, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50,
0x45, 0x5f, 0x4b, 0x41,
+ 0x54, 0x41, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x58, 0x41, 0x4d,
0x50, 0x4c, 0x45, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x54, 0x45,
0x53, 0x54, 0x10, 0x02,
+ 0x32, 0xed, 0x04, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f,
0x75, 0x6e, 0x64, 0x53,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, 0x75,
0x6e, 0x43, 0x6f, 0x64,
+ 0x65, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
0x75, 0x6e, 0x43, 0x6f,
+ 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e,
0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53,
0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43,
0x68, 0x65, 0x63, 0x6b,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x1b, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b,
0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49,
0x0a, 0x0c, 0x47, 0x65,
+ 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1b,
0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75,
0x74, 0x70, 0x75, 0x74,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75,
0x74, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x47, 0x65, 0x74,
0x52, 0x75, 0x6e, 0x45,
+ 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x52, 0x75, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
0x74, 0x52, 0x75, 0x6e,
+ 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x55, 0x0a,
+ 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x4f,
0x75, 0x74, 0x70, 0x75,
+ 0x74, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
0x65, 0x74, 0x43, 0x6f,
+ 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52,
0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x47, 0x65, 0x74, 0x43,
+ 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4c,
0x69, 0x73, 0x74, 0x4f,
+ 0x66, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e,
0x61, 0x70, 0x69, 0x2e,
+ 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x66,
0x45, 0x78, 0x61, 0x6d,
+ 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x21, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74,
0x4f, 0x66, 0x45, 0x78,
+ 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x43,
+ 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x12, 0x19, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52,
0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x78,
0x61, 0x6d, 0x70, 0x6c,
+ 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x19, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31,
+ 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x47, 0x65, 0x74, 0x52,
+ 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65,
+ 0x42, 0x38, 0x5a, 0x36, 0x62, 0x65, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x61,
0x63, 0x68, 0x65, 0x2e,
+ 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75,
0x6e, 0x64, 0x2f, 0x62,
+ 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x3b,
+ 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
}
var (
@@ -1158,7 +1258,7 @@ func file_api_v1_api_proto_rawDescGZIP() []byte {
}
var file_api_v1_api_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_api_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
+var file_api_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
var file_api_v1_api_proto_goTypes = []interface{}{
(Sdk)(0), // 0: api.v1.Sdk
(Status)(0), // 1: api.v1.Status
@@ -1171,44 +1271,47 @@ var file_api_v1_api_proto_goTypes = []interface{}{
(*GetCompileOutputResponse)(nil), // 8: api.v1.GetCompileOutputResponse
(*GetRunOutputRequest)(nil), // 9: api.v1.GetRunOutputRequest
(*GetRunOutputResponse)(nil), // 10: api.v1.GetRunOutputResponse
- (*GetListOfExamplesRequest)(nil), // 11:
api.v1.GetListOfExamplesRequest
- (*Example)(nil), // 12: api.v1.Example
- (*Categories)(nil), // 13: api.v1.Categories
- (*GetListOfExamplesResponse)(nil), // 14:
api.v1.GetListOfExamplesResponse
- (*GetExampleRequest)(nil), // 15: api.v1.GetExampleRequest
- (*GetExampleResponse)(nil), // 16: api.v1.GetExampleResponse
- (*Categories_Category)(nil), // 17: api.v1.Categories.Category
+ (*GetRunErrorRequest)(nil), // 11: api.v1.GetRunErrorRequest
+ (*GetRunErrorResponse)(nil), // 12: api.v1.GetRunErrorResponse
+ (*GetListOfExamplesRequest)(nil), // 13:
api.v1.GetListOfExamplesRequest
+ (*Example)(nil), // 14: api.v1.Example
+ (*Categories)(nil), // 15: api.v1.Categories
+ (*GetListOfExamplesResponse)(nil), // 16:
api.v1.GetListOfExamplesResponse
+ (*GetExampleRequest)(nil), // 17: api.v1.GetExampleRequest
+ (*GetExampleResponse)(nil), // 18: api.v1.GetExampleResponse
+ (*Categories_Category)(nil), // 19: api.v1.Categories.Category
}
var file_api_v1_api_proto_depIdxs = []int32{
0, // 0: api.v1.RunCodeRequest.sdk:type_name -> api.v1.Sdk
1, // 1: api.v1.CheckStatusResponse.status:type_name -> api.v1.Status
1, // 2: api.v1.GetCompileOutputResponse.compilation_status:type_name
-> api.v1.Status
- 1, // 3: api.v1.GetRunOutputResponse.compilation_status:type_name ->
api.v1.Status
- 0, // 4: api.v1.GetListOfExamplesRequest.sdk:type_name -> api.v1.Sdk
- 2, // 5: api.v1.Example.type:type_name -> api.v1.ExampleType
- 0, // 6: api.v1.Categories.sdk:type_name -> api.v1.Sdk
- 17, // 7: api.v1.Categories.categories:type_name ->
api.v1.Categories.Category
- 13, // 8: api.v1.GetListOfExamplesResponse.sdk_examples:type_name ->
api.v1.Categories
- 12, // 9: api.v1.Categories.Category.examples:type_name ->
api.v1.Example
- 3, // 10: api.v1.PlaygroundService.RunCode:input_type ->
api.v1.RunCodeRequest
- 5, // 11: api.v1.PlaygroundService.CheckStatus:input_type ->
api.v1.CheckStatusRequest
- 9, // 12: api.v1.PlaygroundService.GetRunOutput:input_type ->
api.v1.GetRunOutputRequest
+ 0, // 3: api.v1.GetListOfExamplesRequest.sdk:type_name -> api.v1.Sdk
+ 2, // 4: api.v1.Example.type:type_name -> api.v1.ExampleType
+ 0, // 5: api.v1.Categories.sdk:type_name -> api.v1.Sdk
+ 19, // 6: api.v1.Categories.categories:type_name ->
api.v1.Categories.Category
+ 15, // 7: api.v1.GetListOfExamplesResponse.sdk_examples:type_name ->
api.v1.Categories
+ 14, // 8: api.v1.Categories.Category.examples:type_name ->
api.v1.Example
+ 3, // 9: api.v1.PlaygroundService.RunCode:input_type ->
api.v1.RunCodeRequest
+ 5, // 10: api.v1.PlaygroundService.CheckStatus:input_type ->
api.v1.CheckStatusRequest
+ 9, // 11: api.v1.PlaygroundService.GetRunOutput:input_type ->
api.v1.GetRunOutputRequest
+ 11, // 12: api.v1.PlaygroundService.GetRunError:input_type ->
api.v1.GetRunErrorRequest
7, // 13: api.v1.PlaygroundService.GetCompileOutput:input_type ->
api.v1.GetCompileOutputRequest
- 11, // 14: api.v1.PlaygroundService.GetListOfExamples:input_type ->
api.v1.GetListOfExamplesRequest
- 15, // 15: api.v1.PlaygroundService.GetExample:input_type ->
api.v1.GetExampleRequest
- 15, // 16: api.v1.PlaygroundService.GetExampleOutput:input_type ->
api.v1.GetExampleRequest
+ 13, // 14: api.v1.PlaygroundService.GetListOfExamples:input_type ->
api.v1.GetListOfExamplesRequest
+ 17, // 15: api.v1.PlaygroundService.GetExample:input_type ->
api.v1.GetExampleRequest
+ 17, // 16: api.v1.PlaygroundService.GetExampleOutput:input_type ->
api.v1.GetExampleRequest
4, // 17: api.v1.PlaygroundService.RunCode:output_type ->
api.v1.RunCodeResponse
6, // 18: api.v1.PlaygroundService.CheckStatus:output_type ->
api.v1.CheckStatusResponse
10, // 19: api.v1.PlaygroundService.GetRunOutput:output_type ->
api.v1.GetRunOutputResponse
- 8, // 20: api.v1.PlaygroundService.GetCompileOutput:output_type ->
api.v1.GetCompileOutputResponse
- 14, // 21: api.v1.PlaygroundService.GetListOfExamples:output_type ->
api.v1.GetListOfExamplesResponse
- 16, // 22: api.v1.PlaygroundService.GetExample:output_type ->
api.v1.GetExampleResponse
- 10, // 23: api.v1.PlaygroundService.GetExampleOutput:output_type ->
api.v1.GetRunOutputResponse
- 17, // [17:24] is the sub-list for method output_type
- 10, // [10:17] is the sub-list for method input_type
- 10, // [10:10] is the sub-list for extension type_name
- 10, // [10:10] is the sub-list for extension extendee
- 0, // [0:10] is the sub-list for field type_name
+ 12, // 20: api.v1.PlaygroundService.GetRunError:output_type ->
api.v1.GetRunErrorResponse
+ 8, // 21: api.v1.PlaygroundService.GetCompileOutput:output_type ->
api.v1.GetCompileOutputResponse
+ 16, // 22: api.v1.PlaygroundService.GetListOfExamples:output_type ->
api.v1.GetListOfExamplesResponse
+ 18, // 23: api.v1.PlaygroundService.GetExample:output_type ->
api.v1.GetExampleResponse
+ 10, // 24: api.v1.PlaygroundService.GetExampleOutput:output_type ->
api.v1.GetRunOutputResponse
+ 17, // [17:25] is the sub-list for method output_type
+ 9, // [9:17] is the sub-list for method input_type
+ 9, // [9:9] is the sub-list for extension type_name
+ 9, // [9:9] is the sub-list for extension extendee
+ 0, // [0:9] is the sub-list for field type_name
}
func init() { file_api_v1_api_proto_init() }
@@ -1314,7 +1417,7 @@ func file_api_v1_api_proto_init() {
}
}
file_api_v1_api_proto_msgTypes[8].Exporter = func(v
interface{}, i int) interface{} {
- switch v := v.(*GetListOfExamplesRequest); i {
+ switch v := v.(*GetRunErrorRequest); i {
case 0:
return &v.state
case 1:
@@ -1326,7 +1429,7 @@ func file_api_v1_api_proto_init() {
}
}
file_api_v1_api_proto_msgTypes[9].Exporter = func(v
interface{}, i int) interface{} {
- switch v := v.(*Example); i {
+ switch v := v.(*GetRunErrorResponse); i {
case 0:
return &v.state
case 1:
@@ -1338,7 +1441,7 @@ func file_api_v1_api_proto_init() {
}
}
file_api_v1_api_proto_msgTypes[10].Exporter = func(v
interface{}, i int) interface{} {
- switch v := v.(*Categories); i {
+ switch v := v.(*GetListOfExamplesRequest); i {
case 0:
return &v.state
case 1:
@@ -1350,7 +1453,7 @@ func file_api_v1_api_proto_init() {
}
}
file_api_v1_api_proto_msgTypes[11].Exporter = func(v
interface{}, i int) interface{} {
- switch v := v.(*GetListOfExamplesResponse); i {
+ switch v := v.(*Example); i {
case 0:
return &v.state
case 1:
@@ -1362,7 +1465,7 @@ func file_api_v1_api_proto_init() {
}
}
file_api_v1_api_proto_msgTypes[12].Exporter = func(v
interface{}, i int) interface{} {
- switch v := v.(*GetExampleRequest); i {
+ switch v := v.(*Categories); i {
case 0:
return &v.state
case 1:
@@ -1374,7 +1477,7 @@ func file_api_v1_api_proto_init() {
}
}
file_api_v1_api_proto_msgTypes[13].Exporter = func(v
interface{}, i int) interface{} {
- switch v := v.(*GetExampleResponse); i {
+ switch v := v.(*GetListOfExamplesResponse); i {
case 0:
return &v.state
case 1:
@@ -1386,6 +1489,30 @@ func file_api_v1_api_proto_init() {
}
}
file_api_v1_api_proto_msgTypes[14].Exporter = func(v
interface{}, i int) interface{} {
+ switch v := v.(*GetExampleRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_api_proto_msgTypes[15].Exporter = func(v
interface{}, i int) interface{} {
+ switch v := v.(*GetExampleResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_api_v1_api_proto_msgTypes[16].Exporter = func(v
interface{}, i int) interface{} {
switch v := v.(*Categories_Category); i {
case 0:
return &v.state
@@ -1404,7 +1531,7 @@ func file_api_v1_api_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_v1_api_proto_rawDesc,
NumEnums: 3,
- NumMessages: 15,
+ NumMessages: 17,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/playground/backend/internal/api/v1/api_grpc.pb.go
b/playground/backend/internal/api/v1/api_grpc.pb.go
index af31472..849723a 100644
--- a/playground/backend/internal/api/v1/api_grpc.pb.go
+++ b/playground/backend/internal/api/v1/api_grpc.pb.go
@@ -41,6 +41,8 @@ type PlaygroundServiceClient interface {
CheckStatus(ctx context.Context, in *CheckStatusRequest, opts
...grpc.CallOption) (*CheckStatusResponse, error)
// Get the result of pipeline execution.
GetRunOutput(ctx context.Context, in *GetRunOutputRequest, opts
...grpc.CallOption) (*GetRunOutputResponse, error)
+ // Get the error of pipeline execution.
+ GetRunError(ctx context.Context, in *GetRunErrorRequest, opts
...grpc.CallOption) (*GetRunErrorResponse, error)
// Get the result of pipeline compilation.
GetCompileOutput(ctx context.Context, in *GetCompileOutputRequest, opts
...grpc.CallOption) (*GetCompileOutputResponse, error)
// Get the list of precompiled examples.
@@ -86,6 +88,15 @@ func (c *playgroundServiceClient) GetRunOutput(ctx
context.Context, in *GetRunOu
return out, nil
}
+func (c *playgroundServiceClient) GetRunError(ctx context.Context, in
*GetRunErrorRequest, opts ...grpc.CallOption) (*GetRunErrorResponse, error) {
+ out := new(GetRunErrorResponse)
+ err := c.cc.Invoke(ctx, "/api.v1.PlaygroundService/GetRunError", in,
out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *playgroundServiceClient) GetCompileOutput(ctx context.Context, in
*GetCompileOutputRequest, opts ...grpc.CallOption) (*GetCompileOutputResponse,
error) {
out := new(GetCompileOutputResponse)
err := c.cc.Invoke(ctx, "/api.v1.PlaygroundService/GetCompileOutput",
in, out, opts...)
@@ -132,6 +143,8 @@ type PlaygroundServiceServer interface {
CheckStatus(context.Context, *CheckStatusRequest)
(*CheckStatusResponse, error)
// Get the result of pipeline execution.
GetRunOutput(context.Context, *GetRunOutputRequest)
(*GetRunOutputResponse, error)
+ // Get the error of pipeline execution.
+ GetRunError(context.Context, *GetRunErrorRequest)
(*GetRunErrorResponse, error)
// Get the result of pipeline compilation.
GetCompileOutput(context.Context, *GetCompileOutputRequest)
(*GetCompileOutputResponse, error)
// Get the list of precompiled examples.
@@ -155,6 +168,9 @@ func (UnimplementedPlaygroundServiceServer)
CheckStatus(context.Context, *CheckS
func (UnimplementedPlaygroundServiceServer) GetRunOutput(context.Context,
*GetRunOutputRequest) (*GetRunOutputResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetRunOutput not
implemented")
}
+func (UnimplementedPlaygroundServiceServer) GetRunError(context.Context,
*GetRunErrorRequest) (*GetRunErrorResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetRunError not
implemented")
+}
func (UnimplementedPlaygroundServiceServer) GetCompileOutput(context.Context,
*GetCompileOutputRequest) (*GetCompileOutputResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetCompileOutput
not implemented")
}
@@ -233,6 +249,24 @@ func _PlaygroundService_GetRunOutput_Handler(srv
interface{}, ctx context.Contex
return interceptor(ctx, in, info, handler)
}
+func _PlaygroundService_GetRunError_Handler(srv interface{}, ctx
context.Context, dec func(interface{}) error, interceptor
grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetRunErrorRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PlaygroundServiceServer).GetRunError(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/api.v1.PlaygroundService/GetRunError",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{},
error) {
+ return srv.(PlaygroundServiceServer).GetRunError(ctx,
req.(*GetRunErrorRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _PlaygroundService_GetCompileOutput_Handler(srv interface{}, ctx
context.Context, dec func(interface{}) error, interceptor
grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetCompileOutputRequest)
if err := dec(in); err != nil {
@@ -325,6 +359,10 @@ var PlaygroundService_ServiceDesc = grpc.ServiceDesc{
Handler: _PlaygroundService_GetRunOutput_Handler,
},
{
+ MethodName: "GetRunError",
+ Handler: _PlaygroundService_GetRunError_Handler,
+ },
+ {
MethodName: "GetCompileOutput",
Handler: _PlaygroundService_GetCompileOutput_Handler,
},
diff --git a/playground/backend/internal/cache/cache.go
b/playground/backend/internal/cache/cache.go
index f71ce89..50085f6 100644
--- a/playground/backend/internal/cache/cache.go
+++ b/playground/backend/internal/cache/cache.go
@@ -32,6 +32,9 @@ const (
// RunOutput is used to keep run code output value
RunOutput SubKey = "RUN_OUTPUT"
+ // RunError is used to keep run code error value
+ RunError SubKey = "RUN_ERROR"
+
// CompileOutput is used to keep compilation output value
CompileOutput SubKey = "COMPILE_OUTPUT"
)
diff --git a/playground/backend/internal/cache/redis/redis_cache.go
b/playground/backend/internal/cache/redis/redis_cache.go
index 03f427b..af24e34 100644
--- a/playground/backend/internal/cache/redis/redis_cache.go
+++ b/playground/backend/internal/cache/redis/redis_cache.go
@@ -102,7 +102,7 @@ func unmarshalBySubKey(subKey cache.SubKey, value string)
(result interface{}, e
case cache.Status:
result = new(pb.Status)
err = json.Unmarshal([]byte(value), &result)
- case cache.RunOutput, cache.CompileOutput:
+ case cache.RunOutput, cache.RunError, cache.CompileOutput:
result = ""
err = json.Unmarshal([]byte(value), &result)
}
diff --git a/playground/frontend/lib/api/v1/api.pb.dart
b/playground/frontend/lib/api/v1/api.pb.dart
index 45cd80c..daa5a58 100644
--- a/playground/frontend/lib/api/v1/api.pb.dart
+++ b/playground/frontend/lib/api/v1/api.pb.dart
@@ -390,22 +390,17 @@ class GetRunOutputRequest extends $pb.GeneratedMessage {
class GetRunOutputResponse extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const
$core.bool.fromEnvironment('protobuf.omit_message_names') ? '' :
'GetRunOutputResponse', package: const $pb.PackageName(const
$core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'api.v1'),
createEmptyInstance: create)
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ?
'' : 'output')
- ..e<Status>(2, const
$core.bool.fromEnvironment('protobuf.omit_field_names') ? '' :
'compilationStatus', $pb.PbFieldType.OE, defaultOrMaker:
Status.STATUS_UNSPECIFIED, valueOf: Status.valueOf, enumValues: Status.values)
..hasRequiredFields = false
;
GetRunOutputResponse._() : super();
factory GetRunOutputResponse({
$core.String? output,
- Status? compilationStatus,
}) {
final _result = create();
if (output != null) {
_result.output = output;
}
- if (compilationStatus != null) {
- _result.compilationStatus = compilationStatus;
- }
return _result;
}
factory GetRunOutputResponse.fromBuffer($core.List<$core.int> i,
[$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(i, r);
@@ -437,15 +432,100 @@ class GetRunOutputResponse extends $pb.GeneratedMessage {
$core.bool hasOutput() => $_has(0);
@$pb.TagNumber(1)
void clearOutput() => clearField(1);
+}
- @$pb.TagNumber(2)
- Status get compilationStatus => $_getN(1);
- @$pb.TagNumber(2)
- set compilationStatus(Status v) { setField(2, v); }
- @$pb.TagNumber(2)
- $core.bool hasCompilationStatus() => $_has(1);
- @$pb.TagNumber(2)
- void clearCompilationStatus() => clearField(2);
+class GetRunErrorRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const
$core.bool.fromEnvironment('protobuf.omit_message_names') ? '' :
'GetRunErrorRequest', package: const $pb.PackageName(const
$core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'api.v1'),
createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ?
'' : 'pipelineUuid')
+ ..hasRequiredFields = false
+ ;
+
+ GetRunErrorRequest._() : super();
+ factory GetRunErrorRequest({
+ $core.String? pipelineUuid,
+ }) {
+ final _result = create();
+ if (pipelineUuid != null) {
+ _result.pipelineUuid = pipelineUuid;
+ }
+ return _result;
+ }
+ factory GetRunErrorRequest.fromBuffer($core.List<$core.int> i,
[$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(i, r);
+ factory GetRunErrorRequest.fromJson($core.String i, [$pb.ExtensionRegistry r
= $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ GetRunErrorRequest clone() => GetRunErrorRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ GetRunErrorRequest copyWith(void Function(GetRunErrorRequest) updates) =>
super.copyWith((message) => updates(message as GetRunErrorRequest)) as
GetRunErrorRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static GetRunErrorRequest create() => GetRunErrorRequest._();
+ GetRunErrorRequest createEmptyInstance() => create();
+ static $pb.PbList<GetRunErrorRequest> createRepeated() =>
$pb.PbList<GetRunErrorRequest>();
+ @$core.pragma('dart2js:noInline')
+ static GetRunErrorRequest getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<GetRunErrorRequest>(create);
+ static GetRunErrorRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get pipelineUuid => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set pipelineUuid($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasPipelineUuid() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearPipelineUuid() => clearField(1);
+}
+
+class GetRunErrorResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const
$core.bool.fromEnvironment('protobuf.omit_message_names') ? '' :
'GetRunErrorResponse', package: const $pb.PackageName(const
$core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'api.v1'),
createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ?
'' : 'output')
+ ..hasRequiredFields = false
+ ;
+
+ GetRunErrorResponse._() : super();
+ factory GetRunErrorResponse({
+ $core.String? output,
+ }) {
+ final _result = create();
+ if (output != null) {
+ _result.output = output;
+ }
+ return _result;
+ }
+ factory GetRunErrorResponse.fromBuffer($core.List<$core.int> i,
[$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(i, r);
+ factory GetRunErrorResponse.fromJson($core.String i, [$pb.ExtensionRegistry
r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ GetRunErrorResponse clone() => GetRunErrorResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ GetRunErrorResponse copyWith(void Function(GetRunErrorResponse) updates) =>
super.copyWith((message) => updates(message as GetRunErrorResponse)) as
GetRunErrorResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static GetRunErrorResponse create() => GetRunErrorResponse._();
+ GetRunErrorResponse createEmptyInstance() => create();
+ static $pb.PbList<GetRunErrorResponse> createRepeated() =>
$pb.PbList<GetRunErrorResponse>();
+ @$core.pragma('dart2js:noInline')
+ static GetRunErrorResponse getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<GetRunErrorResponse>(create);
+ static GetRunErrorResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get output => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set output($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasOutput() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearOutput() => clearField(1);
}
class GetListOfExamplesRequest extends $pb.GeneratedMessage {
diff --git a/playground/frontend/lib/api/v1/api.pbenum.dart
b/playground/frontend/lib/api/v1/api.pbenum.dart
index 973aae0..c9216ef 100644
--- a/playground/frontend/lib/api/v1/api.pbenum.dart
+++ b/playground/frontend/lib/api/v1/api.pbenum.dart
@@ -55,8 +55,9 @@ class Status extends $pb.ProtobufEnum {
static const Status STATUS_COMPILE_ERROR = Status._(4, const
$core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' :
'STATUS_COMPILE_ERROR');
static const Status STATUS_EXECUTING = Status._(5, const
$core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' :
'STATUS_EXECUTING');
static const Status STATUS_FINISHED = Status._(6, const
$core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' :
'STATUS_FINISHED');
- static const Status STATUS_ERROR = Status._(7, const
$core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'STATUS_ERROR');
- static const Status STATUS_RUN_TIMEOUT = Status._(8, const
$core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' :
'STATUS_RUN_TIMEOUT');
+ static const Status STATUS_RUN_ERROR = Status._(7, const
$core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' :
'STATUS_RUN_ERROR');
+ static const Status STATUS_ERROR = Status._(8, const
$core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'STATUS_ERROR');
+ static const Status STATUS_RUN_TIMEOUT = Status._(9, const
$core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' :
'STATUS_RUN_TIMEOUT');
static const $core.List<Status> values = <Status> [
STATUS_UNSPECIFIED,
@@ -66,6 +67,7 @@ class Status extends $pb.ProtobufEnum {
STATUS_COMPILE_ERROR,
STATUS_EXECUTING,
STATUS_FINISHED,
+ STATUS_RUN_ERROR,
STATUS_ERROR,
STATUS_RUN_TIMEOUT,
];
diff --git a/playground/frontend/lib/api/v1/api.pbgrpc.dart
b/playground/frontend/lib/api/v1/api.pbgrpc.dart
index f49c585..0ef8b83 100644
--- a/playground/frontend/lib/api/v1/api.pbgrpc.dart
+++ b/playground/frontend/lib/api/v1/api.pbgrpc.dart
@@ -49,6 +49,12 @@ class PlaygroundServiceClient extends $grpc.Client {
($0.GetRunOutputRequest value) => value.writeToBuffer(),
($core.List<$core.int> value) =>
$0.GetRunOutputResponse.fromBuffer(value));
+ static final _$getRunError =
+ $grpc.ClientMethod<$0.GetRunErrorRequest, $0.GetRunErrorResponse>(
+ '/api.v1.PlaygroundService/GetRunError',
+ ($0.GetRunErrorRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.GetRunErrorResponse.fromBuffer(value));
static final _$getCompileOutput = $grpc.ClientMethod<
$0.GetCompileOutputRequest, $0.GetCompileOutputResponse>(
'/api.v1.PlaygroundService/GetCompileOutput',
@@ -96,6 +102,12 @@ class PlaygroundServiceClient extends $grpc.Client {
return $createUnaryCall(_$getRunOutput, request, options: options);
}
+ $grpc.ResponseFuture<$0.GetRunErrorResponse> getRunError(
+ $0.GetRunErrorRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$getRunError, request, options: options);
+ }
+
$grpc.ResponseFuture<$0.GetCompileOutputResponse> getCompileOutput(
$0.GetCompileOutputRequest request,
{$grpc.CallOptions? options}) {
@@ -150,6 +162,15 @@ abstract class PlaygroundServiceBase extends $grpc.Service
{
($core.List<$core.int> value) =>
$0.GetRunOutputRequest.fromBuffer(value),
($0.GetRunOutputResponse value) => value.writeToBuffer()));
+ $addMethod(
+ $grpc.ServiceMethod<$0.GetRunErrorRequest, $0.GetRunErrorResponse>(
+ 'GetRunError',
+ getRunError_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.GetRunErrorRequest.fromBuffer(value),
+ ($0.GetRunErrorResponse value) => value.writeToBuffer()));
$addMethod($grpc.ServiceMethod<$0.GetCompileOutputRequest,
$0.GetCompileOutputResponse>(
'GetCompileOutput',
@@ -202,6 +223,11 @@ abstract class PlaygroundServiceBase extends $grpc.Service
{
return getRunOutput(call, await request);
}
+ $async.Future<$0.GetRunErrorResponse> getRunError_Pre($grpc.ServiceCall call,
+ $async.Future<$0.GetRunErrorRequest> request) async {
+ return getRunError(call, await request);
+ }
+
$async.Future<$0.GetCompileOutputResponse> getCompileOutput_Pre(
$grpc.ServiceCall call,
$async.Future<$0.GetCompileOutputRequest> request) async {
@@ -231,6 +257,8 @@ abstract class PlaygroundServiceBase extends $grpc.Service {
$grpc.ServiceCall call, $0.CheckStatusRequest request);
$async.Future<$0.GetRunOutputResponse> getRunOutput(
$grpc.ServiceCall call, $0.GetRunOutputRequest request);
+ $async.Future<$0.GetRunErrorResponse> getRunError(
+ $grpc.ServiceCall call, $0.GetRunErrorRequest request);
$async.Future<$0.GetCompileOutputResponse> getCompileOutput(
$grpc.ServiceCall call, $0.GetCompileOutputRequest request);
$async.Future<$0.GetListOfExamplesResponse> getListOfExamples(
diff --git a/playground/frontend/lib/api/v1/api.pbjson.dart
b/playground/frontend/lib/api/v1/api.pbjson.dart
index 972ec2b..4ceced4 100644
--- a/playground/frontend/lib/api/v1/api.pbjson.dart
+++ b/playground/frontend/lib/api/v1/api.pbjson.dart
@@ -50,13 +50,14 @@ const Status$json = const {
const {'1': 'STATUS_COMPILE_ERROR', '2': 4},
const {'1': 'STATUS_EXECUTING', '2': 5},
const {'1': 'STATUS_FINISHED', '2': 6},
- const {'1': 'STATUS_ERROR', '2': 7},
- const {'1': 'STATUS_RUN_TIMEOUT', '2': 8},
+ const {'1': 'STATUS_RUN_ERROR', '2': 7},
+ const {'1': 'STATUS_ERROR', '2': 8},
+ const {'1': 'STATUS_RUN_TIMEOUT', '2': 9},
],
};
/// Descriptor for `Status`. Decode as a `google.protobuf.EnumDescriptorProto`.
-final $typed_data.Uint8List statusDescriptor =
$convert.base64Decode('CgZTdGF0dXMSFgoSU1RBVFVTX1VOU1BFQ0lGSUVEEAASFQoRU1RBVFVTX1ZBTElEQVRJTkcQARIbChdTVEFUVVNfVkFMSURBVElPTl9FUlJPUhACEhQKEFNUQVRVU19DT01QSUxJTkcQAxIYChRTVEFUVVNfQ09NUElMRV9FUlJPUhAEEhQKEFNUQVRVU19FWEVDVVRJTkcQBRITCg9TVEFUVVNfRklOSVNIRUQQBhIQCgxTVEFUVVNfRVJST1IQBxIWChJTVEFUVVNfUlVOX1RJTUVPVVQQCA==');
+final $typed_data.Uint8List statusDescriptor =
$convert.base64Decode('CgZTdGF0dXMSFgoSU1RBVFVTX1VOU1BFQ0lGSUVEEAASFQoRU1RBVFVTX1ZBTElEQVRJTkcQARIbChdTVEFUVVNfVkFMSURBVElPTl9FUlJPUhACEhQKEFNUQVRVU19DT01QSUxJTkcQAxIYChRTVEFUVVNfQ09NUElMRV9FUlJPUhAEEhQKEFNUQVRVU19FWEVDVVRJTkcQBRITCg9TVEFUVVNfRklOSVNIRUQQBhIUChBTVEFUVVNfUlVOX0VSUk9SEAcSEAoMU1RBVFVTX0VSUk9SEAgSFgoSU1RBVFVTX1JVTl9USU1FT1VUEAk=');
@$core.Deprecated('Use exampleTypeDescriptor instead')
const ExampleType$json = const {
'1': 'ExampleType',
@@ -146,12 +147,31 @@ const GetRunOutputResponse$json = const {
'1': 'GetRunOutputResponse',
'2': const [
const {'1': 'output', '3': 1, '4': 1, '5': 9, '10': 'output'},
- const {'1': 'compilation_status', '3': 2, '4': 1, '5': 14, '6':
'.api.v1.Status', '10': 'compilationStatus'},
],
};
/// Descriptor for `GetRunOutputResponse`. Decode as a
`google.protobuf.DescriptorProto`.
-final $typed_data.Uint8List getRunOutputResponseDescriptor =
$convert.base64Decode('ChRHZXRSdW5PdXRwdXRSZXNwb25zZRIWCgZvdXRwdXQYASABKAlSBm91dHB1dBI9ChJjb21waWxhdGlvbl9zdGF0dXMYAiABKA4yDi5hcGkudjEuU3RhdHVzUhFjb21waWxhdGlvblN0YXR1cw==');
+final $typed_data.Uint8List getRunOutputResponseDescriptor =
$convert.base64Decode('ChRHZXRSdW5PdXRwdXRSZXNwb25zZRIWCgZvdXRwdXQYASABKAlSBm91dHB1dA==');
+@$core.Deprecated('Use getRunErrorRequestDescriptor instead')
+const GetRunErrorRequest$json = const {
+ '1': 'GetRunErrorRequest',
+ '2': const [
+ const {'1': 'pipeline_uuid', '3': 1, '4': 1, '5': 9, '10': 'pipelineUuid'},
+ ],
+};
+
+/// Descriptor for `GetRunErrorRequest`. Decode as a
`google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List getRunErrorRequestDescriptor =
$convert.base64Decode('ChJHZXRSdW5FcnJvclJlcXVlc3QSIwoNcGlwZWxpbmVfdXVpZBgBIAEoCVIMcGlwZWxpbmVVdWlk');
+@$core.Deprecated('Use getRunErrorResponseDescriptor instead')
+const GetRunErrorResponse$json = const {
+ '1': 'GetRunErrorResponse',
+ '2': const [
+ const {'1': 'output', '3': 1, '4': 1, '5': 9, '10': 'output'},
+ ],
+};
+
+/// Descriptor for `GetRunErrorResponse`. Decode as a
`google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List getRunErrorResponseDescriptor =
$convert.base64Decode('ChNHZXRSdW5FcnJvclJlc3BvbnNlEhYKBm91dHB1dBgBIAEoCVIGb3V0cHV0');
@$core.Deprecated('Use getListOfExamplesRequestDescriptor instead')
const GetListOfExamplesRequest$json = const {
'1': 'GetListOfExamplesRequest',