mirror of
https://github.com/garethgeorge/backrest.git
synced 2026-09-23 08:25:40 +00:00
feat: experimental multihost sync (#1204)
This commit is contained in:
@@ -2,6 +2,7 @@ package syncapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"connectrpc.com/connect"
|
||||
@@ -23,6 +24,27 @@ func NewBackrestSyncStateHandler(mgr *SyncManager) *BackrestSyncStateHandler {
|
||||
}
|
||||
}
|
||||
|
||||
func (h *BackrestSyncStateHandler) SetRemoteClientConfig(ctx context.Context, req *connect.Request[v1sync.SetRemoteClientConfigRequest]) (*connect.Response[v1sync.SetRemoteClientConfigResponse], error) {
|
||||
peerKeyID := req.Msg.GetPeerKeyid()
|
||||
if peerKeyID == "" {
|
||||
return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("peer_keyid is required"))
|
||||
}
|
||||
|
||||
handle := h.mgr.GetConnectedPeer(peerKeyID)
|
||||
if handle == nil {
|
||||
return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("peer %q is not connected", peerKeyID))
|
||||
}
|
||||
|
||||
handle.SendSetConfig(&v1sync.SyncStreamItem_SyncActionSetConfig{
|
||||
Repos: req.Msg.GetRepos(),
|
||||
Plans: req.Msg.GetPlans(),
|
||||
ReposToDelete: req.Msg.GetReposToDelete(),
|
||||
PlansToDelete: req.Msg.GetPlansToDelete(),
|
||||
})
|
||||
|
||||
return connect.NewResponse(&v1sync.SetRemoteClientConfigResponse{}), nil
|
||||
}
|
||||
|
||||
func (h *BackrestSyncStateHandler) GetPeerSyncStatesStream(ctx context.Context, req *connect.Request[v1sync.SyncStateStreamRequest], stream *connect.ServerStream[v1sync.PeerState]) error {
|
||||
ctx, cancel := context.WithCancelCause(ctx)
|
||||
defer cancel(nil)
|
||||
|
||||
Reference in New Issue
Block a user