node

package
v0.5.142 Latest Latest
Warning

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

Go to latest
Published: Nov 22, 2025 License: AGPL-3.0, AGPL-3.0-or-later Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuthProvider

type AuthProvider interface {
	GetOwner() domain.Owner
	SessionToken() string
}

type ClientNodeStreamer

type ClientNodeStreamer interface {
	ClientStream(nodeId string, path string, data any) (_ []byte, err error)
	IsRunning() bool
}

type DiscoveryHandler

type DiscoveryHandler interface {
	DiscoveryHandlerStream(pi warpnet.WarpAddrInfo)
	Run(n discovery.DiscoveryInfoStorer) error
	Close()
}

type DistributedHashTableCloser

type DistributedHashTableCloser interface {
	Close()
}

type FollowStorer

type FollowStorer interface {
	GetFollowersCount(userId string) (uint64, error)
	GetFollowingsCount(userId string) (uint64, error)
	Follow(fromUserId, toUserId string) error
	Unfollow(fromUserId, toUserId string) error
	GetFollowers(userId string, limit *uint64, cursor *string) ([]domain.ID, string, error)
	GetFollowings(userId string, limit *uint64, cursor *string) ([]domain.ID, string, error)
	IsFollowing(ownerId, otherUserId string) bool
	IsFollower(ownerId, otherUserId string) bool
}

type MDNSStarterCloser

type MDNSStarterCloser interface {
	Start(n mdns.NodeConnector)
	Close()
}

type MemberNode

type MemberNode struct {
	// contains filtered or unexported fields
}

func NewMemberNode

func NewMemberNode(
	ctx context.Context,
	privKey ed25519.PrivateKey,
	psk security.PSK,
	selfHashHex string,
	version *semver.Version,
	authRepo AuthProvider,
	db Storer,
) (_ *MemberNode, err error)

func (*MemberNode) Connect

func (m *MemberNode) Connect(p warpnet.WarpAddrInfo) error

func (*MemberNode) GenericStream

func (m *MemberNode) GenericStream(nodeIdStr streamNodeID, path stream.WarpRoute, data any) (_ []byte, err error)

func (*MemberNode) Network

func (m *MemberNode) Network() warpnet.WarpNetwork

func (*MemberNode) Node

func (m *MemberNode) Node() warpnet.P2PNode

func (*MemberNode) NodeInfo

func (m *MemberNode) NodeInfo() warpnet.NodeInfo

func (*MemberNode) Peerstore

func (m *MemberNode) Peerstore() warpnet.WarpPeerstore

func (*MemberNode) SelfStream

func (m *MemberNode) SelfStream(path stream.WarpRoute, data any) (_ []byte, err error)

func (*MemberNode) SimpleConnect

func (m *MemberNode) SimpleConnect(info warpnet.WarpAddrInfo) error

func (*MemberNode) Start

func (m *MemberNode) Start() (err error)

func (*MemberNode) Stop

func (m *MemberNode) Stop()

type NodeProvider

type NodeProvider interface {
	io.Closer
}

type PseudoStreamer

type PseudoStreamer interface {
	ID() warpnet.WarpPeerID
	IsMastodonID(id warpnet.WarpPeerID) bool
	Addrs() []warpnet.WarpAddress
	Route(r stream.WarpRoute, data any) (_ []byte, err error)
}

type PubSubProvider

type PubSubProvider interface {
	SubscribeUserUpdate(userId string) (err error)
	UnsubscribeUserUpdate(userId string) (err error)
	Run(m pubsub.PubsubServerNodeConnector)
	PublishUpdateToFollowers(ownerId, dest string, bt []byte) (err error)
	Close() error
}

type Storer

type Storer interface {
	NewTxn() (local.WarpTransactioner, error)
	Get(key local.DatabaseKey) ([]byte, error)
	GetExpiration(key local.DatabaseKey) (uint64, error)
	GetSize(key local.DatabaseKey) (int64, error)
	Sync() error
	IsClosed() bool
	InnerDB() *local.WarpDB
	SetWithTTL(key local.DatabaseKey, value []byte, ttl time.Duration) error
	Set(key local.DatabaseKey, value []byte) error
	Delete(key local.DatabaseKey) error
	Path() string
	Stats() map[string]string
	IsFirstRun() bool
}

type UserFetcher

type UserFetcher interface {
	Get(userId string) (user domain.User, err error)
	Update(userId string, newUser domain.User) (domain.User, error)
	GetByNodeID(nodeID string) (user domain.User, err error)
}

type UserProvider

type UserProvider interface {
	Create(user domain.User) (domain.User, error)
	GetByNodeID(nodeID string) (user domain.User, err error)
	Get(userId string) (user domain.User, err error)
	List(limit *uint64, cursor *string) ([]domain.User, string, error)
	Update(userId string, newUser domain.User) (updatedUser domain.User, err error)
	GetBatch(userIds ...string) (users []domain.User, err error)
	CreateWithTTL(user domain.User, ttl time.Duration) (domain.User, error)
	WhoToFollow(limit *uint64, cursor *string) ([]domain.User, string, error)
}

Jump to

Keyboard shortcuts

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