Documentation
¶
Overview ¶
Package sync provides NIP-11 relay information document fetching and caching
Package sync provides relay group configuration management
Index ¶
- type ClusterManager
- func (cm *ClusterManager) HandleEventsRange(w http.ResponseWriter, r *http.Request)
- func (cm *ClusterManager) HandleLatestSerial(w http.ResponseWriter, r *http.Request)
- func (cm *ClusterManager) HandleMembershipEvent(event *event.E) error
- func (cm *ClusterManager) Start()
- func (cm *ClusterManager) Stop()
- func (cm *ClusterManager) UpdateMembership(relayURLs []string)
- type ClusterMember
- type CurrentRequest
- type CurrentResponse
- type EventIDsRequest
- type EventIDsResponse
- type EventInfo
- type EventsRangeResponse
- type LatestSerialResponse
- type Manager
- func (m *Manager) GetCurrentSerial() uint64
- func (m *Manager) GetPeerPubkey(peerURL string) (string, error)
- func (m *Manager) GetPeers() []string
- func (m *Manager) HandleCurrentRequest(w http.ResponseWriter, r *http.Request)
- func (m *Manager) HandleEventIDsRequest(w http.ResponseWriter, r *http.Request)
- func (m *Manager) IsAuthorizedPeer(peerURL string, expectedPubkey string) bool
- func (m *Manager) Stop()
- func (m *Manager) UpdatePeers(newPeers []string)
- func (m *Manager) UpdateSerial()
- type NIP11Cache
- type RelayGroupConfig
- type RelayGroupManager
- func (rgm *RelayGroupManager) FindAuthoritativeConfig(ctx context.Context) (*RelayGroupConfig, error)
- func (rgm *RelayGroupManager) HandleRelayGroupEvent(ev *event.E, syncManager *Manager)
- func (rgm *RelayGroupManager) IsAuthorizedPublisher(pubkey []byte) bool
- func (rgm *RelayGroupManager) ValidateRelayGroupEvent(ev *event.E) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClusterManager ¶ added in v0.24.2
type ClusterManager struct {
// contains filtered or unexported fields
}
func NewClusterManager ¶ added in v0.24.2
func (*ClusterManager) HandleEventsRange ¶ added in v0.24.2
func (cm *ClusterManager) HandleEventsRange(w http.ResponseWriter, r *http.Request)
func (*ClusterManager) HandleLatestSerial ¶ added in v0.24.2
func (cm *ClusterManager) HandleLatestSerial(w http.ResponseWriter, r *http.Request)
func (*ClusterManager) HandleMembershipEvent ¶ added in v0.24.2
func (cm *ClusterManager) HandleMembershipEvent(event *event.E) error
HandleMembershipEvent processes a cluster membership event (Kind 39108)
func (*ClusterManager) Start ¶ added in v0.24.2
func (cm *ClusterManager) Start()
func (*ClusterManager) Stop ¶ added in v0.24.2
func (cm *ClusterManager) Stop()
func (*ClusterManager) UpdateMembership ¶ added in v0.24.2
func (cm *ClusterManager) UpdateMembership(relayURLs []string)
type ClusterMember ¶ added in v0.24.2
type CurrentRequest ¶
CurrentRequest represents a request for the current serial number
type CurrentResponse ¶
type CurrentResponse struct {
NodeID string `json:"node_id"`
RelayURL string `json:"relay_url"`
Serial uint64 `json:"serial"`
}
CurrentResponse returns the current serial number
type EventIDsRequest ¶ added in v0.24.1
type EventIDsRequest struct {
NodeID string `json:"node_id"`
RelayURL string `json:"relay_url"`
From uint64 `json:"from"`
To uint64 `json:"to"`
}
EventIDsRequest represents a request for event IDs with serials
type EventIDsResponse ¶ added in v0.24.1
type EventIDsResponse struct {
EventMap map[string]uint64 `json:"event_map"` // event_id -> serial
}
EventIDsResponse contains event IDs mapped to their serial numbers
type EventInfo ¶ added in v0.24.2
type EventsRangeResponse ¶ added in v0.24.2
type LatestSerialResponse ¶ added in v0.24.2
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles distributed synchronization between relay peers using serial numbers as clocks
func NewManager ¶
func NewManager(ctx context.Context, db *database.D, nodeID, relayURL string, peers []string, relayGroupMgr *RelayGroupManager, policyManager interface { CheckPolicy(action string, ev *event.E, pubkey []byte, remote string) (bool, error) }) *Manager
NewManager creates a new sync manager
func (*Manager) GetCurrentSerial ¶
GetCurrentSerial returns the current serial number
func (*Manager) GetPeerPubkey ¶ added in v0.24.1
GetPeerPubkey fetches and caches the pubkey for a peer relay
func (*Manager) GetPeers ¶ added in v0.24.1
GetPeers returns a copy of the current peer list
func (*Manager) HandleCurrentRequest ¶
func (m *Manager) HandleCurrentRequest(w http.ResponseWriter, r *http.Request)
HandleCurrentRequest handles requests for current serial number
func (*Manager) HandleEventIDsRequest ¶ added in v0.24.1
func (m *Manager) HandleEventIDsRequest(w http.ResponseWriter, r *http.Request)
HandleEventIDsRequest handles requests for event IDs with their serial numbers
func (*Manager) IsAuthorizedPeer ¶ added in v0.24.1
IsAuthorizedPeer checks if a peer is authorized by validating its NIP-11 pubkey
func (*Manager) UpdatePeers ¶ added in v0.24.1
UpdatePeers updates the peer list from relay group configuration
type NIP11Cache ¶ added in v0.24.1
type NIP11Cache struct {
// contains filtered or unexported fields
}
NIP11Cache caches relay information documents with TTL
func NewNIP11Cache ¶ added in v0.24.1
func NewNIP11Cache(ttl time.Duration) *NIP11Cache
NewNIP11Cache creates a new NIP-11 cache with the specified TTL
func (*NIP11Cache) Get ¶ added in v0.24.1
Get fetches relay information for a given URL, using cache if available
type RelayGroupConfig ¶ added in v0.24.1
type RelayGroupConfig struct {
Relays []string `json:"relays"`
}
RelayGroupConfig represents a relay group configuration event
type RelayGroupManager ¶ added in v0.24.1
type RelayGroupManager struct {
// contains filtered or unexported fields
}
RelayGroupManager handles relay group configuration
func NewRelayGroupManager ¶ added in v0.24.1
func NewRelayGroupManager(db *database.D, adminNpubs []string) *RelayGroupManager
NewRelayGroupManager creates a new relay group manager
func (*RelayGroupManager) FindAuthoritativeConfig ¶ added in v0.24.1
func (rgm *RelayGroupManager) FindAuthoritativeConfig(ctx context.Context) (*RelayGroupConfig, error)
FindAuthoritativeConfig finds the authoritative relay group configuration by selecting the latest event by timestamp, with hash tie-breaking
func (*RelayGroupManager) HandleRelayGroupEvent ¶ added in v0.24.1
func (rgm *RelayGroupManager) HandleRelayGroupEvent(ev *event.E, syncManager *Manager)
HandleRelayGroupEvent processes a relay group configuration event and updates peer lists
func (*RelayGroupManager) IsAuthorizedPublisher ¶ added in v0.24.1
func (rgm *RelayGroupManager) IsAuthorizedPublisher(pubkey []byte) bool
IsAuthorizedPublisher checks if a pubkey is authorized to publish relay group configs
func (*RelayGroupManager) ValidateRelayGroupEvent ¶ added in v0.24.1
func (rgm *RelayGroupManager) ValidateRelayGroupEvent(ev *event.E) error
ValidateRelayGroupEvent validates a relay group configuration event
Source Files
¶
- cluster.go
- manager.go
- nip11.go
- relaygroup.go