Documentation
¶
Overview ¶
Package quicmemberlist is transport layer of memberlist, based on quic stream.
Index ¶
- Variables
- func BasicMemberlistConfig() *memberlist.Config
- func DefaultMemberlistConfig(name string, bind, advertise *net.UDPAddr) *memberlist.Config
- func FetchCallbackBroadcastMessageFunc(handlerPrefix quicstream.HandlerPrefix, dialf quicstreamheader.DialFunc) ...
- func PongEnsureBroadcastMessageFunc(handlerPrefix quicstream.HandlerPrefix, node base.Address, ...) func(context.Context, ConnInfoBroadcastMessage) error
- type AliveDelegate
- type BaseMember
- func (n BaseMember) Addr() *net.UDPAddr
- func (n BaseMember) Address() base.Address
- func (n BaseMember) ConnInfo() quicstream.ConnInfo
- func (n *BaseMember) DecodeJSON(b []byte, enc encoder.Encoder) error
- func (n BaseMember) HashBytes() []byte
- func (n BaseMember) IsValid([]byte) error
- func (n BaseMember) JoinedAt() time.Time
- func (n BaseMember) MarshalJSON() ([]byte, error)
- func (n BaseMember) MetaBytes() []byte
- func (n BaseMember) Name() string
- func (n BaseMember) Publickey() base.Publickey
- func (n BaseMember) Publish() NamedConnInfo
- func (n BaseMember) String() string
- func (n BaseMember) TLSInsecure() bool
- type Broadcast
- type CallbackBroadcastMessageHeader
- type ConnInfoBroadcastMessage
- type Delegate
- type DelegateJoinedFunc
- type DelegateLeftFunc
- type DelegateNodeFunc
- type DelegateStoreConnInfo
- type EnsureBroadcastMessageHeader
- type EventsDelegate
- type FilterNotifyMsgFunc
- type Member
- type Memberlist
- func (srv *Memberlist) Broadcast(b memberlist.Broadcast)
- func (srv *Memberlist) CallbackBroadcast(b []byte, id string, notifych chan struct{}) error
- func (srv *Memberlist) CallbackBroadcastHandler() quicstreamheader.Handler[CallbackBroadcastMessageHeader]
- func (srv *Memberlist) CanBroadcast() bool
- func (srv *Memberlist) EnsureBroadcast(b []byte, id string, notifych chan<- error, ...) error
- func (srv *Memberlist) EnsureBroadcastHandler(networkID base.NetworkID, ...) quicstreamheader.Handler[EnsureBroadcastMessageHeader]
- func (srv *Memberlist) Exists(addr *net.UDPAddr) bool
- func (srv *Memberlist) IsJoined() bool
- func (srv *Memberlist) Join(cis []quicstream.ConnInfo) error
- func (srv *Memberlist) Leave(timeout time.Duration) error
- func (srv *Memberlist) Members(f func(Member) bool)
- func (srv *Memberlist) MembersLen() int
- func (srv *Memberlist) Remotes(f func(Member) bool)
- func (srv *Memberlist) RemotesLen() int
- func (srv *Memberlist) SetLogging(l *logging.Logging) *logging.Logging
- func (srv *Memberlist) SetNotifyMsg(f func([]byte, encoder.Encoder)) *Memberlist
- func (srv *Memberlist) SetWhenLeftFunc(f func(Member)) *Memberlist
- func (srv *Memberlist) Start(ctx context.Context) error
- type MemberlistArgs
- type NamedAddr
- type NamedConnInfo
- func (c NamedConnInfo) Addr() net.Addr
- func (c NamedConnInfo) ConnInfo() quicstream.ConnInfo
- func (c NamedConnInfo) IsValid([]byte) error
- func (c NamedConnInfo) MarshalText() ([]byte, error)
- func (c NamedConnInfo) String() string
- func (c NamedConnInfo) TLSInsecure() bool
- func (c *NamedConnInfo) UnmarshalText(b []byte) error
- type Transport
- func (t *Transport) DialAddressTimeout(addr memberlist.Address, timeout time.Duration) (net.Conn, error)
- func (t *Transport) DialTimeout(addr string, timeout time.Duration) (net.Conn, error)
- func (t *Transport) FinalAdvertiseAddr(ip string, port int) (net.IP, int, error)
- func (t *Transport) PacketCh() <-chan *memberlist.Packet
- func (t *Transport) QuicstreamHandler(ctx context.Context, addr net.Addr, r io.Reader, _ io.WriteCloser) (context.Context, error)
- func (t *Transport) Shutdown() error
- func (t *Transport) Start(context.Context) error
- func (t *Transport) StreamCh() <-chan net.Conn
- func (t *Transport) WriteTo(b []byte, addr string) (time.Time, error)
- func (t *Transport) WriteToAddress(b []byte, addr memberlist.Address) (time.Time, error)
- type TransportArgs
- type TransportDialFunc
- type TransportGetConnInfo
- type TransportWriteFunc
Constants ¶
This section is empty.
Variables ¶
View Source
var CallbackBroadcastMessageHeaderHint = hint.MustNewHint("callback-broadcast-message-header-v0.0.1")
View Source
var ConnInfoBroadcastMessageHint = hint.MustNewHint("conninfo-broadcast-message-v0.0.1")
View Source
var EnsureBroadcastMessageHeaderHint = hint.MustNewHint("ensure-broadcast-message-header-v0.0.1")
View Source
var MemberHint = hint.MustNewHint("memberlist-member-v0.0.1")
Functions ¶
func BasicMemberlistConfig ¶
func BasicMemberlistConfig() *memberlist.Config
func DefaultMemberlistConfig ¶
func DefaultMemberlistConfig(name string, bind, advertise *net.UDPAddr) *memberlist.Config
func FetchCallbackBroadcastMessageFunc ¶
func FetchCallbackBroadcastMessageFunc( handlerPrefix quicstream.HandlerPrefix, dialf quicstreamheader.DialFunc, ) func(context.Context, ConnInfoBroadcastMessage) ( []byte, encoder.Encoder, error, )
func PongEnsureBroadcastMessageFunc ¶
func PongEnsureBroadcastMessageFunc( handlerPrefix quicstream.HandlerPrefix, node base.Address, signer base.Privatekey, networkID base.NetworkID, dialf quicstreamheader.DialFunc, ) func(context.Context, ConnInfoBroadcastMessage) error
Types ¶
type AliveDelegate ¶
func NewAliveDelegate ¶
func NewAliveDelegate( jsonencoder encoder.Encoder, laddr *net.UDPAddr, challengef DelegateNodeFunc, allowf DelegateNodeFunc, ) *AliveDelegate
func (*AliveDelegate) NotifyAlive ¶
func (d *AliveDelegate) NotifyAlive(peer *memberlist.Node) error
type BaseMember ¶
type BaseMember struct { hint.BaseHinter // contains filtered or unexported fields }
func (BaseMember) Addr ¶
func (n BaseMember) Addr() *net.UDPAddr
func (BaseMember) Address ¶
func (n BaseMember) Address() base.Address
func (BaseMember) ConnInfo ¶
func (n BaseMember) ConnInfo() quicstream.ConnInfo
func (*BaseMember) DecodeJSON ¶
func (n *BaseMember) DecodeJSON(b []byte, enc encoder.Encoder) error
func (BaseMember) HashBytes ¶
func (n BaseMember) HashBytes() []byte
func (BaseMember) IsValid ¶
func (n BaseMember) IsValid([]byte) error
func (BaseMember) JoinedAt ¶
func (n BaseMember) JoinedAt() time.Time
func (BaseMember) MarshalJSON ¶
func (n BaseMember) MarshalJSON() ([]byte, error)
func (BaseMember) MetaBytes ¶
func (n BaseMember) MetaBytes() []byte
func (BaseMember) Name ¶
func (n BaseMember) Name() string
func (BaseMember) Publickey ¶
func (n BaseMember) Publickey() base.Publickey
func (BaseMember) Publish ¶
func (n BaseMember) Publish() NamedConnInfo
func (BaseMember) String ¶
func (n BaseMember) String() string
func (BaseMember) TLSInsecure ¶
func (n BaseMember) TLSInsecure() bool
type Broadcast ¶
type Broadcast struct {
// contains filtered or unexported fields
}
func NewBroadcast ¶
func (*Broadcast) Invalidates ¶
func (b *Broadcast) Invalidates(o memberlist.Broadcast) bool
func (*Broadcast) MarshalZerologObject ¶
func (*Broadcast) UniqueBroadcast ¶
func (*Broadcast) UniqueBroadcast()
type CallbackBroadcastMessageHeader ¶
type CallbackBroadcastMessageHeader struct { quicstreamheader.BaseRequestHeader // contains filtered or unexported fields }
func NewCallbackBroadcastMessageHeader ¶
func NewCallbackBroadcastMessageHeader(id string, prefix quicstream.HandlerPrefix) CallbackBroadcastMessageHeader
func (CallbackBroadcastMessageHeader) ID ¶
func (h CallbackBroadcastMessageHeader) ID() string
func (CallbackBroadcastMessageHeader) IsValid ¶
func (h CallbackBroadcastMessageHeader) IsValid([]byte) error
func (CallbackBroadcastMessageHeader) MarshalJSON ¶
func (h CallbackBroadcastMessageHeader) MarshalJSON() ([]byte, error)
func (*CallbackBroadcastMessageHeader) UnmarshalJSON ¶
func (h *CallbackBroadcastMessageHeader) UnmarshalJSON(b []byte) error
type ConnInfoBroadcastMessage ¶
type ConnInfoBroadcastMessage struct { hint.BaseHinter // contains filtered or unexported fields }
func NewConnInfoBroadcastMessage ¶
func NewConnInfoBroadcastMessage(id string, ci quicstream.ConnInfo) ConnInfoBroadcastMessage
func (ConnInfoBroadcastMessage) ConnInfo ¶
func (m ConnInfoBroadcastMessage) ConnInfo() quicstream.ConnInfo
func (ConnInfoBroadcastMessage) ID ¶
func (m ConnInfoBroadcastMessage) ID() string
func (ConnInfoBroadcastMessage) IsValid ¶
func (m ConnInfoBroadcastMessage) IsValid([]byte) error
func (ConnInfoBroadcastMessage) MarshalJSON ¶
func (m ConnInfoBroadcastMessage) MarshalJSON() ([]byte, error)
func (*ConnInfoBroadcastMessage) UnmarshalJSON ¶
func (m *ConnInfoBroadcastMessage) UnmarshalJSON(b []byte) error
type Delegate ¶
func NewDelegate ¶
func (*Delegate) GetBroadcasts ¶
func (*Delegate) LocalState ¶
func (*Delegate) MergeRemoteState ¶
func (*Delegate) QueueBroadcast ¶
func (d *Delegate) QueueBroadcast(b memberlist.Broadcast)
type DelegateJoinedFunc ¶
type DelegateJoinedFunc func(Member)
type DelegateLeftFunc ¶
type DelegateLeftFunc func(Member)
type DelegateNodeFunc ¶
type DelegateStoreConnInfo ¶
type DelegateStoreConnInfo func(quicstream.ConnInfo)
type EnsureBroadcastMessageHeader ¶
type EnsureBroadcastMessageHeader struct { base.BaseNodeSign quicstreamheader.BaseRequestHeader // contains filtered or unexported fields }
func NewEnsureBroadcastMessageHeader ¶
func NewEnsureBroadcastMessageHeader( id string, prefix quicstream.HandlerPrefix, node base.Address, signer base.Privatekey, networkID base.NetworkID, ) (EnsureBroadcastMessageHeader, error)
func (*EnsureBroadcastMessageHeader) DecodeJSON ¶
func (h *EnsureBroadcastMessageHeader) DecodeJSON(b []byte, enc encoder.Encoder) error
func (EnsureBroadcastMessageHeader) ID ¶
func (h EnsureBroadcastMessageHeader) ID() string
func (EnsureBroadcastMessageHeader) IsValid ¶
func (h EnsureBroadcastMessageHeader) IsValid([]byte) error
func (EnsureBroadcastMessageHeader) MarshalJSON ¶
func (h EnsureBroadcastMessageHeader) MarshalJSON() ([]byte, error)
type EventsDelegate ¶
func NewEventsDelegate ¶
func NewEventsDelegate( jsonencoder encoder.Encoder, joinedf DelegateJoinedFunc, leftf DelegateLeftFunc, ) *EventsDelegate
func (*EventsDelegate) NotifyJoin ¶
func (d *EventsDelegate) NotifyJoin(peer *memberlist.Node)
func (*EventsDelegate) NotifyLeave ¶
func (d *EventsDelegate) NotifyLeave(peer *memberlist.Node)
func (*EventsDelegate) NotifyUpdate ¶
func (d *EventsDelegate) NotifyUpdate(peer *memberlist.Node)
type FilterNotifyMsgFunc ¶
type Member ¶
type Member interface { util.IsValider Addr() *net.UDPAddr ConnInfo() quicstream.ConnInfo Name() string Address() base.Address Publickey() base.Publickey Publish() NamedConnInfo JoinedAt() time.Time MetaBytes() []byte HashBytes() []byte }
func AliveMembers ¶
func AliveMembers( m *Memberlist, exclude func(Member) bool, ) []Member
func RandomAliveMembers ¶
type Memberlist ¶
type Memberlist struct { *logging.Logging *util.ContextDaemon // contains filtered or unexported fields }
func NewMemberlist ¶
func NewMemberlist(local Member, args *MemberlistArgs) (*Memberlist, error)
func (*Memberlist) Broadcast ¶
func (srv *Memberlist) Broadcast(b memberlist.Broadcast)
func (*Memberlist) CallbackBroadcast ¶
func (srv *Memberlist) CallbackBroadcast(b []byte, id string, notifych chan struct{}) error
func (*Memberlist) CallbackBroadcastHandler ¶
func (srv *Memberlist) CallbackBroadcastHandler() quicstreamheader.Handler[CallbackBroadcastMessageHeader]
func (*Memberlist) CanBroadcast ¶
func (srv *Memberlist) CanBroadcast() bool
func (*Memberlist) EnsureBroadcast ¶
func (*Memberlist) EnsureBroadcastHandler ¶
func (srv *Memberlist) EnsureBroadcastHandler( networkID base.NetworkID, memberf func(base.Address) (base.Publickey, bool, error), ) quicstreamheader.Handler[EnsureBroadcastMessageHeader]
func (*Memberlist) IsJoined ¶
func (srv *Memberlist) IsJoined() bool
IsJoined indicates whether local is joined in remote network. If no other remote members, IsJoined will be false.
func (*Memberlist) Join ¶
func (srv *Memberlist) Join(cis []quicstream.ConnInfo) error
func (*Memberlist) Members ¶
func (srv *Memberlist) Members(f func(Member) bool)
func (*Memberlist) MembersLen ¶
func (srv *Memberlist) MembersLen() int
MembersLen() returns number of all the joined members.
func (*Memberlist) Remotes ¶
func (srv *Memberlist) Remotes(f func(Member) bool)
func (*Memberlist) RemotesLen ¶
func (srv *Memberlist) RemotesLen() int
RemotesLen() returns number of all the joined members except local.
func (*Memberlist) SetLogging ¶
func (srv *Memberlist) SetLogging(l *logging.Logging) *logging.Logging
func (*Memberlist) SetNotifyMsg ¶
func (srv *Memberlist) SetNotifyMsg(f func([]byte, encoder.Encoder)) *Memberlist
func (*Memberlist) SetWhenLeftFunc ¶
func (srv *Memberlist) SetWhenLeftFunc(f func(Member)) *Memberlist
type MemberlistArgs ¶
type MemberlistArgs struct { Encoder encoder.Encoder Config *memberlist.Config PatchedConfig *memberlist.Config FetchCallbackBroadcastMessageFunc func(context.Context, ConnInfoBroadcastMessage) ([]byte, encoder.Encoder, error) PongEnsureBroadcastMessageFunc func(context.Context, ConnInfoBroadcastMessage) error WhenLeftFunc func(Member) // Members, which has same node address will be allowed to join up to // ExtraSameMemberLimit + 1. If ExtraSameMemberLimit is 0, only 1 member is // allowed to join. ExtraSameMemberLimit func() uint64 // Not-allowed member will be cached for NotAllowedMemberExpire, after // NotAllowedMemberExpire, not-allowed member will be checked by allowf of // AliveDelegate. NotAllowedMemberExpire time.Duration ChallengeExpire time.Duration CallbackBroadcastMessageExpire time.Duration FetchCallbackBroadcastMessageTimeout time.Duration PongEnsureBroadcastMessageTimeout time.Duration PongEnsureBroadcastMessageExpire time.Duration }
func NewMemberlistArgs ¶
func NewMemberlistArgs(jsonencoder encoder.Encoder, config *memberlist.Config) *MemberlistArgs
type NamedConnInfo ¶
type NamedConnInfo struct {
// contains filtered or unexported fields
}
func NewNamedConnInfo ¶
func NewNamedConnInfo(addr string, tlsinsecure bool) (nci NamedConnInfo, _ error)
func NewNamedConnInfoFromConnInfo ¶
func NewNamedConnInfoFromConnInfo(ci quicstream.ConnInfo) NamedConnInfo
func (NamedConnInfo) Addr ¶
func (c NamedConnInfo) Addr() net.Addr
func (NamedConnInfo) ConnInfo ¶
func (c NamedConnInfo) ConnInfo() quicstream.ConnInfo
func (NamedConnInfo) IsValid ¶
func (c NamedConnInfo) IsValid([]byte) error
func (NamedConnInfo) MarshalText ¶
func (c NamedConnInfo) MarshalText() ([]byte, error)
func (NamedConnInfo) String ¶
func (c NamedConnInfo) String() string
func (NamedConnInfo) TLSInsecure ¶
func (c NamedConnInfo) TLSInsecure() bool
func (*NamedConnInfo) UnmarshalText ¶
func (c *NamedConnInfo) UnmarshalText(b []byte) error
type Transport ¶
func NewTransport ¶
func NewTransport( laddr *net.UDPAddr, args *TransportArgs, ) *Transport
func NewTransportWithQuicstream ¶
func NewTransportWithQuicstream( laddr *net.UDPAddr, handler quicstream.HandlerName, dialf quicstream.ConnInfoDialFunc, notallowf func(string) bool, requestTimeoutf func() time.Duration, ) *Transport
func (*Transport) DialAddressTimeout ¶
func (*Transport) DialTimeout ¶
func (*Transport) FinalAdvertiseAddr ¶
func (*Transport) PacketCh ¶
func (t *Transport) PacketCh() <-chan *memberlist.Packet
func (*Transport) QuicstreamHandler ¶
func (*Transport) WriteToAddress ¶
type TransportArgs ¶
type TransportArgs struct { DialFunc TransportDialFunc WriteFunc TransportWriteFunc NotAllowFunc func(string) bool }
func NewTransportArgs ¶
func NewTransportArgs() *TransportArgs
type TransportDialFunc ¶
type TransportDialFunc func(context.Context, quicstream.ConnInfo) error
type TransportGetConnInfo ¶
type TransportGetConnInfo func(*net.UDPAddr) (quicstream.ConnInfo, error)
type TransportWriteFunc ¶
Click to show internal directories.
Click to hide internal directories.