syncapi

package
v1.13.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 4, 2026 License: GPL-3.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

View Source
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

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 (*BackrestSyncStateHandler) SetRemoteClientConfig added in v1.13.0

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 (*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
}

func (*PeerState) Clone added in v1.9.0

func (ps *PeerState) Clone() *PeerState

type PeerStateManager added in v1.9.0

type PeerStateManager interface {
	GetPeerState(keyID string) *PeerState
	GetAll() []*PeerState
	SetPeerState(keyID string, state *PeerState)
	OnStateChanged() eventemitter.Receiver[*PeerState]
	Close() error
}

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 NewSyncErrorAuth(message error) *SyncError

func NewSyncErrorDisconnected added in v1.9.0

func NewSyncErrorDisconnected(message error) *SyncError

func NewSyncErrorInternal added in v1.9.0

func NewSyncErrorInternal(message error) *SyncError

func NewSyncErrorProtocol added in v1.9.0

func NewSyncErrorProtocol(message error) *SyncError

func (*SyncError) Error added in v1.9.0

func (e *SyncError) Error() string

func (*SyncError) Unwrap added in v1.9.0

func (e *SyncError) Unwrap() error

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.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL