Documentation
¶
Index ¶
- Constants
- func ValidatePairingSecret(secret string, tokens []*v1.Multihost_PairingToken, now time.Time) (*v1.Multihost_PairingToken, error)
- type BackrestSyncHandler
- type BackrestSyncStateHandler
- func (h *BackrestSyncStateHandler) GetPeerSyncStatesStream(ctx context.Context, req *connect.Request[v1sync.SyncStateStreamRequest], ...) error
- func (h *BackrestSyncStateHandler) SetRemoteClientConfig(ctx context.Context, req *connect.Request[v1sync.SetRemoteClientConfigRequest]) (*connect.Response[v1sync.SetRemoteClientConfigResponse], error)
- type InMemoryPeerStateManager
- func (m *InMemoryPeerStateManager) Close() error
- func (m *InMemoryPeerStateManager) GetAll() []*PeerState
- func (m *InMemoryPeerStateManager) GetPeerState(keyID string) *PeerState
- func (m *InMemoryPeerStateManager) OnStateChanged() eventemitter.Receiver[*PeerState]
- func (m *InMemoryPeerStateManager) SetPeerState(keyID string, state *PeerState)
- type PeerState
- type PeerStateManager
- type SqlitePeerStateManager
- func (m *SqlitePeerStateManager) Close() error
- func (m *SqlitePeerStateManager) GetAll() []*PeerState
- func (m *SqlitePeerStateManager) GetPeerState(keyID string) *PeerState
- func (m *SqlitePeerStateManager) OnStateChanged() eventemitter.Receiver[*PeerState]
- func (m *SqlitePeerStateManager) SetPeerState(keyID string, state *PeerState)
- type SyncClient
- type SyncError
- type SyncManager
Constants ¶
const SyncProtocolVersion = 3
SyncProtocolVersion is the application-layer handshake version. Bumped to 3 when the handshake was redesigned to carry a single signature that binds the long-term identity to the post-quantum transport transcript (and to drop the legacy v1.SignedMessage instance_id wrapping).
Variables ¶
This section is empty.
Functions ¶
func ValidatePairingSecret ¶ added in v1.13.0
func ValidatePairingSecret(secret string, tokens []*v1.Multihost_PairingToken, now time.Time) (*v1.Multihost_PairingToken, error)
ValidatePairingSecret checks a pairing secret against a list of pairing tokens. Returns the matching token if valid, or an error explaining why validation failed. This is a pure function with no side effects, making it easy to test exhaustively.
Types ¶
type BackrestSyncHandler ¶
type BackrestSyncHandler struct {
v1syncconnect.UnimplementedBackrestSyncServiceHandler
// contains filtered or unexported fields
}
func NewBackrestSyncHandler ¶
func NewBackrestSyncHandler(mgr *SyncManager) *BackrestSyncHandler
func (*BackrestSyncHandler) Sync ¶
func (h *BackrestSyncHandler) Sync(ctx context.Context, stream *connect.BidiStream[v1sync.SyncStreamItem, v1sync.SyncStreamItem]) error
type BackrestSyncStateHandler ¶ added in v1.9.0
type BackrestSyncStateHandler struct {
v1syncconnect.UnimplementedBackrestSyncStateServiceHandler
// contains filtered or unexported fields
}
func NewBackrestSyncStateHandler ¶ added in v1.9.0
func NewBackrestSyncStateHandler(mgr *SyncManager) *BackrestSyncStateHandler
func (*BackrestSyncStateHandler) GetPeerSyncStatesStream ¶ added in v1.9.0
func (h *BackrestSyncStateHandler) GetPeerSyncStatesStream(ctx context.Context, req *connect.Request[v1sync.SyncStateStreamRequest], stream *connect.ServerStream[v1sync.PeerState]) error
func (*BackrestSyncStateHandler) SetRemoteClientConfig ¶ added in v1.13.0
func (h *BackrestSyncStateHandler) SetRemoteClientConfig(ctx context.Context, req *connect.Request[v1sync.SetRemoteClientConfigRequest]) (*connect.Response[v1sync.SetRemoteClientConfigResponse], error)
type InMemoryPeerStateManager ¶ added in v1.9.0
type InMemoryPeerStateManager struct {
// contains filtered or unexported fields
}
func NewInMemoryPeerStateManager ¶ added in v1.9.0
func NewInMemoryPeerStateManager() *InMemoryPeerStateManager
func (*InMemoryPeerStateManager) Close ¶ added in v1.9.0
func (m *InMemoryPeerStateManager) Close() error
func (*InMemoryPeerStateManager) GetAll ¶ added in v1.9.0
func (m *InMemoryPeerStateManager) GetAll() []*PeerState
func (*InMemoryPeerStateManager) GetPeerState ¶ added in v1.9.0
func (m *InMemoryPeerStateManager) GetPeerState(keyID string) *PeerState
func (*InMemoryPeerStateManager) OnStateChanged ¶ added in v1.9.0
func (m *InMemoryPeerStateManager) OnStateChanged() eventemitter.Receiver[*PeerState]
func (*InMemoryPeerStateManager) SetPeerState ¶ added in v1.9.0
func (m *InMemoryPeerStateManager) SetPeerState(keyID string, state *PeerState)
type PeerState ¶ added in v1.9.0
type PeerState struct {
InstanceID string
KeyID string
LastHeartbeat time.Time
ConnectionState v1sync.ConnectionState
ConnectionStateMessage string
// Plans and repos available on this peer
KnownRepos map[string]*v1sync.RepoMetadata
KnownPlans map[string]*v1sync.PlanMetadata
// Partial configuration available for this peer
Config *v1sync.RemoteConfig
}
type PeerStateManager ¶ added in v1.9.0
type SqlitePeerStateManager ¶ added in v1.9.0
type SqlitePeerStateManager struct {
// contains filtered or unexported fields
}
func NewSqlitePeerStateManager ¶ added in v1.9.0
func NewSqlitePeerStateManager(dbpool *sql.DB) (*SqlitePeerStateManager, error)
func (*SqlitePeerStateManager) Close ¶ added in v1.9.0
func (m *SqlitePeerStateManager) Close() error
func (*SqlitePeerStateManager) GetAll ¶ added in v1.9.0
func (m *SqlitePeerStateManager) GetAll() []*PeerState
func (*SqlitePeerStateManager) GetPeerState ¶ added in v1.9.0
func (m *SqlitePeerStateManager) GetPeerState(keyID string) *PeerState
func (*SqlitePeerStateManager) OnStateChanged ¶ added in v1.9.0
func (m *SqlitePeerStateManager) OnStateChanged() eventemitter.Receiver[*PeerState]
func (*SqlitePeerStateManager) SetPeerState ¶ added in v1.9.0
func (m *SqlitePeerStateManager) SetPeerState(keyID string, state *PeerState)
type SyncClient ¶
type SyncClient struct {
// contains filtered or unexported fields
}
func NewSyncClient ¶
func NewSyncClient( mgr *SyncManager, snapshot syncConfigSnapshot, peer *v1.Multihost_Peer, oplog *oplog.OpLog, ) (*SyncClient, error)
func (*SyncClient) RunSync ¶
func (c *SyncClient) RunSync(ctx context.Context)
type SyncError ¶ added in v1.9.0
type SyncError struct {
State v1sync.ConnectionState
Message error
}
func NewSyncErrorAuth ¶ added in v1.9.0
func NewSyncErrorDisconnected ¶ added in v1.9.0
func NewSyncErrorInternal ¶ added in v1.9.0
func NewSyncErrorProtocol ¶ added in v1.9.0
type SyncManager ¶
type SyncManager struct {
// contains filtered or unexported fields
}
func NewSyncManager ¶
func NewSyncManager(configMgr *config.ConfigManager, oplog *oplog.OpLog, orchestrator *orchestrator.Orchestrator, peerStateManager PeerStateManager) *SyncManager
func (*SyncManager) GetConnectedPeer ¶ added in v1.13.0
func (m *SyncManager) GetConnectedPeer(keyID string) *connectedPeerHandle
GetConnectedPeer returns the handle for a connected peer, or nil if not connected.
func (*SyncManager) GetSyncClients ¶
func (m *SyncManager) GetSyncClients() map[string]*SyncClient
GetSyncClients returns a copy of the sync clients map. This makes the map safe to read from concurrently.
func (*SyncManager) RunSync ¶
func (m *SyncManager) RunSync(ctx context.Context)
Note: top level function will be called holding the lock, must kick off goroutines and then return.