diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..acc3f8e --- /dev/null +++ b/go.mod @@ -0,0 +1,15 @@ +module github.com/priyanshujain/uatu + +go 1.26.1 + +require ( + google.golang.org/grpc v1.80.0 + google.golang.org/protobuf v1.36.11 +) + +require ( + golang.org/x/net v0.49.0 // indirect + golang.org/x/sys v0.40.0 // indirect + golang.org/x/text v0.33.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..98ff7bd --- /dev/null +++ b/go.sum @@ -0,0 +1,38 @@ +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/proto/driverpb/driver.pb.go b/proto/driverpb/driver.pb.go new file mode 100644 index 0000000..40179c7 --- /dev/null +++ b/proto/driverpb/driver.pb.go @@ -0,0 +1,524 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: driverpb/driver.proto + +package driverpb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Empty struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Empty) Reset() { + *x = Empty{} + mi := &file_driverpb_driver_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Empty) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Empty) ProtoMessage() {} + +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_driverpb_driver_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_driverpb_driver_proto_rawDescGZIP(), []int{0} +} + +type LaunchRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + BundleId string `protobuf:"bytes,1,opt,name=bundle_id,json=bundleId,proto3" json:"bundle_id,omitempty"` + ClearState bool `protobuf:"varint,2,opt,name=clear_state,json=clearState,proto3" json:"clear_state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LaunchRequest) Reset() { + *x = LaunchRequest{} + mi := &file_driverpb_driver_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LaunchRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LaunchRequest) ProtoMessage() {} + +func (x *LaunchRequest) ProtoReflect() protoreflect.Message { + mi := &file_driverpb_driver_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LaunchRequest.ProtoReflect.Descriptor instead. +func (*LaunchRequest) Descriptor() ([]byte, []int) { + return file_driverpb_driver_proto_rawDescGZIP(), []int{1} +} + +func (x *LaunchRequest) GetBundleId() string { + if x != nil { + return x.BundleId + } + return "" +} + +func (x *LaunchRequest) GetClearState() bool { + if x != nil { + return x.ClearState + } + return false +} + +type Point struct { + state protoimpl.MessageState `protogen:"open.v1"` + X int32 `protobuf:"varint,1,opt,name=x,proto3" json:"x,omitempty"` + Y int32 `protobuf:"varint,2,opt,name=y,proto3" json:"y,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Point) Reset() { + *x = Point{} + mi := &file_driverpb_driver_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Point) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Point) ProtoMessage() {} + +func (x *Point) ProtoReflect() protoreflect.Message { + mi := &file_driverpb_driver_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Point.ProtoReflect.Descriptor instead. +func (*Point) Descriptor() ([]byte, []int) { + return file_driverpb_driver_proto_rawDescGZIP(), []int{2} +} + +func (x *Point) GetX() int32 { + if x != nil { + return x.X + } + return 0 +} + +func (x *Point) GetY() int32 { + if x != nil { + return x.Y + } + return 0 +} + +type Text struct { + state protoimpl.MessageState `protogen:"open.v1"` + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Text) Reset() { + *x = Text{} + mi := &file_driverpb_driver_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Text) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Text) ProtoMessage() {} + +func (x *Text) ProtoReflect() protoreflect.Message { + mi := &file_driverpb_driver_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Text.ProtoReflect.Descriptor instead. +func (*Text) Descriptor() ([]byte, []int) { + return file_driverpb_driver_proto_rawDescGZIP(), []int{3} +} + +func (x *Text) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type Image struct { + state protoimpl.MessageState `protogen:"open.v1"` + Png []byte `protobuf:"bytes,1,opt,name=png,proto3" json:"png,omitempty"` + Width int32 `protobuf:"varint,2,opt,name=width,proto3" json:"width,omitempty"` + Height int32 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Image) Reset() { + *x = Image{} + mi := &file_driverpb_driver_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Image) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Image) ProtoMessage() {} + +func (x *Image) ProtoReflect() protoreflect.Message { + mi := &file_driverpb_driver_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Image.ProtoReflect.Descriptor instead. +func (*Image) Descriptor() ([]byte, []int) { + return file_driverpb_driver_proto_rawDescGZIP(), []int{4} +} + +func (x *Image) GetPng() []byte { + if x != nil { + return x.Png + } + return nil +} + +func (x *Image) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *Image) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +type HierarchyJSON struct { + state protoimpl.MessageState `protogen:"open.v1"` + Json string `protobuf:"bytes,1,opt,name=json,proto3" json:"json,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HierarchyJSON) Reset() { + *x = HierarchyJSON{} + mi := &file_driverpb_driver_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HierarchyJSON) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HierarchyJSON) ProtoMessage() {} + +func (x *HierarchyJSON) ProtoReflect() protoreflect.Message { + mi := &file_driverpb_driver_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HierarchyJSON.ProtoReflect.Descriptor instead. +func (*HierarchyJSON) Descriptor() ([]byte, []int) { + return file_driverpb_driver_proto_rawDescGZIP(), []int{5} +} + +func (x *HierarchyJSON) GetJson() string { + if x != nil { + return x.Json + } + return "" +} + +type Duration struct { + state protoimpl.MessageState `protogen:"open.v1"` + Millis int64 `protobuf:"varint,1,opt,name=millis,proto3" json:"millis,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Duration) Reset() { + *x = Duration{} + mi := &file_driverpb_driver_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Duration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Duration) ProtoMessage() {} + +func (x *Duration) ProtoReflect() protoreflect.Message { + mi := &file_driverpb_driver_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Duration.ProtoReflect.Descriptor instead. +func (*Duration) Descriptor() ([]byte, []int) { + return file_driverpb_driver_proto_rawDescGZIP(), []int{6} +} + +func (x *Duration) GetMillis() int64 { + if x != nil { + return x.Millis + } + return 0 +} + +type HealthStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ready bool `protobuf:"varint,1,opt,name=ready,proto3" json:"ready,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HealthStatus) Reset() { + *x = HealthStatus{} + mi := &file_driverpb_driver_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HealthStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HealthStatus) ProtoMessage() {} + +func (x *HealthStatus) ProtoReflect() protoreflect.Message { + mi := &file_driverpb_driver_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HealthStatus.ProtoReflect.Descriptor instead. +func (*HealthStatus) Descriptor() ([]byte, []int) { + return file_driverpb_driver_proto_rawDescGZIP(), []int{7} +} + +func (x *HealthStatus) GetReady() bool { + if x != nil { + return x.Ready + } + return false +} + +func (x *HealthStatus) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *HealthStatus) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +var File_driverpb_driver_proto protoreflect.FileDescriptor + +const file_driverpb_driver_proto_rawDesc = "" + + "\n" + + "\x15driverpb/driver.proto\x12\x0euatu.driver.v1\"\a\n" + + "\x05Empty\"M\n" + + "\rLaunchRequest\x12\x1b\n" + + "\tbundle_id\x18\x01 \x01(\tR\bbundleId\x12\x1f\n" + + "\vclear_state\x18\x02 \x01(\bR\n" + + "clearState\"#\n" + + "\x05Point\x12\f\n" + + "\x01x\x18\x01 \x01(\x05R\x01x\x12\f\n" + + "\x01y\x18\x02 \x01(\x05R\x01y\"\x1c\n" + + "\x04Text\x12\x14\n" + + "\x05value\x18\x01 \x01(\tR\x05value\"G\n" + + "\x05Image\x12\x10\n" + + "\x03png\x18\x01 \x01(\fR\x03png\x12\x14\n" + + "\x05width\x18\x02 \x01(\x05R\x05width\x12\x16\n" + + "\x06height\x18\x03 \x01(\x05R\x06height\"#\n" + + "\rHierarchyJSON\x12\x12\n" + + "\x04json\x18\x01 \x01(\tR\x04json\"\"\n" + + "\bDuration\x12\x16\n" + + "\x06millis\x18\x01 \x01(\x03R\x06millis\"Z\n" + + "\fHealthStatus\x12\x14\n" + + "\x05ready\x18\x01 \x01(\bR\x05ready\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\x1a\n" + + "\bplatform\x18\x03 \x01(\tR\bplatform2\xf0\x03\n" + + "\x06Driver\x12>\n" + + "\x06Launch\x12\x1d.uatu.driver.v1.LaunchRequest\x1a\x15.uatu.driver.v1.Empty\x129\n" + + "\tTerminate\x12\x15.uatu.driver.v1.Empty\x1a\x15.uatu.driver.v1.Empty\x123\n" + + "\x03Tap\x12\x15.uatu.driver.v1.Point\x1a\x15.uatu.driver.v1.Empty\x128\n" + + "\tInputText\x12\x14.uatu.driver.v1.Text\x1a\x15.uatu.driver.v1.Empty\x12:\n" + + "\n" + + "Screenshot\x12\x15.uatu.driver.v1.Empty\x1a\x15.uatu.driver.v1.Image\x12A\n" + + "\tHierarchy\x12\x15.uatu.driver.v1.Empty\x1a\x1d.uatu.driver.v1.HierarchyJSON\x12>\n" + + "\vWaitForIdle\x12\x18.uatu.driver.v1.Duration\x1a\x15.uatu.driver.v1.Empty\x12=\n" + + "\x06Health\x12\x15.uatu.driver.v1.Empty\x1a\x1c.uatu.driver.v1.HealthStatusBM\n" + + "\x12dev.uatu.driver.v1P\x01Z5github.com/priyanshujain/uatu/proto/driverpb;driverpbb\x06proto3" + +var ( + file_driverpb_driver_proto_rawDescOnce sync.Once + file_driverpb_driver_proto_rawDescData []byte +) + +func file_driverpb_driver_proto_rawDescGZIP() []byte { + file_driverpb_driver_proto_rawDescOnce.Do(func() { + file_driverpb_driver_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_driverpb_driver_proto_rawDesc), len(file_driverpb_driver_proto_rawDesc))) + }) + return file_driverpb_driver_proto_rawDescData +} + +var file_driverpb_driver_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_driverpb_driver_proto_goTypes = []any{ + (*Empty)(nil), // 0: uatu.driver.v1.Empty + (*LaunchRequest)(nil), // 1: uatu.driver.v1.LaunchRequest + (*Point)(nil), // 2: uatu.driver.v1.Point + (*Text)(nil), // 3: uatu.driver.v1.Text + (*Image)(nil), // 4: uatu.driver.v1.Image + (*HierarchyJSON)(nil), // 5: uatu.driver.v1.HierarchyJSON + (*Duration)(nil), // 6: uatu.driver.v1.Duration + (*HealthStatus)(nil), // 7: uatu.driver.v1.HealthStatus +} +var file_driverpb_driver_proto_depIdxs = []int32{ + 1, // 0: uatu.driver.v1.Driver.Launch:input_type -> uatu.driver.v1.LaunchRequest + 0, // 1: uatu.driver.v1.Driver.Terminate:input_type -> uatu.driver.v1.Empty + 2, // 2: uatu.driver.v1.Driver.Tap:input_type -> uatu.driver.v1.Point + 3, // 3: uatu.driver.v1.Driver.InputText:input_type -> uatu.driver.v1.Text + 0, // 4: uatu.driver.v1.Driver.Screenshot:input_type -> uatu.driver.v1.Empty + 0, // 5: uatu.driver.v1.Driver.Hierarchy:input_type -> uatu.driver.v1.Empty + 6, // 6: uatu.driver.v1.Driver.WaitForIdle:input_type -> uatu.driver.v1.Duration + 0, // 7: uatu.driver.v1.Driver.Health:input_type -> uatu.driver.v1.Empty + 0, // 8: uatu.driver.v1.Driver.Launch:output_type -> uatu.driver.v1.Empty + 0, // 9: uatu.driver.v1.Driver.Terminate:output_type -> uatu.driver.v1.Empty + 0, // 10: uatu.driver.v1.Driver.Tap:output_type -> uatu.driver.v1.Empty + 0, // 11: uatu.driver.v1.Driver.InputText:output_type -> uatu.driver.v1.Empty + 4, // 12: uatu.driver.v1.Driver.Screenshot:output_type -> uatu.driver.v1.Image + 5, // 13: uatu.driver.v1.Driver.Hierarchy:output_type -> uatu.driver.v1.HierarchyJSON + 0, // 14: uatu.driver.v1.Driver.WaitForIdle:output_type -> uatu.driver.v1.Empty + 7, // 15: uatu.driver.v1.Driver.Health:output_type -> uatu.driver.v1.HealthStatus + 8, // [8:16] is the sub-list for method output_type + 0, // [0:8] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_driverpb_driver_proto_init() } +func file_driverpb_driver_proto_init() { + if File_driverpb_driver_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_driverpb_driver_proto_rawDesc), len(file_driverpb_driver_proto_rawDesc)), + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_driverpb_driver_proto_goTypes, + DependencyIndexes: file_driverpb_driver_proto_depIdxs, + MessageInfos: file_driverpb_driver_proto_msgTypes, + }.Build() + File_driverpb_driver_proto = out.File + file_driverpb_driver_proto_goTypes = nil + file_driverpb_driver_proto_depIdxs = nil +} diff --git a/proto/driverpb/driver_grpc.pb.go b/proto/driverpb/driver_grpc.pb.go new file mode 100644 index 0000000..c766b8a --- /dev/null +++ b/proto/driverpb/driver_grpc.pb.go @@ -0,0 +1,387 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.0 +// - protoc (unknown) +// source: driverpb/driver.proto + +package driverpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Driver_Launch_FullMethodName = "/uatu.driver.v1.Driver/Launch" + Driver_Terminate_FullMethodName = "/uatu.driver.v1.Driver/Terminate" + Driver_Tap_FullMethodName = "/uatu.driver.v1.Driver/Tap" + Driver_InputText_FullMethodName = "/uatu.driver.v1.Driver/InputText" + Driver_Screenshot_FullMethodName = "/uatu.driver.v1.Driver/Screenshot" + Driver_Hierarchy_FullMethodName = "/uatu.driver.v1.Driver/Hierarchy" + Driver_WaitForIdle_FullMethodName = "/uatu.driver.v1.Driver/WaitForIdle" + Driver_Health_FullMethodName = "/uatu.driver.v1.Driver/Health" +) + +// DriverClient is the client API for Driver service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DriverClient interface { + Launch(ctx context.Context, in *LaunchRequest, opts ...grpc.CallOption) (*Empty, error) + Terminate(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) + Tap(ctx context.Context, in *Point, opts ...grpc.CallOption) (*Empty, error) + InputText(ctx context.Context, in *Text, opts ...grpc.CallOption) (*Empty, error) + Screenshot(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Image, error) + Hierarchy(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*HierarchyJSON, error) + WaitForIdle(ctx context.Context, in *Duration, opts ...grpc.CallOption) (*Empty, error) + Health(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*HealthStatus, error) +} + +type driverClient struct { + cc grpc.ClientConnInterface +} + +func NewDriverClient(cc grpc.ClientConnInterface) DriverClient { + return &driverClient{cc} +} + +func (c *driverClient) Launch(ctx context.Context, in *LaunchRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Driver_Launch_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *driverClient) Terminate(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Driver_Terminate_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *driverClient) Tap(ctx context.Context, in *Point, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Driver_Tap_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *driverClient) InputText(ctx context.Context, in *Text, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Driver_InputText_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *driverClient) Screenshot(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Image, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Image) + err := c.cc.Invoke(ctx, Driver_Screenshot_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *driverClient) Hierarchy(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*HierarchyJSON, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(HierarchyJSON) + err := c.cc.Invoke(ctx, Driver_Hierarchy_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *driverClient) WaitForIdle(ctx context.Context, in *Duration, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Driver_WaitForIdle_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *driverClient) Health(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*HealthStatus, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(HealthStatus) + err := c.cc.Invoke(ctx, Driver_Health_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// DriverServer is the server API for Driver service. +// All implementations must embed UnimplementedDriverServer +// for forward compatibility. +type DriverServer interface { + Launch(context.Context, *LaunchRequest) (*Empty, error) + Terminate(context.Context, *Empty) (*Empty, error) + Tap(context.Context, *Point) (*Empty, error) + InputText(context.Context, *Text) (*Empty, error) + Screenshot(context.Context, *Empty) (*Image, error) + Hierarchy(context.Context, *Empty) (*HierarchyJSON, error) + WaitForIdle(context.Context, *Duration) (*Empty, error) + Health(context.Context, *Empty) (*HealthStatus, error) + mustEmbedUnimplementedDriverServer() +} + +// UnimplementedDriverServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedDriverServer struct{} + +func (UnimplementedDriverServer) Launch(context.Context, *LaunchRequest) (*Empty, error) { + return nil, status.Error(codes.Unimplemented, "method Launch not implemented") +} +func (UnimplementedDriverServer) Terminate(context.Context, *Empty) (*Empty, error) { + return nil, status.Error(codes.Unimplemented, "method Terminate not implemented") +} +func (UnimplementedDriverServer) Tap(context.Context, *Point) (*Empty, error) { + return nil, status.Error(codes.Unimplemented, "method Tap not implemented") +} +func (UnimplementedDriverServer) InputText(context.Context, *Text) (*Empty, error) { + return nil, status.Error(codes.Unimplemented, "method InputText not implemented") +} +func (UnimplementedDriverServer) Screenshot(context.Context, *Empty) (*Image, error) { + return nil, status.Error(codes.Unimplemented, "method Screenshot not implemented") +} +func (UnimplementedDriverServer) Hierarchy(context.Context, *Empty) (*HierarchyJSON, error) { + return nil, status.Error(codes.Unimplemented, "method Hierarchy not implemented") +} +func (UnimplementedDriverServer) WaitForIdle(context.Context, *Duration) (*Empty, error) { + return nil, status.Error(codes.Unimplemented, "method WaitForIdle not implemented") +} +func (UnimplementedDriverServer) Health(context.Context, *Empty) (*HealthStatus, error) { + return nil, status.Error(codes.Unimplemented, "method Health not implemented") +} +func (UnimplementedDriverServer) mustEmbedUnimplementedDriverServer() {} +func (UnimplementedDriverServer) testEmbeddedByValue() {} + +// UnsafeDriverServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DriverServer will +// result in compilation errors. +type UnsafeDriverServer interface { + mustEmbedUnimplementedDriverServer() +} + +func RegisterDriverServer(s grpc.ServiceRegistrar, srv DriverServer) { + // If the following call panics, it indicates UnimplementedDriverServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Driver_ServiceDesc, srv) +} + +func _Driver_Launch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LaunchRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DriverServer).Launch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Driver_Launch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DriverServer).Launch(ctx, req.(*LaunchRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Driver_Terminate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DriverServer).Terminate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Driver_Terminate_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DriverServer).Terminate(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Driver_Tap_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Point) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DriverServer).Tap(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Driver_Tap_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DriverServer).Tap(ctx, req.(*Point)) + } + return interceptor(ctx, in, info, handler) +} + +func _Driver_InputText_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Text) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DriverServer).InputText(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Driver_InputText_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DriverServer).InputText(ctx, req.(*Text)) + } + return interceptor(ctx, in, info, handler) +} + +func _Driver_Screenshot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DriverServer).Screenshot(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Driver_Screenshot_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DriverServer).Screenshot(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Driver_Hierarchy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DriverServer).Hierarchy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Driver_Hierarchy_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DriverServer).Hierarchy(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Driver_WaitForIdle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Duration) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DriverServer).WaitForIdle(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Driver_WaitForIdle_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DriverServer).WaitForIdle(ctx, req.(*Duration)) + } + return interceptor(ctx, in, info, handler) +} + +func _Driver_Health_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DriverServer).Health(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Driver_Health_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DriverServer).Health(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +// Driver_ServiceDesc is the grpc.ServiceDesc for Driver service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Driver_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "uatu.driver.v1.Driver", + HandlerType: (*DriverServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Launch", + Handler: _Driver_Launch_Handler, + }, + { + MethodName: "Terminate", + Handler: _Driver_Terminate_Handler, + }, + { + MethodName: "Tap", + Handler: _Driver_Tap_Handler, + }, + { + MethodName: "InputText", + Handler: _Driver_InputText_Handler, + }, + { + MethodName: "Screenshot", + Handler: _Driver_Screenshot_Handler, + }, + { + MethodName: "Hierarchy", + Handler: _Driver_Hierarchy_Handler, + }, + { + MethodName: "WaitForIdle", + Handler: _Driver_WaitForIdle_Handler, + }, + { + MethodName: "Health", + Handler: _Driver_Health_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "driverpb/driver.proto", +}