Documentation
¶
Index ¶
- type AliasesProvider
- type AuthProvider
- type BlocksProvider
- type BookmarkProvider
- type ChatProvider
- type ClientNodeStreamer
- type DiscoveryHandler
- type DistributedHashTableCloser
- type FilterProvider
- type FollowStorer
- type MDNSStarterCloser
- type MediaProvider
- type MemberNode
- func (m *MemberNode) Addrs() []warpnet.WarpAddress
- func (m *MemberNode) Connect(p warpnet.WarpAddrInfo) error
- func (m *MemberNode) Event() <-chan warpnet.PeerEvent
- func (m *MemberNode) GenericStream(nodeIdStr streamNodeID, path stream.WarpRoute, data any) (_ []byte, err error)
- func (m *MemberNode) Network() warpnet.WarpNetwork
- func (m *MemberNode) Node() warpnet.P2PNode
- func (m *MemberNode) NodeInfo() warpnet.NodeInfo
- func (m *MemberNode) Peerstore() warpnet.WarpPeerstore
- func (m *MemberNode) SelfStream(from, to warpnet.WarpPeerID, path stream.WarpRoute, data any) (_ []byte, err error)
- func (m *MemberNode) SetMaxNodePriority(pid warpnet.WarpPeerID)
- func (m *MemberNode) SetMinNodePriority(pid warpnet.WarpPeerID)
- func (m *MemberNode) SetNodePriority(pid warpnet.WarpPeerID, r warpnet.WarpReachability)
- func (m *MemberNode) SetStreamHandlers(hs ...warpnet.WarpStreamHandler)
- func (m *MemberNode) SimpleConnect(info warpnet.WarpAddrInfo) error
- func (m *MemberNode) Start() (err error)
- func (m *MemberNode) Stop()
- type MutesProvider
- type NodeProvider
- type NotificationProvider
- type OrderProvider
- type PeerRater
- type PeersRatings
- type PollProvider
- type PubSubProvider
- type RatingProvider
- type RatingStorer
- type ReactionsProvider
- type SettingsProvider
- type StatsProvider
- type StatsStorer
- type Storer
- type SubscriptionProvider
- type TimelineProvider
- type TweetsProvider
- type UserFetcher
- type UserProvider
- type WalletAddressProvider
- type WalletProvider
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AliasesProvider ¶ added in v0.8.77
type AuthProvider ¶
type BlocksProvider ¶ added in v0.8.77
type BookmarkProvider ¶ added in v0.8.77
type ChatProvider ¶ added in v0.8.77
type ChatProvider interface {
CreateChat(chatId *string, ownerId string, otherUserId string) (domain.Chat, error)
CreateMessage(msg domain.ChatMessage) (domain.ChatMessage, error)
DeleteChat(chatId string) error
DeleteMessage(chatId string, id string) error
GetChat(chatId string) (chat domain.Chat, err error)
GetMessage(chatId string, id string) (domain.ChatMessage, error)
GetUserChats(userId string, limit *uint64, cursor *string) ([]domain.Chat, string, error)
ListMessages(chatId string, limit *uint64, cursor *string) ([]domain.ChatMessage, string, error)
IsParticipants(ownerId string, otherUserId string) bool
}
type ClientNodeStreamer ¶
type DiscoveryHandler ¶
type DiscoveryHandler interface {
DiscoveryHandlerStream(pi warpnet.WarpAddrInfo)
Run(n discovery.DiscoveryInfoStorer) error
Event() <-chan warpnet.PeerEvent
Close()
}
type FilterProvider ¶ added in v0.8.77
type FilterProvider interface {
AddKeyword(userId string, filterId string, kw domain.FilterKeyword) (domain.FilterKeyword, error)
Create(userId string, f domain.Filter) (domain.Filter, error)
Delete(userId string, filterId string) error
DeleteKeyword(userId string, keywordId string) error
Get(userId string, filterId string) (domain.Filter, error)
List(userId string, limit *uint64, cursor *string) ([]domain.Filter, string, error)
Update(userId string, f domain.Filter) (domain.Filter, error)
UpdateKeyword(userId string, kw domain.FilterKeyword) (domain.FilterKeyword, error)
}
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
AddFollowRequest(targetUserId, followerId string) error
RemoveFollowRequest(targetUserId, followerId string) error
ListFollowRequests(targetUserId string, limit *uint64, cursor *string) ([]domain.ID, string, error)
}
type MDNSStarterCloser ¶
type MDNSStarterCloser interface {
Start(n mdns.NodeConnector)
Close()
}
type MediaProvider ¶ added in v0.8.77
type MediaProvider interface {
GetImage(userId string, key string) (domain.Base64Image, error)
GetVideo(userId string, key string) (domain.Base64Video, error)
SetForeignImageWithTTL(userId string, key string, img domain.Base64Image) error
SetForeignVideoWithTTL(userId string, key string, video domain.Base64Video) error
SetImage(userId string, img domain.Base64Image) (_ domain.ImageKey, err error)
SetVideo(userId string, video domain.Base64Video) (_ domain.VideoKey, err error)
DeleteImage(userId string, key string) error
DeleteVideo(userId string, key string) error
GetCopy(userId string, key string) (domain.MediaCopy, error)
SetCopy(userId string, key string, c domain.MediaCopy) error
ListCopies(userId string, originalKey string) ([]domain.MediaCopy, error)
SetImageHashes(h domain.TweetImageHashes) error
ListImageHashes() ([]domain.TweetImageHashes, error)
}
type MemberNode ¶
type MemberNode struct {
// contains filtered or unexported fields
}
func NewMemberNode ¶
func NewMemberNode( ctx context.Context, privKey ed25519.PrivateKey, psk security.PSK, ownNodeId warpnet.WarpPeerID, authRepo AuthProvider, db Storer, bootstrapNodes []warpnet.WarpAddrInfo, ) (_ *MemberNode, err error)
func (*MemberNode) Addrs ¶ added in v0.8.77
func (m *MemberNode) Addrs() []warpnet.WarpAddress
func (*MemberNode) Connect ¶
func (m *MemberNode) Connect(p warpnet.WarpAddrInfo) error
func (*MemberNode) Event ¶ added in v0.8.77
func (m *MemberNode) Event() <-chan warpnet.PeerEvent
func (*MemberNode) GenericStream ¶
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( from, to warpnet.WarpPeerID, path stream.WarpRoute, data any, ) (_ []byte, err error)
func (*MemberNode) SetMaxNodePriority ¶ added in v0.6.154
func (m *MemberNode) SetMaxNodePriority(pid warpnet.WarpPeerID)
func (*MemberNode) SetMinNodePriority ¶ added in v0.6.154
func (m *MemberNode) SetMinNodePriority(pid warpnet.WarpPeerID)
func (*MemberNode) SetNodePriority ¶ added in v0.6.154
func (m *MemberNode) SetNodePriority(pid warpnet.WarpPeerID, r warpnet.WarpReachability)
func (*MemberNode) SetStreamHandlers ¶ added in v0.6.138
func (m *MemberNode) SetStreamHandlers(hs ...warpnet.WarpStreamHandler)
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 MutesProvider ¶ added in v0.8.77
type NodeProvider ¶
type NotificationProvider ¶ added in v0.8.77
type NotificationProvider interface {
Get(userId string, notificationId string) (domain.Notification, error)
List(userId string, limit *uint64, cursor *string) ([]domain.Notification, string, error)
MarkAllRead(userId string) error
MarkRead(userId string, notificationId string) error
ReverseList(userId string, cursor *string, limit *uint64) ([]domain.Notification, string, error)
UnreadCount(userId string) (uint64, error)
}
type OrderProvider ¶ added in v0.8.77
type PeerRater ¶ added in v0.8.77
type PeerRater interface {
Listen(sources ...<-chan warpnet.PeerEvent)
View(peerID warpnet.WarpPeerID) (domain.NodeRating, error)
Own() (domain.NodeRating, error)
Close() error
}
PeerRater listens to what the modules saw the peers do and rates them.
type PeersRatings ¶ added in v0.8.77
type PeersRatings interface {
Rate(peerID warpnet.WarpPeerID, tier rating.Tier)
ConnTag(peerID warpnet.WarpPeerID) int
GossipScore(peerID warpnet.WarpPeerID) float64
RateMultiplier(peerID warpnet.WarpPeerID) float64
IsAllowedInDHT(peerID warpnet.WarpPeerID) bool
IsMediaAllowed(peerID warpnet.WarpPeerID) bool
}
PeersRatings is how this node rates its peers: the engine writes it, and this node's modules read what follows from it.
type PollProvider ¶ added in v0.8.77
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)
PublishReport(ev event.ReportEvent) error
Close() error
Gossip() *corePubsub.Gossip
}
type RatingProvider ¶ added in v0.8.77
type RatingProvider interface {
Get(ctx context.Context, key datastore.Key) ([]byte, error)
Has(ctx context.Context, key datastore.Key) (bool, error)
GetSize(ctx context.Context, key datastore.Key) (int, error)
Query(ctx context.Context, q datastore.Query) (datastore.Results, error)
Put(ctx context.Context, key datastore.Key, value []byte) error
Delete(ctx context.Context, key datastore.Key) error
Sync(ctx context.Context, prefix datastore.Key) error
Close() error
}
RatingProvider is the local storage the rating replica is built on.
type RatingStorer ¶ added in v0.8.77
type RatingStorer interface {
Put(rec domain.RatingRecord) error
List(peerID string) ([]domain.RatingRecord, error)
PeerIDs() ([]string, error)
DeleteExpired(dimension string, beforeBucket int64) error
OnPut(hook func(domain.RatingRecord))
OnDelete(hook func(domain.RatingRecord))
Close() error
}
RatingStorer is the replicated record store the rating engine writes to.
type ReactionsProvider ¶ added in v0.8.77
type ReactionsProvider interface {
React(tweetId string, userId string, emoji string, isTransitive bool) (reactionsNum uint64, err error)
Reacted(userId string, limit *uint64, cursor *string) ([]domain.ReactedTweet, string, error)
Reactors(tweetId string, limit *uint64, cursor *string) (reactors []string, cur string, err error)
ReactionsCount(tweetId string) (reactionsNum uint64, err error)
Reaction(tweetId string, userId string) (emoji string, err error)
Reactions(tweetId string) (reactions map[string]uint64, err error)
RemoveReacted(userId string, tweetId string) error
SetReacted(userId string, tweetId string, ownerUserId string) error
Unreact(tweetId string, userId string, isTransitive bool) (reactionsNum uint64, err error)
}
type SettingsProvider ¶ added in v0.8.77
type SettingsProvider interface {
GetGatewaySettings(userId string) (domain.GatewaySettings, error)
GetNotificationSettings(userId string) (domain.NotificationSettings, error)
GetRateLimitSettings(userId string) (ratelimit.Settings, error)
GetSponsoredSettings(userId string) (domain.SponsoredSettings, error)
SetGatewaySettings(userId string, s domain.GatewaySettings) error
SetNotificationSettings(userId string, s domain.NotificationSettings) error
SetRateLimitSettings(userId string, s ratelimit.Settings) error
SetSponsoredSettings(userId string, s domain.SponsoredSettings) error
}
type StatsProvider ¶ added in v0.6.120
type StatsStorer ¶ added in v0.5.158
type Storer ¶
type Storer interface {
NewTxn() (local_store.WarpTransactioner, error)
NewReadTxn() (local_store.WarpTransactioner, error)
Get(key local_store.DatabaseKey) ([]byte, error)
GetExpiration(key local_store.DatabaseKey) (uint64, error)
GetSize(key local_store.DatabaseKey) (int64, error)
Sync() error
IsClosed() bool
InnerDB() *local_store.WarpDB
SetWithTTL(key local_store.DatabaseKey, value []byte, ttl time.Duration) error
Set(key local_store.DatabaseKey, value []byte) error
Delete(key local_store.DatabaseKey) error
Path() string
Stats() map[string]string
IsFirstRun() bool
}
type SubscriptionProvider ¶ added in v0.8.77
type TimelineProvider ¶ added in v0.8.77
type TweetsProvider ¶ added in v0.8.77
type TweetsProvider interface {
AddReply(reply domain.Tweet, isTransitive bool) (domain.Tweet, error)
AppendEdit(edit domain.TweetEdit) (domain.TweetEdit, error)
Blocklist(tweetId string) error
Create(_ string, tweet domain.Tweet) (domain.Tweet, error)
CreateWithTTL(userId string, tweet domain.Tweet, duration time.Duration) (domain.Tweet, error)
Delete(userID string, tweetID string) error
DeleteReply(parentID string, replyID string, isTransitive bool) (domain.Tweet, error)
Get(userID string, tweetID string) (tweet domain.Tweet, err error)
GetReplies(parentID string, limit *uint64, cursor *string) ([]domain.Tweet, string, error)
GetReply(parentID string, replyID string) (domain.Tweet, error)
GetViewsCount(tweetId string) (uint64, error)
IsBlocklisted(tweetId string) bool
List(string, *uint64, *string) ([]domain.Tweet, string, error)
NewRetweet(tweet domain.Tweet, isTransitive bool) (_ domain.Tweet, err error)
Pin(userId string, tweetId string) (domain.Tweet, error)
RecordView(tweetId string, viewerId string) (uint64, error)
RepliesCount(tweetId string) (reactionsNum uint64, err error)
Retweeters(tweetId string, limit *uint64, cursor *string) (_ []string, cur string, err error)
RetweetsCount(tweetId string) (uint64, error)
TweetsCount(userId string) (uint64, error)
UnRetweet(retweetedByUserID string, tweetId string, isTransitive bool) error
Unpin(userId string, tweetId string) (domain.Tweet, error)
Update(tweet domain.Tweet) error
}
type UserFetcher ¶
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)
Search(query string, 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)
}
type WalletAddressProvider ¶ added in v0.8.77
type WalletAddressProvider interface {
SetAddress(chain, userId, address string) error
ListAddresses(chain string, limit *uint64, cursor *string) ([]domain.WalletAddress, string, error)
}
WalletAddressProvider is what this node keeps of the wallet addresses its peers published.
type WalletProvider ¶ added in v0.8.77
type WalletProvider interface {
Address(ctx context.Context, seed string) (string, error)
Balance(ctx context.Context, address string) (wallet.Account, error)
Transfer(ctx context.Context, seed, asset, to, amount string) (string, error)
Export(ctx context.Context, seed string) (address, privateKey string, err error)
History(ctx context.Context, address, asset string, limit int) ([]wallet.Transfer, error)
Stake(ctx context.Context, seed, amount string) (string, error)
Unstake(ctx context.Context, seed, amount string) (string, error)
Withdraw(ctx context.Context, seed string) (string, error)
Pay(ctx context.Context, seed string, s wallet.Sponsorship) (wallet.Payment, error)
Payment(ctx context.Context, s wallet.Sponsorship, since time.Time) (wallet.PaymentState, error)
Quote(ctx context.Context, seed string, s wallet.Sponsorship) (wallet.Quote, error)
IsPaid(ctx context.Context, txId string, s wallet.Sponsorship) (wallet.Receipt, error)
IsAvailable(ctx context.Context) bool
Token() string
Decimals() uint8
Network() string
Splitter() string
Splitters() []string
MaxFeePercent() uint64
Close()
}
WalletProvider is the payment engine as this node holds it: what the wallet handlers ask of it, and the process it has to stop.
Click to show internal directories.
Click to hide internal directories.