cluster

package
v0.55.10 Latest Latest
Warning

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

Go to latest
Published: Jan 23, 2026 License: Unlicense Imports: 16 Imported by: 0

Documentation

Overview

Package cluster provides cluster replication with persistent state

Index

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

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig returns default configuration

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

type EventPublisher interface {
	Deliver(*event.E)
}

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

func (cm *Manager) GetEventsInRange(from, to uint64, limit int) ([]EventInfo, bool, uint64)

GetEventsInRange returns events in a serial range with pagination

func (*Manager) GetLatestSerial

func (cm *Manager) GetLatestSerial() (uint64, int64)

GetLatestSerial returns the latest serial and timestamp from the database

func (*Manager) GetMember

func (cm *Manager) GetMember(httpURL string) *Member

GetMember returns a specific member by URL or nil if not found

func (*Manager) GetMembers

func (cm *Manager) GetMembers() []*Member

GetMembers returns a copy of the current members

func (*Manager) GetRelayIdentityPubkey

func (cm *Manager) GetRelayIdentityPubkey() string

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

func (cm *Manager) HandleMembershipEvent(ev *event.E) error

HandleMembershipEvent processes a cluster membership event (Kind 39108)

func (*Manager) IsSelfURL

func (cm *Manager) IsSelfURL(url string) bool

IsSelfURL checks if a URL is our own relay

func (*Manager) MarkSelfURL

func (cm *Manager) MarkSelfURL(url string)

MarkSelfURL marks a URL as belonging to us

func (*Manager) PropagatePrivilegedEvents

func (cm *Manager) PropagatePrivilegedEvents() bool

PropagatePrivilegedEvents returns whether privileged events should be propagated

func (*Manager) Start

func (cm *Manager) Start()

Start starts the cluster polling loop

func (*Manager) Stop

func (cm *Manager) Stop()

Stop stops the cluster polling loop

func (*Manager) UpdateMembership

func (cm *Manager) UpdateMembership(relayURLs []string)

UpdateMembership updates the cluster membership

type Member

type Member struct {
	HTTPURL      string
	WebSocketURL string
	LastSerial   uint64
	LastPoll     time.Time
	Status       string // "active", "error", "unknown"
	ErrorCount   int
}

Member represents a cluster member

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.

Jump to

Keyboard shortcuts

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