mirror of
https://github.com/garethgeorge/backrest.git
synced 2026-05-29 16:00:57 +00:00
progress checkpoint
This commit is contained in:
+14
-3
@@ -92,6 +92,7 @@ type OpSelector struct {
|
||||
PlanId *string `protobuf:"bytes,3,opt,name=plan_id,json=planId,proto3,oneof" json:"plan_id,omitempty"`
|
||||
SnapshotId *string `protobuf:"bytes,4,opt,name=snapshot_id,json=snapshotId,proto3,oneof" json:"snapshot_id,omitempty"`
|
||||
FlowId *int64 `protobuf:"varint,5,opt,name=flow_id,json=flowId,proto3,oneof" json:"flow_id,omitempty"`
|
||||
ModnoGte *int64 `protobuf:"varint,9,opt,name=modno_gte,json=modnoGte,proto3,oneof" json:"modno_gte,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
@@ -175,6 +176,13 @@ func (x *OpSelector) GetFlowId() int64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *OpSelector) GetModnoGte() int64 {
|
||||
if x != nil && x.ModnoGte != nil {
|
||||
return *x.ModnoGte
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type DoRepoTaskRequest struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
|
||||
@@ -1116,7 +1124,7 @@ var File_v1_service_proto protoreflect.FileDescriptor
|
||||
|
||||
const file_v1_service_proto_rawDesc = "" +
|
||||
"\n" +
|
||||
"\x10v1/service.proto\x12\x02v1\x1a\x0fv1/config.proto\x1a\x0fv1/restic.proto\x1a\x13v1/operations.proto\x1a\x11types/value.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/api/annotations.proto\"\xe7\x02\n" +
|
||||
"\x10v1/service.proto\x12\x02v1\x1a\x0fv1/config.proto\x1a\x0fv1/restic.proto\x1a\x13v1/operations.proto\x1a\x11types/value.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/api/annotations.proto\"\x97\x03\n" +
|
||||
"\n" +
|
||||
"OpSelector\x12\x10\n" +
|
||||
"\x03ids\x18\x01 \x03(\x03R\x03ids\x12$\n" +
|
||||
@@ -1127,7 +1135,8 @@ const file_v1_service_proto_rawDesc = "" +
|
||||
"\aplan_id\x18\x03 \x01(\tH\x03R\x06planId\x88\x01\x01\x12$\n" +
|
||||
"\vsnapshot_id\x18\x04 \x01(\tH\x04R\n" +
|
||||
"snapshotId\x88\x01\x01\x12\x1c\n" +
|
||||
"\aflow_id\x18\x05 \x01(\x03H\x05R\x06flowId\x88\x01\x01B\x0e\n" +
|
||||
"\aflow_id\x18\x05 \x01(\x03H\x05R\x06flowId\x88\x01\x01\x12 \n" +
|
||||
"\tmodno_gte\x18\t \x01(\x03H\x06R\bmodnoGte\x88\x01\x01B\x0e\n" +
|
||||
"\f_instance_idB\x1a\n" +
|
||||
"\x18_original_instance_keyidB\f\n" +
|
||||
"\n" +
|
||||
@@ -1136,7 +1145,9 @@ const file_v1_service_proto_rawDesc = "" +
|
||||
"\b_plan_idB\x0e\n" +
|
||||
"\f_snapshot_idB\n" +
|
||||
"\n" +
|
||||
"\b_flow_id\"\xce\x01\n" +
|
||||
"\b_flow_idB\f\n" +
|
||||
"\n" +
|
||||
"_modno_gte\"\xce\x01\n" +
|
||||
"\x11DoRepoTaskRequest\x12\x17\n" +
|
||||
"\arepo_id\x18\x01 \x01(\tR\x06repoId\x12.\n" +
|
||||
"\x04task\x18\x02 \x01(\x0e2\x1a.v1.DoRepoTaskRequest.TaskR\x04task\"p\n" +
|
||||
|
||||
@@ -796,7 +796,7 @@ type SyncStreamItem struct {
|
||||
// *SyncStreamItem_SignedMessage
|
||||
// *SyncStreamItem_Handshake
|
||||
// *SyncStreamItem_Heartbeat
|
||||
// *SyncStreamItem_DiffOperations
|
||||
// *SyncStreamItem_RequestOperations
|
||||
// *SyncStreamItem_SendOperations
|
||||
// *SyncStreamItem_SendConfig
|
||||
// *SyncStreamItem_SetConfig
|
||||
@@ -873,10 +873,10 @@ func (x *SyncStreamItem) GetHeartbeat() *SyncStreamItem_SyncActionHeartbeat {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *SyncStreamItem) GetDiffOperations() *SyncStreamItem_SyncActionDiffOperations {
|
||||
func (x *SyncStreamItem) GetRequestOperations() *SyncStreamItem_SyncActionRequestOperations {
|
||||
if x != nil {
|
||||
if x, ok := x.Action.(*SyncStreamItem_DiffOperations); ok {
|
||||
return x.DiffOperations
|
||||
if x, ok := x.Action.(*SyncStreamItem_RequestOperations); ok {
|
||||
return x.RequestOperations
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@@ -961,8 +961,8 @@ type SyncStreamItem_Heartbeat struct {
|
||||
Heartbeat *SyncStreamItem_SyncActionHeartbeat `protobuf:"bytes,4,opt,name=heartbeat,proto3,oneof"`
|
||||
}
|
||||
|
||||
type SyncStreamItem_DiffOperations struct {
|
||||
DiffOperations *SyncStreamItem_SyncActionDiffOperations `protobuf:"bytes,20,opt,name=diff_operations,json=diffOperations,proto3,oneof"`
|
||||
type SyncStreamItem_RequestOperations struct {
|
||||
RequestOperations *SyncStreamItem_SyncActionRequestOperations `protobuf:"bytes,20,opt,name=request_operations,json=requestOperations,proto3,oneof"`
|
||||
}
|
||||
|
||||
type SyncStreamItem_SendOperations struct {
|
||||
@@ -999,7 +999,7 @@ func (*SyncStreamItem_Handshake) isSyncStreamItem_Action() {}
|
||||
|
||||
func (*SyncStreamItem_Heartbeat) isSyncStreamItem_Action() {}
|
||||
|
||||
func (*SyncStreamItem_DiffOperations) isSyncStreamItem_Action() {}
|
||||
func (*SyncStreamItem_RequestOperations) isSyncStreamItem_Action() {}
|
||||
|
||||
func (*SyncStreamItem_SendOperations) isSyncStreamItem_Action() {}
|
||||
|
||||
@@ -1320,33 +1320,27 @@ func (x *SyncStreamItem_SyncActionConnectRepo) GetRepoId() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
type SyncStreamItem_SyncActionDiffOperations struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
// Client connects and sends a list of "have_operations" that exist in its log.
|
||||
// have_operation_ids and have_operation_modnos are the operation IDs and modnos that the client has when zip'd pairwise.
|
||||
HaveOperationsSelector *v1.OpSelector `protobuf:"bytes,1,opt,name=have_operations_selector,json=haveOperationsSelector,proto3" json:"have_operations_selector,omitempty"`
|
||||
HaveOperationIds []int64 `protobuf:"varint,2,rep,packed,name=have_operation_ids,json=haveOperationIds,proto3" json:"have_operation_ids,omitempty"`
|
||||
HaveOperationModnos []int64 `protobuf:"varint,3,rep,packed,name=have_operation_modnos,json=haveOperationModnos,proto3" json:"have_operation_modnos,omitempty"`
|
||||
// Server sends a list of "request_operations" for any operations that it doesn't have.
|
||||
RequestOperations []int64 `protobuf:"varint,4,rep,packed,name=request_operations,json=requestOperations,proto3" json:"request_operations,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
type SyncStreamItem_SyncActionRequestOperations struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Selector *v1.OpSelector `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *SyncStreamItem_SyncActionDiffOperations) Reset() {
|
||||
*x = SyncStreamItem_SyncActionDiffOperations{}
|
||||
func (x *SyncStreamItem_SyncActionRequestOperations) Reset() {
|
||||
*x = SyncStreamItem_SyncActionRequestOperations{}
|
||||
mi := &file_v1sync_syncservice_proto_msgTypes[18]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
||||
func (x *SyncStreamItem_SyncActionDiffOperations) String() string {
|
||||
func (x *SyncStreamItem_SyncActionRequestOperations) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*SyncStreamItem_SyncActionDiffOperations) ProtoMessage() {}
|
||||
func (*SyncStreamItem_SyncActionRequestOperations) ProtoMessage() {}
|
||||
|
||||
func (x *SyncStreamItem_SyncActionDiffOperations) ProtoReflect() protoreflect.Message {
|
||||
func (x *SyncStreamItem_SyncActionRequestOperations) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_v1sync_syncservice_proto_msgTypes[18]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
@@ -1358,35 +1352,14 @@ func (x *SyncStreamItem_SyncActionDiffOperations) ProtoReflect() protoreflect.Me
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use SyncStreamItem_SyncActionDiffOperations.ProtoReflect.Descriptor instead.
|
||||
func (*SyncStreamItem_SyncActionDiffOperations) Descriptor() ([]byte, []int) {
|
||||
// Deprecated: Use SyncStreamItem_SyncActionRequestOperations.ProtoReflect.Descriptor instead.
|
||||
func (*SyncStreamItem_SyncActionRequestOperations) Descriptor() ([]byte, []int) {
|
||||
return file_v1sync_syncservice_proto_rawDescGZIP(), []int{11, 6}
|
||||
}
|
||||
|
||||
func (x *SyncStreamItem_SyncActionDiffOperations) GetHaveOperationsSelector() *v1.OpSelector {
|
||||
func (x *SyncStreamItem_SyncActionRequestOperations) GetSelector() *v1.OpSelector {
|
||||
if x != nil {
|
||||
return x.HaveOperationsSelector
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *SyncStreamItem_SyncActionDiffOperations) GetHaveOperationIds() []int64 {
|
||||
if x != nil {
|
||||
return x.HaveOperationIds
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *SyncStreamItem_SyncActionDiffOperations) GetHaveOperationModnos() []int64 {
|
||||
if x != nil {
|
||||
return x.HaveOperationModnos
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *SyncStreamItem_SyncActionDiffOperations) GetRequestOperations() []int64 {
|
||||
if x != nil {
|
||||
return x.RequestOperations
|
||||
return x.Selector
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -1692,12 +1665,12 @@ const file_v1sync_syncservice_proto_rawDesc = "" +
|
||||
"\n" +
|
||||
"public_key\x18\x01 \x01(\v2\r.v1.PublicKeyR\tpublicKey\x122\n" +
|
||||
"\vinstance_id\x18\x02 \x01(\v2\x11.v1.SignedMessageR\n" +
|
||||
"instanceId\"\xec\x11\n" +
|
||||
"instanceId\"\xc8\x10\n" +
|
||||
"\x0eSyncStreamItem\x12:\n" +
|
||||
"\x0esigned_message\x18\x01 \x01(\v2\x11.v1.SignedMessageH\x00R\rsignedMessage\x12J\n" +
|
||||
"\thandshake\x18\x03 \x01(\v2*.v1sync.SyncStreamItem.SyncActionHandshakeH\x00R\thandshake\x12J\n" +
|
||||
"\theartbeat\x18\x04 \x01(\v2*.v1sync.SyncStreamItem.SyncActionHeartbeatH\x00R\theartbeat\x12Z\n" +
|
||||
"\x0fdiff_operations\x18\x14 \x01(\v2/.v1sync.SyncStreamItem.SyncActionDiffOperationsH\x00R\x0ediffOperations\x12Z\n" +
|
||||
"\theartbeat\x18\x04 \x01(\v2*.v1sync.SyncStreamItem.SyncActionHeartbeatH\x00R\theartbeat\x12c\n" +
|
||||
"\x12request_operations\x18\x14 \x01(\v22.v1sync.SyncStreamItem.SyncActionRequestOperationsH\x00R\x11requestOperations\x12Z\n" +
|
||||
"\x0fsend_operations\x18\x15 \x01(\v2/.v1sync.SyncStreamItem.SyncActionSendOperationsH\x00R\x0esendOperations\x12N\n" +
|
||||
"\vsend_config\x18\x16 \x01(\v2+.v1sync.SyncStreamItem.SyncActionSendConfigH\x00R\n" +
|
||||
"sendConfig\x12K\n" +
|
||||
@@ -1725,12 +1698,9 @@ const file_v1sync_syncservice_proto_rawDesc = "" +
|
||||
"\x05repos\x18\x01 \x03(\v2\x14.v1sync.RepoMetadataR\x05repos\x12*\n" +
|
||||
"\x05plans\x18\x02 \x03(\v2\x14.v1sync.PlanMetadataR\x05plans\x1a0\n" +
|
||||
"\x15SyncActionConnectRepo\x12\x17\n" +
|
||||
"\arepo_id\x18\x01 \x01(\tR\x06repoId\x1a\xf5\x01\n" +
|
||||
"\x18SyncActionDiffOperations\x12H\n" +
|
||||
"\x18have_operations_selector\x18\x01 \x01(\v2\x0e.v1.OpSelectorR\x16haveOperationsSelector\x12,\n" +
|
||||
"\x12have_operation_ids\x18\x02 \x03(\x03R\x10haveOperationIds\x122\n" +
|
||||
"\x15have_operation_modnos\x18\x03 \x03(\x03R\x13haveOperationModnos\x12-\n" +
|
||||
"\x12request_operations\x18\x04 \x03(\x03R\x11requestOperations\x1aD\n" +
|
||||
"\arepo_id\x18\x01 \x01(\tR\x06repoId\x1aI\n" +
|
||||
"\x1bSyncActionRequestOperations\x12*\n" +
|
||||
"\bselector\x18\x01 \x01(\v2\x0e.v1.OpSelectorR\bselector\x1aD\n" +
|
||||
"\x18SyncActionSendOperations\x12(\n" +
|
||||
"\x05event\x18\x01 \x01(\v2\x12.v1.OperationEventR\x05event\x1a)\n" +
|
||||
"\x10SyncActionGetLog\x12\x15\n" +
|
||||
@@ -1783,38 +1753,38 @@ func file_v1sync_syncservice_proto_rawDescGZIP() []byte {
|
||||
var file_v1sync_syncservice_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
|
||||
var file_v1sync_syncservice_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
|
||||
var file_v1sync_syncservice_proto_goTypes = []any{
|
||||
(ConnectionState)(0), // 0: v1sync.ConnectionState
|
||||
(SyncStreamItem_RepoConnectionState)(0), // 1: v1sync.SyncStreamItem.RepoConnectionState
|
||||
(*SyncStateStreamRequest)(nil), // 2: v1sync.SyncStateStreamRequest
|
||||
(*PeerState)(nil), // 3: v1sync.PeerState
|
||||
(*AuthenticateRequest)(nil), // 4: v1sync.AuthenticateRequest
|
||||
(*GetOperationMetadataResponse)(nil), // 5: v1sync.GetOperationMetadataResponse
|
||||
(*LogDataEntry)(nil), // 6: v1sync.LogDataEntry
|
||||
(*SetAvailableResourcesRequest)(nil), // 7: v1sync.SetAvailableResourcesRequest
|
||||
(*RepoMetadata)(nil), // 8: v1sync.RepoMetadata
|
||||
(*PlanMetadata)(nil), // 9: v1sync.PlanMetadata
|
||||
(*SetConfigRequest)(nil), // 10: v1sync.SetConfigRequest
|
||||
(*RemoteConfig)(nil), // 11: v1sync.RemoteConfig
|
||||
(*AuthorizationToken)(nil), // 12: v1sync.AuthorizationToken
|
||||
(*SyncStreamItem)(nil), // 13: v1sync.SyncStreamItem
|
||||
(*SyncStreamItem_SyncActionHandshake)(nil), // 14: v1sync.SyncStreamItem.SyncActionHandshake
|
||||
(*SyncStreamItem_SyncActionHeartbeat)(nil), // 15: v1sync.SyncStreamItem.SyncActionHeartbeat
|
||||
(*SyncStreamItem_SyncActionSendConfig)(nil), // 16: v1sync.SyncStreamItem.SyncActionSendConfig
|
||||
(*SyncStreamItem_SyncActionSetConfig)(nil), // 17: v1sync.SyncStreamItem.SyncActionSetConfig
|
||||
(*SyncStreamItem_SyncActionListResources)(nil), // 18: v1sync.SyncStreamItem.SyncActionListResources
|
||||
(*SyncStreamItem_SyncActionConnectRepo)(nil), // 19: v1sync.SyncStreamItem.SyncActionConnectRepo
|
||||
(*SyncStreamItem_SyncActionDiffOperations)(nil), // 20: v1sync.SyncStreamItem.SyncActionDiffOperations
|
||||
(*SyncStreamItem_SyncActionSendOperations)(nil), // 21: v1sync.SyncStreamItem.SyncActionSendOperations
|
||||
(*SyncStreamItem_SyncActionGetLog)(nil), // 22: v1sync.SyncStreamItem.SyncActionGetLog
|
||||
(*SyncStreamItem_SyncActionSendLogData)(nil), // 23: v1sync.SyncStreamItem.SyncActionSendLogData
|
||||
(*SyncStreamItem_SyncActionThrottle)(nil), // 24: v1sync.SyncStreamItem.SyncActionThrottle
|
||||
(*SyncStreamItem_SyncEstablishSharedSecret)(nil), // 25: v1sync.SyncStreamItem.SyncEstablishSharedSecret
|
||||
(*v1.SignedMessage)(nil), // 26: v1.SignedMessage
|
||||
(*v1.Plan)(nil), // 27: v1.Plan
|
||||
(*v1.Repo)(nil), // 28: v1.Repo
|
||||
(*v1.PublicKey)(nil), // 29: v1.PublicKey
|
||||
(*v1.OpSelector)(nil), // 30: v1.OpSelector
|
||||
(*v1.OperationEvent)(nil), // 31: v1.OperationEvent
|
||||
(ConnectionState)(0), // 0: v1sync.ConnectionState
|
||||
(SyncStreamItem_RepoConnectionState)(0), // 1: v1sync.SyncStreamItem.RepoConnectionState
|
||||
(*SyncStateStreamRequest)(nil), // 2: v1sync.SyncStateStreamRequest
|
||||
(*PeerState)(nil), // 3: v1sync.PeerState
|
||||
(*AuthenticateRequest)(nil), // 4: v1sync.AuthenticateRequest
|
||||
(*GetOperationMetadataResponse)(nil), // 5: v1sync.GetOperationMetadataResponse
|
||||
(*LogDataEntry)(nil), // 6: v1sync.LogDataEntry
|
||||
(*SetAvailableResourcesRequest)(nil), // 7: v1sync.SetAvailableResourcesRequest
|
||||
(*RepoMetadata)(nil), // 8: v1sync.RepoMetadata
|
||||
(*PlanMetadata)(nil), // 9: v1sync.PlanMetadata
|
||||
(*SetConfigRequest)(nil), // 10: v1sync.SetConfigRequest
|
||||
(*RemoteConfig)(nil), // 11: v1sync.RemoteConfig
|
||||
(*AuthorizationToken)(nil), // 12: v1sync.AuthorizationToken
|
||||
(*SyncStreamItem)(nil), // 13: v1sync.SyncStreamItem
|
||||
(*SyncStreamItem_SyncActionHandshake)(nil), // 14: v1sync.SyncStreamItem.SyncActionHandshake
|
||||
(*SyncStreamItem_SyncActionHeartbeat)(nil), // 15: v1sync.SyncStreamItem.SyncActionHeartbeat
|
||||
(*SyncStreamItem_SyncActionSendConfig)(nil), // 16: v1sync.SyncStreamItem.SyncActionSendConfig
|
||||
(*SyncStreamItem_SyncActionSetConfig)(nil), // 17: v1sync.SyncStreamItem.SyncActionSetConfig
|
||||
(*SyncStreamItem_SyncActionListResources)(nil), // 18: v1sync.SyncStreamItem.SyncActionListResources
|
||||
(*SyncStreamItem_SyncActionConnectRepo)(nil), // 19: v1sync.SyncStreamItem.SyncActionConnectRepo
|
||||
(*SyncStreamItem_SyncActionRequestOperations)(nil), // 20: v1sync.SyncStreamItem.SyncActionRequestOperations
|
||||
(*SyncStreamItem_SyncActionSendOperations)(nil), // 21: v1sync.SyncStreamItem.SyncActionSendOperations
|
||||
(*SyncStreamItem_SyncActionGetLog)(nil), // 22: v1sync.SyncStreamItem.SyncActionGetLog
|
||||
(*SyncStreamItem_SyncActionSendLogData)(nil), // 23: v1sync.SyncStreamItem.SyncActionSendLogData
|
||||
(*SyncStreamItem_SyncActionThrottle)(nil), // 24: v1sync.SyncStreamItem.SyncActionThrottle
|
||||
(*SyncStreamItem_SyncEstablishSharedSecret)(nil), // 25: v1sync.SyncStreamItem.SyncEstablishSharedSecret
|
||||
(*v1.SignedMessage)(nil), // 26: v1.SignedMessage
|
||||
(*v1.Plan)(nil), // 27: v1.Plan
|
||||
(*v1.Repo)(nil), // 28: v1.Repo
|
||||
(*v1.PublicKey)(nil), // 29: v1.PublicKey
|
||||
(*v1.OpSelector)(nil), // 30: v1.OpSelector
|
||||
(*v1.OperationEvent)(nil), // 31: v1.OperationEvent
|
||||
}
|
||||
var file_v1sync_syncservice_proto_depIdxs = []int32{
|
||||
0, // 0: v1sync.PeerState.state:type_name -> v1sync.ConnectionState
|
||||
@@ -1833,7 +1803,7 @@ var file_v1sync_syncservice_proto_depIdxs = []int32{
|
||||
26, // 13: v1sync.SyncStreamItem.signed_message:type_name -> v1.SignedMessage
|
||||
14, // 14: v1sync.SyncStreamItem.handshake:type_name -> v1sync.SyncStreamItem.SyncActionHandshake
|
||||
15, // 15: v1sync.SyncStreamItem.heartbeat:type_name -> v1sync.SyncStreamItem.SyncActionHeartbeat
|
||||
20, // 16: v1sync.SyncStreamItem.diff_operations:type_name -> v1sync.SyncStreamItem.SyncActionDiffOperations
|
||||
20, // 16: v1sync.SyncStreamItem.request_operations:type_name -> v1sync.SyncStreamItem.SyncActionRequestOperations
|
||||
21, // 17: v1sync.SyncStreamItem.send_operations:type_name -> v1sync.SyncStreamItem.SyncActionSendOperations
|
||||
16, // 18: v1sync.SyncStreamItem.send_config:type_name -> v1sync.SyncStreamItem.SyncActionSendConfig
|
||||
17, // 19: v1sync.SyncStreamItem.set_config:type_name -> v1sync.SyncStreamItem.SyncActionSetConfig
|
||||
@@ -1848,7 +1818,7 @@ var file_v1sync_syncservice_proto_depIdxs = []int32{
|
||||
27, // 28: v1sync.SyncStreamItem.SyncActionSetConfig.plans:type_name -> v1.Plan
|
||||
8, // 29: v1sync.SyncStreamItem.SyncActionListResources.repos:type_name -> v1sync.RepoMetadata
|
||||
9, // 30: v1sync.SyncStreamItem.SyncActionListResources.plans:type_name -> v1sync.PlanMetadata
|
||||
30, // 31: v1sync.SyncStreamItem.SyncActionDiffOperations.have_operations_selector:type_name -> v1.OpSelector
|
||||
30, // 31: v1sync.SyncStreamItem.SyncActionRequestOperations.selector:type_name -> v1.OpSelector
|
||||
31, // 32: v1sync.SyncStreamItem.SyncActionSendOperations.event:type_name -> v1.OperationEvent
|
||||
13, // 33: v1sync.BackrestSyncService.Sync:input_type -> v1sync.SyncStreamItem
|
||||
2, // 34: v1sync.BackrestSyncStateService.GetPeerSyncStatesStream:input_type -> v1sync.SyncStateStreamRequest
|
||||
@@ -1870,7 +1840,7 @@ func file_v1sync_syncservice_proto_init() {
|
||||
(*SyncStreamItem_SignedMessage)(nil),
|
||||
(*SyncStreamItem_Handshake)(nil),
|
||||
(*SyncStreamItem_Heartbeat)(nil),
|
||||
(*SyncStreamItem_DiffOperations)(nil),
|
||||
(*SyncStreamItem_RequestOperations)(nil),
|
||||
(*SyncStreamItem_SendOperations)(nil),
|
||||
(*SyncStreamItem_SendConfig)(nil),
|
||||
(*SyncStreamItem_SetConfig)(nil),
|
||||
|
||||
@@ -5,11 +5,15 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"slices"
|
||||
"sync"
|
||||
"time"
|
||||
"unique"
|
||||
|
||||
v1 "github.com/garethgeorge/backrest/gen/go/v1"
|
||||
"github.com/garethgeorge/backrest/gen/go/v1sync"
|
||||
"github.com/garethgeorge/backrest/internal/cryptoutil"
|
||||
"github.com/garethgeorge/backrest/internal/oplog"
|
||||
lru "github.com/hashicorp/golang-lru/v2"
|
||||
)
|
||||
|
||||
func runSync(
|
||||
@@ -202,7 +206,7 @@ func sendHeartbeats(ctx context.Context, stream *bidiSyncCommandStream, interval
|
||||
type syncSessionHandler interface {
|
||||
OnConnectionEstablished(ctx context.Context, stream *bidiSyncCommandStream, peer *v1.Multihost_Peer) error
|
||||
HandleHeartbeat(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionHeartbeat) error
|
||||
HandleDiffOperations(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionDiffOperations) error
|
||||
HandleRequestOperations(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionRequestOperations) error
|
||||
HandleSendOperations(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionSendOperations) error
|
||||
HandleSendConfig(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionSendConfig) error
|
||||
HandleSetConfig(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionSetConfig) error
|
||||
@@ -212,6 +216,8 @@ type syncSessionHandler interface {
|
||||
|
||||
type unimplementedSyncSessionHandler struct{}
|
||||
|
||||
var _ syncSessionHandler = (*unimplementedSyncSessionHandler)(nil)
|
||||
|
||||
func (h *unimplementedSyncSessionHandler) OnConnectionEstablished(ctx context.Context, stream *bidiSyncCommandStream, peer *v1.Multihost_Peer) error {
|
||||
return NewSyncErrorProtocol(fmt.Errorf("OnConnectionEstablished not implemented"))
|
||||
}
|
||||
@@ -220,14 +226,14 @@ func (h *unimplementedSyncSessionHandler) HandleHeartbeat(ctx context.Context, s
|
||||
return NewSyncErrorProtocol(fmt.Errorf("HandleHeartbeat not implemented"))
|
||||
}
|
||||
|
||||
func (h *unimplementedSyncSessionHandler) HandleDiffOperations(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionDiffOperations) error {
|
||||
return NewSyncErrorProtocol(fmt.Errorf("HandleDiffOperations not implemented"))
|
||||
}
|
||||
|
||||
func (h *unimplementedSyncSessionHandler) HandleSendOperations(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionSendOperations) error {
|
||||
return NewSyncErrorProtocol(fmt.Errorf("HandleSendOperations not implemented"))
|
||||
}
|
||||
|
||||
func (h *unimplementedSyncSessionHandler) HandleRequestOperations(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionRequestOperations) error {
|
||||
return NewSyncErrorProtocol(fmt.Errorf("HandleRequestOperations not implemented"))
|
||||
}
|
||||
|
||||
func (h *unimplementedSyncSessionHandler) HandleSendConfig(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionSendConfig) error {
|
||||
return NewSyncErrorProtocol(fmt.Errorf("HandleSendConfig not implemented"))
|
||||
}
|
||||
@@ -243,3 +249,87 @@ func (h *unimplementedSyncSessionHandler) HandleListResources(ctx context.Contex
|
||||
func (h *unimplementedSyncSessionHandler) HandleThrottle(ctx context.Context, stream *bidiSyncCommandStream, item *v1sync.SyncStreamItem_SyncActionThrottle) error {
|
||||
return NewSyncErrorProtocol(fmt.Errorf("HandleThrottle not implemented"))
|
||||
}
|
||||
|
||||
type remoteOpIdCacheKey struct {
|
||||
OriginalInstanceKeyid unique.Handle[string]
|
||||
ID int64
|
||||
}
|
||||
|
||||
// operationIdMapper
|
||||
type remoteOpIdMapper struct {
|
||||
oplog oplog.OpLog
|
||||
|
||||
opCacheMu sync.Mutex
|
||||
opIDLru *lru.Cache[remoteOpIdCacheKey, int64]
|
||||
flowIDLru *lru.Cache[remoteOpIdCacheKey, int64]
|
||||
}
|
||||
|
||||
// translateSingleID translates a single ID (either opID or flowID) using the provided cache and query
|
||||
func (sh *remoteOpIdMapper) translateSingleID(
|
||||
originalInstanceKeyid string,
|
||||
originalID int64,
|
||||
cache *lru.Cache[remoteOpIdCacheKey, int64],
|
||||
query oplog.Query,
|
||||
) (int64, error) {
|
||||
if originalID == 0 {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
cacheKey := remoteOpIdCacheKey{
|
||||
OriginalInstanceKeyid: unique.Make(originalInstanceKeyid),
|
||||
ID: originalID,
|
||||
}
|
||||
|
||||
// Check cache first
|
||||
if translatedID, ok := cache.Get(cacheKey); ok {
|
||||
return translatedID, nil
|
||||
}
|
||||
|
||||
// Cache miss - query the database
|
||||
op, err := sh.oplog.FindOneMetadata(query)
|
||||
if err != nil {
|
||||
if errors.Is(err, oplog.ErrNoResults) {
|
||||
return 0, nil // No results means the ID is not found
|
||||
}
|
||||
return 0, err // Other errors should be propagated
|
||||
}
|
||||
|
||||
// Cache the result and return
|
||||
translatedID := op.FlowID
|
||||
cache.Add(cacheKey, translatedID)
|
||||
return translatedID, nil
|
||||
}
|
||||
|
||||
func (om *remoteOpIdMapper) TranslateOpIdAndFlowID(originalInstanceKeyid string, originalOpId int64, originalFlowId int64) (int64, int64, error) {
|
||||
om.opCacheMu.Lock()
|
||||
defer om.opCacheMu.Unlock()
|
||||
|
||||
// Translate opID
|
||||
opID, err := om.translateSingleID(
|
||||
originalInstanceKeyid,
|
||||
originalOpId,
|
||||
om.opIDLru,
|
||||
oplog.Query{
|
||||
OriginalInstanceKeyid: &originalInstanceKeyid,
|
||||
OriginalID: &originalOpId,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return 0, 0, err
|
||||
}
|
||||
|
||||
// Translate flowID
|
||||
flowID, err := om.translateSingleID(
|
||||
originalInstanceKeyid,
|
||||
originalFlowId,
|
||||
om.flowIDLru,
|
||||
oplog.Query{
|
||||
OriginalInstanceKeyid: &originalInstanceKeyid,
|
||||
OriginalFlowID: &originalFlowId,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return 0, 0, err
|
||||
}
|
||||
return opID, flowID, nil
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ type Query struct {
|
||||
OriginalInstanceKeyid *string
|
||||
OriginalID *int64
|
||||
OriginalFlowID *int64
|
||||
ModnoGte *int64
|
||||
|
||||
// Pagination
|
||||
Limit int
|
||||
@@ -68,6 +69,11 @@ func (q Query) SetOriginalFlowID(originalFlowID int64) Query {
|
||||
return q
|
||||
}
|
||||
|
||||
func (q Query) SetModnoGte(modnoGte int64) Query {
|
||||
q.ModnoGte = &modnoGte
|
||||
return q
|
||||
}
|
||||
|
||||
func (q Query) SetLimit(limit int) Query {
|
||||
q.Limit = limit
|
||||
return q
|
||||
@@ -130,5 +136,9 @@ func (q *Query) Match(op *v1.Operation) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
if q.ModnoGte != nil && op.Modno < *q.ModnoGte {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -217,6 +217,10 @@ func (m *SqliteStore) buildQueryWhereClause(q oplog.Query, includeSelectClauses
|
||||
query = append(query, " AND operations.original_flow_id = ?")
|
||||
args = append(args, *q.OriginalFlowID)
|
||||
}
|
||||
if q.ModnoGte != nil {
|
||||
query = append(query, " AND operations.modno >= ?")
|
||||
args = append(args, *q.ModnoGte)
|
||||
}
|
||||
if q.OpIDs != nil {
|
||||
query = append(query, " AND operations.id IN (")
|
||||
for i, id := range q.OpIDs {
|
||||
|
||||
@@ -335,6 +335,11 @@ func TestListOperation(t *testing.T) {
|
||||
"foo-op",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "list modno gte",
|
||||
query: oplog.Query{}.SetModnoGte(3),
|
||||
expected: []string{"op3", "foo-op"},
|
||||
},
|
||||
}
|
||||
|
||||
for name, store := range StoresForTest(t) {
|
||||
|
||||
@@ -73,6 +73,7 @@ message OpSelector {
|
||||
optional string plan_id = 3;
|
||||
optional string snapshot_id = 4;
|
||||
optional int64 flow_id = 5;
|
||||
optional int64 modno_gte = 9;
|
||||
}
|
||||
|
||||
message DoRepoTaskRequest {
|
||||
|
||||
@@ -112,7 +112,7 @@ message SyncStreamItem {
|
||||
SyncActionHandshake handshake = 3; // note: mostly deprecated, sent through headers rather than stream.
|
||||
SyncActionHeartbeat heartbeat = 4;
|
||||
|
||||
SyncActionDiffOperations diff_operations = 20;
|
||||
SyncActionRequestOperations request_operations = 20;
|
||||
SyncActionSendOperations send_operations = 21;
|
||||
SyncActionSendConfig send_config = 22;
|
||||
SyncActionSetConfig set_config = 24;
|
||||
@@ -160,14 +160,8 @@ message SyncStreamItem {
|
||||
CONNECTION_STATE_NOT_FOUND = 4;
|
||||
}
|
||||
|
||||
message SyncActionDiffOperations {
|
||||
// Client connects and sends a list of "have_operations" that exist in its log.
|
||||
// have_operation_ids and have_operation_modnos are the operation IDs and modnos that the client has when zip'd pairwise.
|
||||
v1.OpSelector have_operations_selector = 1;
|
||||
repeated int64 have_operation_ids = 2;
|
||||
repeated int64 have_operation_modnos = 3;
|
||||
// Server sends a list of "request_operations" for any operations that it doesn't have.
|
||||
repeated int64 request_operations = 4;
|
||||
message SyncActionRequestOperations {
|
||||
v1.OpSelector selector = 1;
|
||||
}
|
||||
|
||||
message SyncActionSendOperations {
|
||||
|
||||
@@ -21,7 +21,7 @@ import type { Message } from "@bufbuild/protobuf";
|
||||
* Describes the file v1/service.proto.
|
||||
*/
|
||||
export const file_v1_service: GenFile = /*@__PURE__*/
|
||||
fileDesc("ChB2MS9zZXJ2aWNlLnByb3RvEgJ2MSKZAgoKT3BTZWxlY3RvchILCgNpZHMYASADKAMSGAoLaW5zdGFuY2VfaWQYBiABKAlIAIgBARIkChdvcmlnaW5hbF9pbnN0YW5jZV9rZXlpZBgIIAEoCUgBiAEBEhYKCXJlcG9fZ3VpZBgHIAEoCUgCiAEBEhQKB3BsYW5faWQYAyABKAlIA4gBARIYCgtzbmFwc2hvdF9pZBgEIAEoCUgEiAEBEhQKB2Zsb3dfaWQYBSABKANIBYgBAUIOCgxfaW5zdGFuY2VfaWRCGgoYX29yaWdpbmFsX2luc3RhbmNlX2tleWlkQgwKCl9yZXBvX2d1aWRCCgoIX3BsYW5faWRCDgoMX3NuYXBzaG90X2lkQgoKCF9mbG93X2lkIsABChFEb1JlcG9UYXNrUmVxdWVzdBIPCgdyZXBvX2lkGAEgASgJEigKBHRhc2sYAiABKA4yGi52MS5Eb1JlcG9UYXNrUmVxdWVzdC5UYXNrInAKBFRhc2sSDQoJVEFTS19OT05FEAASGAoUVEFTS19JTkRFWF9TTkFQU0hPVFMQARIOCgpUQVNLX1BSVU5FEAISDgoKVEFTS19DSEVDSxADEg4KClRBU0tfU1RBVFMQBBIPCgtUQVNLX1VOTE9DSxAFIkwKE0NsZWFySGlzdG9yeVJlcXVlc3QSIAoIc2VsZWN0b3IYASABKAsyDi52MS5PcFNlbGVjdG9yEhMKC29ubHlfZmFpbGVkGAIgASgIIkYKDUZvcmdldFJlcXVlc3QSDwoHcmVwb19pZBgBIAEoCRIPCgdwbGFuX2lkGAIgASgJEhMKC3NuYXBzaG90X2lkGAMgASgJIjgKFExpc3RTbmFwc2hvdHNSZXF1ZXN0Eg8KB3JlcG9faWQYASABKAkSDwoHcGxhbl9pZBgCIAEoCSJIChRHZXRPcGVyYXRpb25zUmVxdWVzdBIgCghzZWxlY3RvchgBIAEoCzIOLnYxLk9wU2VsZWN0b3ISDgoGbGFzdF9uGAIgASgDIm0KFlJlc3RvcmVTbmFwc2hvdFJlcXVlc3QSDwoHcGxhbl9pZBgBIAEoCRIPCgdyZXBvX2lkGAUgASgJEhMKC3NuYXBzaG90X2lkGAIgASgJEgwKBHBhdGgYAyABKAkSDgoGdGFyZ2V0GAQgASgJIk4KGExpc3RTbmFwc2hvdEZpbGVzUmVxdWVzdBIPCgdyZXBvX2lkGAEgASgJEhMKC3NuYXBzaG90X2lkGAIgASgJEgwKBHBhdGgYAyABKAkiRwoZTGlzdFNuYXBzaG90RmlsZXNSZXNwb25zZRIMCgRwYXRoGAEgASgJEhwKB2VudHJpZXMYAiADKAsyCy52MS5Mc0VudHJ5Ih0KDkxvZ0RhdGFSZXF1ZXN0EgsKA3JlZhgBIAEoCSKWAQoHTHNFbnRyeRIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSDAoEcGF0aBgDIAEoCRILCgN1aWQYBCABKAMSCwoDZ2lkGAUgASgDEgwKBHNpemUYBiABKAMSDAoEbW9kZRgHIAEoAxINCgVtdGltZRgIIAEoCRINCgVhdGltZRgJIAEoCRINCgVjdGltZRgKIAEoCSI1ChFSdW5Db21tYW5kUmVxdWVzdBIPCgdyZXBvX2lkGAEgASgJEg8KB2NvbW1hbmQYAiABKAkitQUKGFN1bW1hcnlEYXNoYm9hcmRSZXNwb25zZRI8Cg5yZXBvX3N1bW1hcmllcxgBIAMoCzIkLnYxLlN1bW1hcnlEYXNoYm9hcmRSZXNwb25zZS5TdW1tYXJ5EjwKDnBsYW5fc3VtbWFyaWVzGAIgAygLMiQudjEuU3VtbWFyeURhc2hib2FyZFJlc3BvbnNlLlN1bW1hcnkSEwoLY29uZmlnX3BhdGgYCiABKAkSEQoJZGF0YV9wYXRoGAsgASgJGu4CCgdTdW1tYXJ5EgoKAmlkGAEgASgJEh0KFWJhY2t1cHNfZmFpbGVkXzMwZGF5cxgCIAEoAxIjChtiYWNrdXBzX3dhcm5pbmdfbGFzdF8zMGRheXMYAyABKAMSIwobYmFja3Vwc19zdWNjZXNzX2xhc3RfMzBkYXlzGAQgASgDEiEKGWJ5dGVzX3NjYW5uZWRfbGFzdF8zMGRheXMYBSABKAMSHwoXYnl0ZXNfYWRkZWRfbGFzdF8zMGRheXMYBiABKAMSFwoPdG90YWxfc25hcHNob3RzGAcgASgDEhkKEWJ5dGVzX3NjYW5uZWRfYXZnGAggASgDEhcKD2J5dGVzX2FkZGVkX2F2ZxgJIAEoAxIbChNuZXh0X2JhY2t1cF90aW1lX21zGAogASgDEkAKDnJlY2VudF9iYWNrdXBzGAsgASgLMigudjEuU3VtbWFyeURhc2hib2FyZFJlc3BvbnNlLkJhY2t1cENoYXJ0GoMBCgtCYWNrdXBDaGFydBIPCgdmbG93X2lkGAEgAygDEhQKDHRpbWVzdGFtcF9tcxgCIAMoAxITCgtkdXJhdGlvbl9tcxgDIAMoAxIjCgZzdGF0dXMYBCADKA4yEy52MS5PcGVyYXRpb25TdGF0dXMSEwoLYnl0ZXNfYWRkZWQYBSADKAMypwkKCEJhY2tyZXN0EjEKCUdldENvbmZpZxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoKLnYxLkNvbmZpZyIAEiUKCVNldENvbmZpZxIKLnYxLkNvbmZpZxoKLnYxLkNvbmZpZyIAEi8KD0NoZWNrUmVwb0V4aXN0cxIILnYxLlJlcG8aEC50eXBlcy5Cb29sVmFsdWUiABIhCgdBZGRSZXBvEggudjEuUmVwbxoKLnYxLkNvbmZpZyIAEi4KClJlbW92ZVJlcG8SEi50eXBlcy5TdHJpbmdWYWx1ZRoKLnYxLkNvbmZpZyIAEkQKEkdldE9wZXJhdGlvbkV2ZW50cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoSLnYxLk9wZXJhdGlvbkV2ZW50IgAwARI+Cg1HZXRPcGVyYXRpb25zEhgudjEuR2V0T3BlcmF0aW9uc1JlcXVlc3QaES52MS5PcGVyYXRpb25MaXN0IgASQwoNTGlzdFNuYXBzaG90cxIYLnYxLkxpc3RTbmFwc2hvdHNSZXF1ZXN0GhYudjEuUmVzdGljU25hcHNob3RMaXN0IgASUgoRTGlzdFNuYXBzaG90RmlsZXMSHC52MS5MaXN0U25hcHNob3RGaWxlc1JlcXVlc3QaHS52MS5MaXN0U25hcHNob3RGaWxlc1Jlc3BvbnNlIgASNgoGQmFja3VwEhIudHlwZXMuU3RyaW5nVmFsdWUaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiABI9CgpEb1JlcG9UYXNrEhUudjEuRG9SZXBvVGFza1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiABI1CgZGb3JnZXQSES52MS5Gb3JnZXRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IgASPwoHUmVzdG9yZRIaLnYxLlJlc3RvcmVTbmFwc2hvdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiABI1CgZDYW5jZWwSES50eXBlcy5JbnQ2NFZhbHVlGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IgASNAoHR2V0TG9ncxISLnYxLkxvZ0RhdGFSZXF1ZXN0GhEudHlwZXMuQnl0ZXNWYWx1ZSIAMAESOAoKUnVuQ29tbWFuZBIVLnYxLlJ1bkNvbW1hbmRSZXF1ZXN0GhEudHlwZXMuSW50NjRWYWx1ZSIAEjkKDkdldERvd25sb2FkVVJMEhEudHlwZXMuSW50NjRWYWx1ZRoSLnR5cGVzLlN0cmluZ1ZhbHVlIgASQQoMQ2xlYXJIaXN0b3J5EhcudjEuQ2xlYXJIaXN0b3J5UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIAEjsKEFBhdGhBdXRvY29tcGxldGUSEi50eXBlcy5TdHJpbmdWYWx1ZRoRLnR5cGVzLlN0cmluZ0xpc3QiABJNChNHZXRTdW1tYXJ5RGFzaGJvYXJkEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhwudjEuU3VtbWFyeURhc2hib2FyZFJlc3BvbnNlIgBCLFoqZ2l0aHViLmNvbS9nYXJldGhnZW9yZ2UvYmFja3Jlc3QvZ2VuL2dvL3YxYgZwcm90bzM", [file_v1_config, file_v1_restic, file_v1_operations, file_types_value, file_google_protobuf_empty, file_google_api_annotations]);
|
||||
fileDesc("ChB2MS9zZXJ2aWNlLnByb3RvEgJ2MSK/AgoKT3BTZWxlY3RvchILCgNpZHMYASADKAMSGAoLaW5zdGFuY2VfaWQYBiABKAlIAIgBARIkChdvcmlnaW5hbF9pbnN0YW5jZV9rZXlpZBgIIAEoCUgBiAEBEhYKCXJlcG9fZ3VpZBgHIAEoCUgCiAEBEhQKB3BsYW5faWQYAyABKAlIA4gBARIYCgtzbmFwc2hvdF9pZBgEIAEoCUgEiAEBEhQKB2Zsb3dfaWQYBSABKANIBYgBARIWCgltb2Rub19ndGUYCSABKANIBogBAUIOCgxfaW5zdGFuY2VfaWRCGgoYX29yaWdpbmFsX2luc3RhbmNlX2tleWlkQgwKCl9yZXBvX2d1aWRCCgoIX3BsYW5faWRCDgoMX3NuYXBzaG90X2lkQgoKCF9mbG93X2lkQgwKCl9tb2Rub19ndGUiwAEKEURvUmVwb1Rhc2tSZXF1ZXN0Eg8KB3JlcG9faWQYASABKAkSKAoEdGFzaxgCIAEoDjIaLnYxLkRvUmVwb1Rhc2tSZXF1ZXN0LlRhc2sicAoEVGFzaxINCglUQVNLX05PTkUQABIYChRUQVNLX0lOREVYX1NOQVBTSE9UUxABEg4KClRBU0tfUFJVTkUQAhIOCgpUQVNLX0NIRUNLEAMSDgoKVEFTS19TVEFUUxAEEg8KC1RBU0tfVU5MT0NLEAUiTAoTQ2xlYXJIaXN0b3J5UmVxdWVzdBIgCghzZWxlY3RvchgBIAEoCzIOLnYxLk9wU2VsZWN0b3ISEwoLb25seV9mYWlsZWQYAiABKAgiRgoNRm9yZ2V0UmVxdWVzdBIPCgdyZXBvX2lkGAEgASgJEg8KB3BsYW5faWQYAiABKAkSEwoLc25hcHNob3RfaWQYAyABKAkiOAoUTGlzdFNuYXBzaG90c1JlcXVlc3QSDwoHcmVwb19pZBgBIAEoCRIPCgdwbGFuX2lkGAIgASgJIkgKFEdldE9wZXJhdGlvbnNSZXF1ZXN0EiAKCHNlbGVjdG9yGAEgASgLMg4udjEuT3BTZWxlY3RvchIOCgZsYXN0X24YAiABKAMibQoWUmVzdG9yZVNuYXBzaG90UmVxdWVzdBIPCgdwbGFuX2lkGAEgASgJEg8KB3JlcG9faWQYBSABKAkSEwoLc25hcHNob3RfaWQYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZ0YXJnZXQYBCABKAkiTgoYTGlzdFNuYXBzaG90RmlsZXNSZXF1ZXN0Eg8KB3JlcG9faWQYASABKAkSEwoLc25hcHNob3RfaWQYAiABKAkSDAoEcGF0aBgDIAEoCSJHChlMaXN0U25hcHNob3RGaWxlc1Jlc3BvbnNlEgwKBHBhdGgYASABKAkSHAoHZW50cmllcxgCIAMoCzILLnYxLkxzRW50cnkiHQoOTG9nRGF0YVJlcXVlc3QSCwoDcmVmGAEgASgJIpYBCgdMc0VudHJ5EgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIMCgRwYXRoGAMgASgJEgsKA3VpZBgEIAEoAxILCgNnaWQYBSABKAMSDAoEc2l6ZRgGIAEoAxIMCgRtb2RlGAcgASgDEg0KBW10aW1lGAggASgJEg0KBWF0aW1lGAkgASgJEg0KBWN0aW1lGAogASgJIjUKEVJ1bkNvbW1hbmRSZXF1ZXN0Eg8KB3JlcG9faWQYASABKAkSDwoHY29tbWFuZBgCIAEoCSK1BQoYU3VtbWFyeURhc2hib2FyZFJlc3BvbnNlEjwKDnJlcG9fc3VtbWFyaWVzGAEgAygLMiQudjEuU3VtbWFyeURhc2hib2FyZFJlc3BvbnNlLlN1bW1hcnkSPAoOcGxhbl9zdW1tYXJpZXMYAiADKAsyJC52MS5TdW1tYXJ5RGFzaGJvYXJkUmVzcG9uc2UuU3VtbWFyeRITCgtjb25maWdfcGF0aBgKIAEoCRIRCglkYXRhX3BhdGgYCyABKAka7gIKB1N1bW1hcnkSCgoCaWQYASABKAkSHQoVYmFja3Vwc19mYWlsZWRfMzBkYXlzGAIgASgDEiMKG2JhY2t1cHNfd2FybmluZ19sYXN0XzMwZGF5cxgDIAEoAxIjChtiYWNrdXBzX3N1Y2Nlc3NfbGFzdF8zMGRheXMYBCABKAMSIQoZYnl0ZXNfc2Nhbm5lZF9sYXN0XzMwZGF5cxgFIAEoAxIfChdieXRlc19hZGRlZF9sYXN0XzMwZGF5cxgGIAEoAxIXCg90b3RhbF9zbmFwc2hvdHMYByABKAMSGQoRYnl0ZXNfc2Nhbm5lZF9hdmcYCCABKAMSFwoPYnl0ZXNfYWRkZWRfYXZnGAkgASgDEhsKE25leHRfYmFja3VwX3RpbWVfbXMYCiABKAMSQAoOcmVjZW50X2JhY2t1cHMYCyABKAsyKC52MS5TdW1tYXJ5RGFzaGJvYXJkUmVzcG9uc2UuQmFja3VwQ2hhcnQagwEKC0JhY2t1cENoYXJ0Eg8KB2Zsb3dfaWQYASADKAMSFAoMdGltZXN0YW1wX21zGAIgAygDEhMKC2R1cmF0aW9uX21zGAMgAygDEiMKBnN0YXR1cxgEIAMoDjITLnYxLk9wZXJhdGlvblN0YXR1cxITCgtieXRlc19hZGRlZBgFIAMoAzKnCQoIQmFja3Jlc3QSMQoJR2V0Q29uZmlnEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GgoudjEuQ29uZmlnIgASJQoJU2V0Q29uZmlnEgoudjEuQ29uZmlnGgoudjEuQ29uZmlnIgASLwoPQ2hlY2tSZXBvRXhpc3RzEggudjEuUmVwbxoQLnR5cGVzLkJvb2xWYWx1ZSIAEiEKB0FkZFJlcG8SCC52MS5SZXBvGgoudjEuQ29uZmlnIgASLgoKUmVtb3ZlUmVwbxISLnR5cGVzLlN0cmluZ1ZhbHVlGgoudjEuQ29uZmlnIgASRAoSR2V0T3BlcmF0aW9uRXZlbnRzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhIudjEuT3BlcmF0aW9uRXZlbnQiADABEj4KDUdldE9wZXJhdGlvbnMSGC52MS5HZXRPcGVyYXRpb25zUmVxdWVzdBoRLnYxLk9wZXJhdGlvbkxpc3QiABJDCg1MaXN0U25hcHNob3RzEhgudjEuTGlzdFNuYXBzaG90c1JlcXVlc3QaFi52MS5SZXN0aWNTbmFwc2hvdExpc3QiABJSChFMaXN0U25hcHNob3RGaWxlcxIcLnYxLkxpc3RTbmFwc2hvdEZpbGVzUmVxdWVzdBodLnYxLkxpc3RTbmFwc2hvdEZpbGVzUmVzcG9uc2UiABI2CgZCYWNrdXASEi50eXBlcy5TdHJpbmdWYWx1ZRoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIAEj0KCkRvUmVwb1Rhc2sSFS52MS5Eb1JlcG9UYXNrUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIAEjUKBkZvcmdldBIRLnYxLkZvcmdldFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiABI/CgdSZXN0b3JlEhoudjEuUmVzdG9yZVNuYXBzaG90UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIAEjUKBkNhbmNlbBIRLnR5cGVzLkludDY0VmFsdWUaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiABI0CgdHZXRMb2dzEhIudjEuTG9nRGF0YVJlcXVlc3QaES50eXBlcy5CeXRlc1ZhbHVlIgAwARI4CgpSdW5Db21tYW5kEhUudjEuUnVuQ29tbWFuZFJlcXVlc3QaES50eXBlcy5JbnQ2NFZhbHVlIgASOQoOR2V0RG93bmxvYWRVUkwSES50eXBlcy5JbnQ2NFZhbHVlGhIudHlwZXMuU3RyaW5nVmFsdWUiABJBCgxDbGVhckhpc3RvcnkSFy52MS5DbGVhckhpc3RvcnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IgASOwoQUGF0aEF1dG9jb21wbGV0ZRISLnR5cGVzLlN0cmluZ1ZhbHVlGhEudHlwZXMuU3RyaW5nTGlzdCIAEk0KE0dldFN1bW1hcnlEYXNoYm9hcmQSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaHC52MS5TdW1tYXJ5RGFzaGJvYXJkUmVzcG9uc2UiAEIsWipnaXRodWIuY29tL2dhcmV0aGdlb3JnZS9iYWNrcmVzdC9nZW4vZ28vdjFiBnByb3RvMw", [file_v1_config, file_v1_restic, file_v1_operations, file_types_value, file_google_protobuf_empty, file_google_api_annotations]);
|
||||
|
||||
/**
|
||||
* OpSelector is a message that can be used to select operations e.g. by query.
|
||||
@@ -63,6 +63,11 @@ export type OpSelector = Message<"v1.OpSelector"> & {
|
||||
* @generated from field: optional int64 flow_id = 5;
|
||||
*/
|
||||
flowId?: bigint;
|
||||
|
||||
/**
|
||||
* @generated from field: optional int64 modno_gte = 9;
|
||||
*/
|
||||
modnoGte?: bigint;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,7 +22,7 @@ import type { Message } from "@bufbuild/protobuf";
|
||||
* Describes the file v1sync/syncservice.proto.
|
||||
*/
|
||||
export const file_v1sync_syncservice: GenFile = /*@__PURE__*/
|
||||
fileDesc("Chh2MXN5bmMvc3luY3NlcnZpY2UucHJvdG8SBnYxc3luYyIrChZTeW5jU3RhdGVTdHJlYW1SZXF1ZXN0EhEKCXN1YnNjcmliZRgBIAEoCCKbAgoJUGVlclN0YXRlEhgKEHBlZXJfaW5zdGFuY2VfaWQYASABKAkSEgoKcGVlcl9rZXlpZBgCIAEoCRImCgVzdGF0ZRgDIAEoDjIXLnYxc3luYy5Db25uZWN0aW9uU3RhdGUSFgoOc3RhdHVzX21lc3NhZ2UYBCABKAkSKQoLa25vd25fcGxhbnMYBSADKAsyFC52MXN5bmMuUGxhbk1ldGFkYXRhEikKC2tub3duX3JlcG9zGAYgAygLMhQudjFzeW5jLlJlcG9NZXRhZGF0YRIrCg1yZW1vdGVfY29uZmlnGAcgASgLMhQudjFzeW5jLlJlbW90ZUNvbmZpZxIdChVsYXN0X2hlYXJ0YmVhdF9taWxsaXMYCCABKAMiPQoTQXV0aGVudGljYXRlUmVxdWVzdBImCgtpbnN0YW5jZV9pZBgBIAEoCzIRLnYxLlNpZ25lZE1lc3NhZ2UiPgocR2V0T3BlcmF0aW9uTWV0YWRhdGFSZXNwb25zZRIOCgZvcF9pZHMYASADKAMSDgoGbW9kbm9zGAIgAygDIl0KDExvZ0RhdGFFbnRyeRIOCgZsb2dfaWQYASABKAkSEgoKb3duZXJfb3BpZBgCIAEoAxIaChJleHBpcmF0aW9uX3RzX3VuaXgYAyABKAMSDQoFY2h1bmsYBCABKAwiaAocU2V0QXZhaWxhYmxlUmVzb3VyY2VzUmVxdWVzdBIjCgVyZXBvcxgBIAMoCzIULnYxc3luYy5QbGFuTWV0YWRhdGESIwoFcGxhbnMYAiADKAsyFC52MXN5bmMuUmVwb01ldGFkYXRhIigKDFJlcG9NZXRhZGF0YRIKCgJpZBgBIAEoCRIMCgRndWlkGAIgASgJIhoKDFBsYW5NZXRhZGF0YRIKCgJpZBgBIAEoCSJ2ChBTZXRDb25maWdSZXF1ZXN0EhcKBXBsYW5zGAEgAygLMggudjEuUGxhbhIXCgVyZXBvcxgCIAMoCzIILnYxLlJlcG8SFwoPcmVwb3NfdG9fZGVsZXRlGAMgAygJEhcKD3BsYW5zX3RvX2RlbGV0ZRgEIAMoCSJgCgxSZW1vdGVDb25maWcSDQoFbW9kbm8YASABKAUSDwoHdmVyc2lvbhgCIAEoBRIXCgVyZXBvcxgDIAMoCzIILnYxLlJlcG8SFwoFcGxhbnMYBCADKAsyCC52MS5QbGFuIl8KEkF1dGhvcml6YXRpb25Ub2tlbhIhCgpwdWJsaWNfa2V5GAEgASgLMg0udjEuUHVibGljS2V5EiYKC2luc3RhbmNlX2lkGAIgASgLMhEudjEuU2lnbmVkTWVzc2FnZSLZDgoOU3luY1N0cmVhbUl0ZW0SKwoOc2lnbmVkX21lc3NhZ2UYASABKAsyES52MS5TaWduZWRNZXNzYWdlSAASPwoJaGFuZHNoYWtlGAMgASgLMioudjFzeW5jLlN5bmNTdHJlYW1JdGVtLlN5bmNBY3Rpb25IYW5kc2hha2VIABI/CgloZWFydGJlYXQYBCABKAsyKi52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvbkhlYXJ0YmVhdEgAEkoKD2RpZmZfb3BlcmF0aW9ucxgUIAEoCzIvLnYxc3luYy5TeW5jU3RyZWFtSXRlbS5TeW5jQWN0aW9uRGlmZk9wZXJhdGlvbnNIABJKCg9zZW5kX29wZXJhdGlvbnMYFSABKAsyLy52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvblNlbmRPcGVyYXRpb25zSAASQgoLc2VuZF9jb25maWcYFiABKAsyKy52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvblNlbmRDb25maWdIABJACgpzZXRfY29uZmlnGBggASgLMioudjFzeW5jLlN5bmNTdHJlYW1JdGVtLlN5bmNBY3Rpb25TZXRDb25maWdIABJICg5saXN0X3Jlc291cmNlcxgZIAEoCzIuLnYxc3luYy5TeW5jU3RyZWFtSXRlbS5TeW5jQWN0aW9uTGlzdFJlc291cmNlc0gAEjoKB2dldF9sb2cYGiABKAsyJy52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvbkdldExvZ0gAEkUKDXNlbmRfbG9nX2RhdGEYGyABKAsyLC52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvblNlbmRMb2dEYXRhSAASPgoIdGhyb3R0bGUY6AcgASgLMikudjFzeW5jLlN5bmNTdHJlYW1JdGVtLlN5bmNBY3Rpb25UaHJvdHRsZUgAGnoKE1N5bmNBY3Rpb25IYW5kc2hha2USGAoQcHJvdG9jb2xfdmVyc2lvbhgBIAEoAxIhCgpwdWJsaWNfa2V5GAIgASgLMg0udjEuUHVibGljS2V5EiYKC2luc3RhbmNlX2lkGAMgASgLMhEudjEuU2lnbmVkTWVzc2FnZRoVChNTeW5jQWN0aW9uSGVhcnRiZWF0GjwKFFN5bmNBY3Rpb25TZW5kQ29uZmlnEiQKBmNvbmZpZxgBIAEoCzIULnYxc3luYy5SZW1vdGVDb25maWcaeQoTU3luY0FjdGlvblNldENvbmZpZxIXCgVyZXBvcxgBIAMoCzIILnYxLlJlcG8SFwoFcGxhbnMYAiADKAsyCC52MS5QbGFuEhcKD3JlcG9zX3RvX2RlbGV0ZRgDIAMoCRIXCg9wbGFuc190b19kZWxldGUYBCADKAkaYwoXU3luY0FjdGlvbkxpc3RSZXNvdXJjZXMSIwoFcmVwb3MYASADKAsyFC52MXN5bmMuUmVwb01ldGFkYXRhEiMKBXBsYW5zGAIgAygLMhQudjFzeW5jLlBsYW5NZXRhZGF0YRooChVTeW5jQWN0aW9uQ29ubmVjdFJlcG8SDwoHcmVwb19pZBgBIAEoCRqjAQoYU3luY0FjdGlvbkRpZmZPcGVyYXRpb25zEjAKGGhhdmVfb3BlcmF0aW9uc19zZWxlY3RvchgBIAEoCzIOLnYxLk9wU2VsZWN0b3ISGgoSaGF2ZV9vcGVyYXRpb25faWRzGAIgAygDEh0KFWhhdmVfb3BlcmF0aW9uX21vZG5vcxgDIAMoAxIaChJyZXF1ZXN0X29wZXJhdGlvbnMYBCADKAMaPQoYU3luY0FjdGlvblNlbmRPcGVyYXRpb25zEiEKBWV2ZW50GAEgASgLMhIudjEuT3BlcmF0aW9uRXZlbnQaIgoQU3luY0FjdGlvbkdldExvZxIOCgZsb2dfaWQYASABKAkaZgoVU3luY0FjdGlvblNlbmRMb2dEYXRhEg4KBmxvZ19pZBgBIAEoCRISCgpvd25lcl9vcGlkGAIgASgDEhoKEmV4cGlyYXRpb25fdHNfdW5peBgDIAEoAxINCgVjaHVuaxgEIAEoDBomChJTeW5jQWN0aW9uVGhyb3R0bGUSEAoIZGVsYXlfbXMYASABKAMaOAoZU3luY0VzdGFibGlzaFNoYXJlZFNlY3JldBIbCgdlZDI1NTE5GAIgASgJUgplZDI1NTE5cHViIrQBChNSZXBvQ29ubmVjdGlvblN0YXRlEhwKGENPTk5FQ1RJT05fU1RBVEVfVU5LTk9XThAAEhwKGENPTk5FQ1RJT05fU1RBVEVfUEVORElORxABEh4KGkNPTk5FQ1RJT05fU1RBVEVfQ09OTkVDVEVEEAISIQodQ09OTkVDVElPTl9TVEFURV9VTkFVVEhPUklaRUQQAxIeChpDT05ORUNUSU9OX1NUQVRFX05PVF9GT1VORBAEQggKBmFjdGlvbiqcAgoPQ29ubmVjdGlvblN0YXRlEhwKGENPTk5FQ1RJT05fU1RBVEVfVU5LTk9XThAAEhwKGENPTk5FQ1RJT05fU1RBVEVfUEVORElORxABEh4KGkNPTk5FQ1RJT05fU1RBVEVfQ09OTkVDVEVEEAISIQodQ09OTkVDVElPTl9TVEFURV9ESVNDT05ORUNURUQQAxIfChtDT05ORUNUSU9OX1NUQVRFX1JFVFJZX1dBSVQQBBIfChtDT05ORUNUSU9OX1NUQVRFX0VSUk9SX0FVVEgQChIjCh9DT05ORUNUSU9OX1NUQVRFX0VSUk9SX1BST1RPQ09MEAsSIwofQ09OTkVDVElPTl9TVEFURV9FUlJPUl9JTlRFUk5BTBAMMlMKE0JhY2tyZXN0U3luY1NlcnZpY2USPAoEU3luYxIWLnYxc3luYy5TeW5jU3RyZWFtSXRlbRoWLnYxc3luYy5TeW5jU3RyZWFtSXRlbSIAKAEwATJsChhCYWNrcmVzdFN5bmNTdGF0ZVNlcnZpY2USUAoXR2V0UGVlclN5bmNTdGF0ZXNTdHJlYW0SHi52MXN5bmMuU3luY1N0YXRlU3RyZWFtUmVxdWVzdBoRLnYxc3luYy5QZWVyU3RhdGUiADABQjBaLmdpdGh1Yi5jb20vZ2FyZXRoZ2VvcmdlL2JhY2tyZXN0L2dlbi9nby92MXN5bmNiBnByb3RvMw", [file_v1_config, file_v1_crypto, file_v1_restic, file_v1_service, file_v1_operations, file_types_value, file_google_protobuf_empty, file_google_api_annotations, file_google_protobuf_any]);
|
||||
fileDesc("Chh2MXN5bmMvc3luY3NlcnZpY2UucHJvdG8SBnYxc3luYyIrChZTeW5jU3RhdGVTdHJlYW1SZXF1ZXN0EhEKCXN1YnNjcmliZRgBIAEoCCKbAgoJUGVlclN0YXRlEhgKEHBlZXJfaW5zdGFuY2VfaWQYASABKAkSEgoKcGVlcl9rZXlpZBgCIAEoCRImCgVzdGF0ZRgDIAEoDjIXLnYxc3luYy5Db25uZWN0aW9uU3RhdGUSFgoOc3RhdHVzX21lc3NhZ2UYBCABKAkSKQoLa25vd25fcGxhbnMYBSADKAsyFC52MXN5bmMuUGxhbk1ldGFkYXRhEikKC2tub3duX3JlcG9zGAYgAygLMhQudjFzeW5jLlJlcG9NZXRhZGF0YRIrCg1yZW1vdGVfY29uZmlnGAcgASgLMhQudjFzeW5jLlJlbW90ZUNvbmZpZxIdChVsYXN0X2hlYXJ0YmVhdF9taWxsaXMYCCABKAMiPQoTQXV0aGVudGljYXRlUmVxdWVzdBImCgtpbnN0YW5jZV9pZBgBIAEoCzIRLnYxLlNpZ25lZE1lc3NhZ2UiPgocR2V0T3BlcmF0aW9uTWV0YWRhdGFSZXNwb25zZRIOCgZvcF9pZHMYASADKAMSDgoGbW9kbm9zGAIgAygDIl0KDExvZ0RhdGFFbnRyeRIOCgZsb2dfaWQYASABKAkSEgoKb3duZXJfb3BpZBgCIAEoAxIaChJleHBpcmF0aW9uX3RzX3VuaXgYAyABKAMSDQoFY2h1bmsYBCABKAwiaAocU2V0QXZhaWxhYmxlUmVzb3VyY2VzUmVxdWVzdBIjCgVyZXBvcxgBIAMoCzIULnYxc3luYy5QbGFuTWV0YWRhdGESIwoFcGxhbnMYAiADKAsyFC52MXN5bmMuUmVwb01ldGFkYXRhIigKDFJlcG9NZXRhZGF0YRIKCgJpZBgBIAEoCRIMCgRndWlkGAIgASgJIhoKDFBsYW5NZXRhZGF0YRIKCgJpZBgBIAEoCSJ2ChBTZXRDb25maWdSZXF1ZXN0EhcKBXBsYW5zGAEgAygLMggudjEuUGxhbhIXCgVyZXBvcxgCIAMoCzIILnYxLlJlcG8SFwoPcmVwb3NfdG9fZGVsZXRlGAMgAygJEhcKD3BsYW5zX3RvX2RlbGV0ZRgEIAMoCSJgCgxSZW1vdGVDb25maWcSDQoFbW9kbm8YASABKAUSDwoHdmVyc2lvbhgCIAEoBRIXCgVyZXBvcxgDIAMoCzIILnYxLlJlcG8SFwoFcGxhbnMYBCADKAsyCC52MS5QbGFuIl8KEkF1dGhvcml6YXRpb25Ub2tlbhIhCgpwdWJsaWNfa2V5GAEgASgLMg0udjEuUHVibGljS2V5EiYKC2luc3RhbmNlX2lkGAIgASgLMhEudjEuU2lnbmVkTWVzc2FnZSL6DQoOU3luY1N0cmVhbUl0ZW0SKwoOc2lnbmVkX21lc3NhZ2UYASABKAsyES52MS5TaWduZWRNZXNzYWdlSAASPwoJaGFuZHNoYWtlGAMgASgLMioudjFzeW5jLlN5bmNTdHJlYW1JdGVtLlN5bmNBY3Rpb25IYW5kc2hha2VIABI/CgloZWFydGJlYXQYBCABKAsyKi52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvbkhlYXJ0YmVhdEgAElAKEnJlcXVlc3Rfb3BlcmF0aW9ucxgUIAEoCzIyLnYxc3luYy5TeW5jU3RyZWFtSXRlbS5TeW5jQWN0aW9uUmVxdWVzdE9wZXJhdGlvbnNIABJKCg9zZW5kX29wZXJhdGlvbnMYFSABKAsyLy52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvblNlbmRPcGVyYXRpb25zSAASQgoLc2VuZF9jb25maWcYFiABKAsyKy52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvblNlbmRDb25maWdIABJACgpzZXRfY29uZmlnGBggASgLMioudjFzeW5jLlN5bmNTdHJlYW1JdGVtLlN5bmNBY3Rpb25TZXRDb25maWdIABJICg5saXN0X3Jlc291cmNlcxgZIAEoCzIuLnYxc3luYy5TeW5jU3RyZWFtSXRlbS5TeW5jQWN0aW9uTGlzdFJlc291cmNlc0gAEjoKB2dldF9sb2cYGiABKAsyJy52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvbkdldExvZ0gAEkUKDXNlbmRfbG9nX2RhdGEYGyABKAsyLC52MXN5bmMuU3luY1N0cmVhbUl0ZW0uU3luY0FjdGlvblNlbmRMb2dEYXRhSAASPgoIdGhyb3R0bGUY6AcgASgLMikudjFzeW5jLlN5bmNTdHJlYW1JdGVtLlN5bmNBY3Rpb25UaHJvdHRsZUgAGnoKE1N5bmNBY3Rpb25IYW5kc2hha2USGAoQcHJvdG9jb2xfdmVyc2lvbhgBIAEoAxIhCgpwdWJsaWNfa2V5GAIgASgLMg0udjEuUHVibGljS2V5EiYKC2luc3RhbmNlX2lkGAMgASgLMhEudjEuU2lnbmVkTWVzc2FnZRoVChNTeW5jQWN0aW9uSGVhcnRiZWF0GjwKFFN5bmNBY3Rpb25TZW5kQ29uZmlnEiQKBmNvbmZpZxgBIAEoCzIULnYxc3luYy5SZW1vdGVDb25maWcaeQoTU3luY0FjdGlvblNldENvbmZpZxIXCgVyZXBvcxgBIAMoCzIILnYxLlJlcG8SFwoFcGxhbnMYAiADKAsyCC52MS5QbGFuEhcKD3JlcG9zX3RvX2RlbGV0ZRgDIAMoCRIXCg9wbGFuc190b19kZWxldGUYBCADKAkaYwoXU3luY0FjdGlvbkxpc3RSZXNvdXJjZXMSIwoFcmVwb3MYASADKAsyFC52MXN5bmMuUmVwb01ldGFkYXRhEiMKBXBsYW5zGAIgAygLMhQudjFzeW5jLlBsYW5NZXRhZGF0YRooChVTeW5jQWN0aW9uQ29ubmVjdFJlcG8SDwoHcmVwb19pZBgBIAEoCRo/ChtTeW5jQWN0aW9uUmVxdWVzdE9wZXJhdGlvbnMSIAoIc2VsZWN0b3IYASABKAsyDi52MS5PcFNlbGVjdG9yGj0KGFN5bmNBY3Rpb25TZW5kT3BlcmF0aW9ucxIhCgVldmVudBgBIAEoCzISLnYxLk9wZXJhdGlvbkV2ZW50GiIKEFN5bmNBY3Rpb25HZXRMb2cSDgoGbG9nX2lkGAEgASgJGmYKFVN5bmNBY3Rpb25TZW5kTG9nRGF0YRIOCgZsb2dfaWQYASABKAkSEgoKb3duZXJfb3BpZBgCIAEoAxIaChJleHBpcmF0aW9uX3RzX3VuaXgYAyABKAMSDQoFY2h1bmsYBCABKAwaJgoSU3luY0FjdGlvblRocm90dGxlEhAKCGRlbGF5X21zGAEgASgDGjgKGVN5bmNFc3RhYmxpc2hTaGFyZWRTZWNyZXQSGwoHZWQyNTUxORgCIAEoCVIKZWQyNTUxOXB1YiK0AQoTUmVwb0Nvbm5lY3Rpb25TdGF0ZRIcChhDT05ORUNUSU9OX1NUQVRFX1VOS05PV04QABIcChhDT05ORUNUSU9OX1NUQVRFX1BFTkRJTkcQARIeChpDT05ORUNUSU9OX1NUQVRFX0NPTk5FQ1RFRBACEiEKHUNPTk5FQ1RJT05fU1RBVEVfVU5BVVRIT1JJWkVEEAMSHgoaQ09OTkVDVElPTl9TVEFURV9OT1RfRk9VTkQQBEIICgZhY3Rpb24qnAIKD0Nvbm5lY3Rpb25TdGF0ZRIcChhDT05ORUNUSU9OX1NUQVRFX1VOS05PV04QABIcChhDT05ORUNUSU9OX1NUQVRFX1BFTkRJTkcQARIeChpDT05ORUNUSU9OX1NUQVRFX0NPTk5FQ1RFRBACEiEKHUNPTk5FQ1RJT05fU1RBVEVfRElTQ09OTkVDVEVEEAMSHwobQ09OTkVDVElPTl9TVEFURV9SRVRSWV9XQUlUEAQSHwobQ09OTkVDVElPTl9TVEFURV9FUlJPUl9BVVRIEAoSIwofQ09OTkVDVElPTl9TVEFURV9FUlJPUl9QUk9UT0NPTBALEiMKH0NPTk5FQ1RJT05fU1RBVEVfRVJST1JfSU5URVJOQUwQDDJTChNCYWNrcmVzdFN5bmNTZXJ2aWNlEjwKBFN5bmMSFi52MXN5bmMuU3luY1N0cmVhbUl0ZW0aFi52MXN5bmMuU3luY1N0cmVhbUl0ZW0iACgBMAEybAoYQmFja3Jlc3RTeW5jU3RhdGVTZXJ2aWNlElAKF0dldFBlZXJTeW5jU3RhdGVzU3RyZWFtEh4udjFzeW5jLlN5bmNTdGF0ZVN0cmVhbVJlcXVlc3QaES52MXN5bmMuUGVlclN0YXRlIgAwAUIwWi5naXRodWIuY29tL2dhcmV0aGdlb3JnZS9iYWNrcmVzdC9nZW4vZ28vdjFzeW5jYgZwcm90bzM", [file_v1_config, file_v1_crypto, file_v1_restic, file_v1_service, file_v1_operations, file_types_value, file_google_protobuf_empty, file_google_api_annotations, file_google_protobuf_any]);
|
||||
|
||||
/**
|
||||
* @generated from message v1sync.SyncStateStreamRequest
|
||||
@@ -382,10 +382,10 @@ export type SyncStreamItem = Message<"v1sync.SyncStreamItem"> & {
|
||||
case: "heartbeat";
|
||||
} | {
|
||||
/**
|
||||
* @generated from field: v1sync.SyncStreamItem.SyncActionDiffOperations diff_operations = 20;
|
||||
* @generated from field: v1sync.SyncStreamItem.SyncActionRequestOperations request_operations = 20;
|
||||
*/
|
||||
value: SyncStreamItem_SyncActionDiffOperations;
|
||||
case: "diffOperations";
|
||||
value: SyncStreamItem_SyncActionRequestOperations;
|
||||
case: "requestOperations";
|
||||
} | {
|
||||
/**
|
||||
* @generated from field: v1sync.SyncStreamItem.SyncActionSendOperations send_operations = 21;
|
||||
@@ -569,40 +569,20 @@ export const SyncStreamItem_SyncActionConnectRepoSchema: GenMessage<SyncStreamIt
|
||||
messageDesc(file_v1sync_syncservice, 11, 5);
|
||||
|
||||
/**
|
||||
* @generated from message v1sync.SyncStreamItem.SyncActionDiffOperations
|
||||
* @generated from message v1sync.SyncStreamItem.SyncActionRequestOperations
|
||||
*/
|
||||
export type SyncStreamItem_SyncActionDiffOperations = Message<"v1sync.SyncStreamItem.SyncActionDiffOperations"> & {
|
||||
export type SyncStreamItem_SyncActionRequestOperations = Message<"v1sync.SyncStreamItem.SyncActionRequestOperations"> & {
|
||||
/**
|
||||
* Client connects and sends a list of "have_operations" that exist in its log.
|
||||
* have_operation_ids and have_operation_modnos are the operation IDs and modnos that the client has when zip'd pairwise.
|
||||
*
|
||||
* @generated from field: v1.OpSelector have_operations_selector = 1;
|
||||
* @generated from field: v1.OpSelector selector = 1;
|
||||
*/
|
||||
haveOperationsSelector?: OpSelector;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated int64 have_operation_ids = 2;
|
||||
*/
|
||||
haveOperationIds: bigint[];
|
||||
|
||||
/**
|
||||
* @generated from field: repeated int64 have_operation_modnos = 3;
|
||||
*/
|
||||
haveOperationModnos: bigint[];
|
||||
|
||||
/**
|
||||
* Server sends a list of "request_operations" for any operations that it doesn't have.
|
||||
*
|
||||
* @generated from field: repeated int64 request_operations = 4;
|
||||
*/
|
||||
requestOperations: bigint[];
|
||||
selector?: OpSelector;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message v1sync.SyncStreamItem.SyncActionDiffOperations.
|
||||
* Use `create(SyncStreamItem_SyncActionDiffOperationsSchema)` to create a new message.
|
||||
* Describes the message v1sync.SyncStreamItem.SyncActionRequestOperations.
|
||||
* Use `create(SyncStreamItem_SyncActionRequestOperationsSchema)` to create a new message.
|
||||
*/
|
||||
export const SyncStreamItem_SyncActionDiffOperationsSchema: GenMessage<SyncStreamItem_SyncActionDiffOperations> = /*@__PURE__*/
|
||||
export const SyncStreamItem_SyncActionRequestOperationsSchema: GenMessage<SyncStreamItem_SyncActionRequestOperations> = /*@__PURE__*/
|
||||
messageDesc(file_v1sync_syncservice, 11, 6);
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user