feat(sync): add gRPC file synchronization service and integrate end-to-end

- add proto/services/sync_service.proto and generate Go pb + grpc bindings
- implement SyncServiceServer (streaming file scan + download) with:
  - request deduplication, in-memory cache (TTL), chunked streaming
  - concurrent-safe broadcast to waiters and server-side logging
- register SyncSvr in gRPC server and expose sync client in GrpcClient:
  - add syncClient field, registration and safe getters with reconnection-aware timeouts
- integrate gRPC sync into runner:
  - split syncFiles into syncFilesHTTP (legacy) and syncFilesGRPC
  - Runner now chooses implementation via config flag and performs streaming scan/download
- controller improvements:
  - add semaphore-based rate limiting for sync scan requests with in-flight counters and logs
- misc:
  - add utils.IsSyncGrpcEnabled() config helper
  - improve HTTP sync error diagnostics (Content-Type validation, response previews)
  - update/regenerate many protobuf and gRPC generated files (protoc/protoc-gen-go / protoc-gen-go-grpc version bumps)
This commit is contained in:
Marvin Zhang
2025-10-20 12:48:53 +08:00
parent 61604e1817
commit f441265cc2
22 changed files with 1860 additions and 1195 deletions

View File

@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.2
// protoc v5.27.2
// protoc-gen-go v1.36.1
// protoc v5.29.2
// source: services/task_service.proto
package grpc
@@ -272,20 +272,17 @@ func (ProcessStatus) EnumDescriptor() ([]byte, []int) {
}
type TaskServiceSubscribeRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
unknownFields protoimpl.UnknownFields
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceSubscribeRequest) Reset() {
*x = TaskServiceSubscribeRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceSubscribeRequest) String() string {
@@ -296,7 +293,7 @@ func (*TaskServiceSubscribeRequest) ProtoMessage() {}
func (x *TaskServiceSubscribeRequest) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -319,22 +316,19 @@ func (x *TaskServiceSubscribeRequest) GetTaskId() string {
}
type TaskServiceSubscribeResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
Code TaskServiceSubscribeCode `protobuf:"varint,1,opt,name=code,proto3,enum=grpc.TaskServiceSubscribeCode" json:"code,omitempty"`
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"`
unknownFields protoimpl.UnknownFields
Code TaskServiceSubscribeCode `protobuf:"varint,1,opt,name=code,proto3,enum=grpc.TaskServiceSubscribeCode" json:"code,omitempty"`
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceSubscribeResponse) Reset() {
*x = TaskServiceSubscribeResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceSubscribeResponse) String() string {
@@ -345,7 +339,7 @@ func (*TaskServiceSubscribeResponse) ProtoMessage() {}
func (x *TaskServiceSubscribeResponse) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -382,22 +376,19 @@ func (x *TaskServiceSubscribeResponse) GetForce() bool {
}
type TaskServiceConnectRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
Code TaskServiceConnectCode `protobuf:"varint,1,opt,name=code,proto3,enum=grpc.TaskServiceConnectCode" json:"code,omitempty"`
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
unknownFields protoimpl.UnknownFields
Code TaskServiceConnectCode `protobuf:"varint,1,opt,name=code,proto3,enum=grpc.TaskServiceConnectCode" json:"code,omitempty"`
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceConnectRequest) Reset() {
*x = TaskServiceConnectRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceConnectRequest) String() string {
@@ -408,7 +399,7 @@ func (*TaskServiceConnectRequest) ProtoMessage() {}
func (x *TaskServiceConnectRequest) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -445,22 +436,19 @@ func (x *TaskServiceConnectRequest) GetData() []byte {
}
type TaskServiceConnectResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
Code TaskServiceConnectResponseCode `protobuf:"varint,1,opt,name=code,proto3,enum=grpc.TaskServiceConnectResponseCode" json:"code,omitempty"`
Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
unknownFields protoimpl.UnknownFields
Code TaskServiceConnectResponseCode `protobuf:"varint,1,opt,name=code,proto3,enum=grpc.TaskServiceConnectResponseCode" json:"code,omitempty"`
Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceConnectResponse) Reset() {
*x = TaskServiceConnectResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceConnectResponse) String() string {
@@ -471,7 +459,7 @@ func (*TaskServiceConnectResponse) ProtoMessage() {}
func (x *TaskServiceConnectResponse) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -508,20 +496,17 @@ func (x *TaskServiceConnectResponse) GetError() string {
}
type TaskServiceFetchTaskRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
NodeKey string `protobuf:"bytes,1,opt,name=node_key,json=nodeKey,proto3" json:"node_key,omitempty"`
unknownFields protoimpl.UnknownFields
NodeKey string `protobuf:"bytes,1,opt,name=node_key,json=nodeKey,proto3" json:"node_key,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceFetchTaskRequest) Reset() {
*x = TaskServiceFetchTaskRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceFetchTaskRequest) String() string {
@@ -532,7 +517,7 @@ func (*TaskServiceFetchTaskRequest) ProtoMessage() {}
func (x *TaskServiceFetchTaskRequest) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -555,20 +540,17 @@ func (x *TaskServiceFetchTaskRequest) GetNodeKey() string {
}
type TaskServiceFetchTaskResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
unknownFields protoimpl.UnknownFields
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceFetchTaskResponse) Reset() {
*x = TaskServiceFetchTaskResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceFetchTaskResponse) String() string {
@@ -579,7 +561,7 @@ func (*TaskServiceFetchTaskResponse) ProtoMessage() {}
func (x *TaskServiceFetchTaskResponse) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -602,21 +584,18 @@ func (x *TaskServiceFetchTaskResponse) GetTaskId() string {
}
type TaskServiceSendNotificationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
NodeKey string `protobuf:"bytes,1,opt,name=node_key,json=nodeKey,proto3" json:"node_key,omitempty"`
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
unknownFields protoimpl.UnknownFields
NodeKey string `protobuf:"bytes,1,opt,name=node_key,json=nodeKey,proto3" json:"node_key,omitempty"`
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceSendNotificationRequest) Reset() {
*x = TaskServiceSendNotificationRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceSendNotificationRequest) String() string {
@@ -627,7 +606,7 @@ func (*TaskServiceSendNotificationRequest) ProtoMessage() {}
func (x *TaskServiceSendNotificationRequest) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -657,22 +636,19 @@ func (x *TaskServiceSendNotificationRequest) GetTaskId() string {
}
type TaskServiceSendNotificationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
Code TaskServiceSendNotificationResponseCode `protobuf:"varint,1,opt,name=code,proto3,enum=grpc.TaskServiceSendNotificationResponseCode" json:"code,omitempty"`
Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
unknownFields protoimpl.UnknownFields
Code TaskServiceSendNotificationResponseCode `protobuf:"varint,1,opt,name=code,proto3,enum=grpc.TaskServiceSendNotificationResponseCode" json:"code,omitempty"`
Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceSendNotificationResponse) Reset() {
*x = TaskServiceSendNotificationResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceSendNotificationResponse) String() string {
@@ -683,7 +659,7 @@ func (*TaskServiceSendNotificationResponse) ProtoMessage() {}
func (x *TaskServiceSendNotificationResponse) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -720,21 +696,18 @@ func (x *TaskServiceSendNotificationResponse) GetError() string {
}
type TaskServiceCheckProcessRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Pid int32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"`
unknownFields protoimpl.UnknownFields
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Pid int32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceCheckProcessRequest) Reset() {
*x = TaskServiceCheckProcessRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceCheckProcessRequest) String() string {
@@ -745,7 +718,7 @@ func (*TaskServiceCheckProcessRequest) ProtoMessage() {}
func (x *TaskServiceCheckProcessRequest) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -775,24 +748,21 @@ func (x *TaskServiceCheckProcessRequest) GetPid() int32 {
}
type TaskServiceCheckProcessResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Pid int32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"`
Status ProcessStatus `protobuf:"varint,3,opt,name=status,proto3,enum=grpc.ProcessStatus" json:"status,omitempty"`
ExitCode int32 `protobuf:"varint,4,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
ErrorMessage string `protobuf:"bytes,5,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
unknownFields protoimpl.UnknownFields
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Pid int32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"`
Status ProcessStatus `protobuf:"varint,3,opt,name=status,proto3,enum=grpc.ProcessStatus" json:"status,omitempty"`
ExitCode int32 `protobuf:"varint,4,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
ErrorMessage string `protobuf:"bytes,5,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *TaskServiceCheckProcessResponse) Reset() {
*x = TaskServiceCheckProcessResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_services_task_service_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_services_task_service_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TaskServiceCheckProcessResponse) String() string {
@@ -803,7 +773,7 @@ func (*TaskServiceCheckProcessResponse) ProtoMessage() {}
func (x *TaskServiceCheckProcessResponse) ProtoReflect() protoreflect.Message {
mi := &file_services_task_service_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@@ -1049,128 +1019,6 @@ func file_services_task_service_proto_init() {
if File_services_task_service_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_services_task_service_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceSubscribeRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_services_task_service_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceSubscribeResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_services_task_service_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceConnectRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_services_task_service_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceConnectResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_services_task_service_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceFetchTaskRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_services_task_service_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceFetchTaskResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_services_task_service_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceSendNotificationRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_services_task_service_proto_msgTypes[7].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceSendNotificationResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_services_task_service_proto_msgTypes[8].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceCheckProcessRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_services_task_service_proto_msgTypes[9].Exporter = func(v any, i int) any {
switch v := v.(*TaskServiceCheckProcessResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{