Documentation
¶
Overview ¶
Package cluster provides cluster replication with persistent state
Index ¶
- type Config
- type EventInfo
- type EventPublisher
- type EventsRangeResponse
- type LatestSerialResponse
- type Manager
- func (cm *Manager) GetEventsInRange(from, to uint64, limit int) ([]EventInfo, bool, uint64)
- func (cm *Manager) GetLatestSerial() (uint64, int64)
- func (cm *Manager) GetMember(httpURL string) *Member
- func (cm *Manager) GetMembers() []*Member
- func (cm *Manager) GetRelayIdentityPubkey() string
- func (cm *Manager) HandleEventsRange(w http.ResponseWriter, r *http.Request)
- func (cm *Manager) HandleLatestSerial(w http.ResponseWriter, r *http.Request)
- func (cm *Manager) HandleMembershipEvent(ev *event.E) error
- func (cm *Manager) IsSelfURL(url string) bool
- func (cm *Manager) MarkSelfURL(url string)
- func (cm *Manager) PropagatePrivilegedEvents() bool
- func (cm *Manager) Start()
- func (cm *Manager) Stop()
- func (cm *Manager) UpdateMembership(relayURLs []string)
- type Member
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
AdminNpubs []string
PropagatePrivilegedEvents bool
PollInterval time.Duration
NIP11CacheTTL time.Duration
}
Config holds configuration for the cluster manager
type EventInfo ¶
type EventInfo struct {
Serial uint64 `json:"serial"`
ID string `json:"id"`
Timestamp int64 `json:"timestamp"`
}
EventInfo contains metadata about an event
type EventPublisher ¶
EventPublisher is an interface for publishing events
type EventsRangeResponse ¶
type EventsRangeResponse struct {
Events []EventInfo `json:"events"`
HasMore bool `json:"has_more"`
NextFrom uint64 `json:"next_from,omitempty"`
}
EventsRangeResponse contains events in a range
type LatestSerialResponse ¶
type LatestSerialResponse struct {
Serial uint64 `json:"serial"`
Timestamp int64 `json:"timestamp"`
}
LatestSerialResponse returns the latest serial
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles cluster replication between relay instances
func NewManager ¶
func NewManager(ctx context.Context, db *database.D, cfg *Config, publisher EventPublisher) *Manager
NewManager creates a new cluster manager
func (*Manager) GetEventsInRange ¶
GetEventsInRange returns events in a serial range with pagination
func (*Manager) GetLatestSerial ¶
GetLatestSerial returns the latest serial and timestamp from the database
func (*Manager) GetMember ¶
GetMember returns a specific member by URL or nil if not found
func (*Manager) GetMembers ¶
GetMembers returns a copy of the current members
func (*Manager) GetRelayIdentityPubkey ¶
GetRelayIdentityPubkey returns the relay's identity pubkey
func (*Manager) HandleEventsRange ¶
func (cm *Manager) HandleEventsRange(w http.ResponseWriter, r *http.Request)
HandleEventsRange handles GET /cluster/events
func (*Manager) HandleLatestSerial ¶
func (cm *Manager) HandleLatestSerial(w http.ResponseWriter, r *http.Request)
HandleLatestSerial handles GET /cluster/latest
func (*Manager) HandleMembershipEvent ¶
HandleMembershipEvent processes a cluster membership event (Kind 39108)
func (*Manager) IsSelfURL ¶
IsSelfURL checks if a URL is our own relay
func (*Manager) MarkSelfURL ¶
MarkSelfURL marks a URL as belonging to us
func (*Manager) PropagatePrivilegedEvents ¶
PropagatePrivilegedEvents returns whether privileged events should be propagated
Source Files
¶
- manager.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Package grpc provides a gRPC client for the cluster sync service.
|
Package grpc provides a gRPC client for the cluster sync service. |
|
Package server provides the gRPC server implementation for cluster sync.
|
Package server provides the gRPC server implementation for cluster sync. |