feat: experimental multihost sync (#1204)

This commit is contained in:
Gareth
2026-05-02 22:29:39 -07:00
committed by GitHub
parent 87d76231bc
commit b98b1dc3cc
96 changed files with 8089 additions and 2790 deletions
+22
View File
@@ -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)