Documentation ¶
Index ¶
- Constants
- Variables
- type AdvertisableAddressResolver
- type Service
- func (s *Service) GetWelcomeMessage() string
- func (s *Service) Handle(ctx context.Context, stream p2p.Stream, remoteMultiaddr ma.Multiaddr, ...) (i *address.AddressInfo, err error)
- func (s *Service) Handshake(ctx context.Context, stream p2p.Stream, peerMultiaddr ma.Multiaddr, ...) (i *address.AddressInfo, err error)
- func (s *Service) Metrics() []prometheus.Collector
- func (s *Service) SetPicker(n p2p.Picker)
- func (s *Service) SetWelcomeMessage(msg string) (err error)
Constants ¶
View Source
const ( // ProtocolName is the text of the name of the handshake protocol. ProtocolName = "handshake" // ProtocolVersion is the current handshake protocol version. ProtocolVersion = "4.0.0" // StreamName is the name of the stream used for handshake purposes. StreamName = "handshake" // MaxWelcomeMessageLength is maximum number of characters allowed in the welcome message. MaxWelcomeMessageLength = 140 )
Variables ¶
View Source
var ( // ErrNetworkIDIncompatible is returned if response from the other peer does not have valid networkID. ErrNetworkIDIncompatible = errors.New("incompatible network ID") // ErrInvalidAck is returned if data in received in ack is not valid (invalid signature for example). ErrInvalidAck = errors.New("invalid ack") // ErrInvalidSyn is returned if observable address in ack is not a valid.. ErrInvalidSyn = errors.New("invalid syn") // ErrWelcomeMessageLength is returned if the welcome message is longer than the maximum length ErrWelcomeMessageLength = fmt.Errorf("handshake welcome message longer than maximum of %d characters", MaxWelcomeMessageLength) // ErrPicker is returned if the picker (kademlia) rejects the peer ErrPicker = fmt.Errorf("picker rejection") ErrPickerLight = fmt.Errorf("picker rejection light") )
Functions ¶
This section is empty.
Types ¶
type AdvertisableAddressResolver ¶
type AdvertisableAddressResolver interface {
Resolve(observedAddress ma.Multiaddr) (ma.Multiaddr, error)
}
AdvertisableAddressResolver can Resolve a Multiaddress.
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service can perform initiate or handle a handshake between peers.
func New ¶
func New(signer crypto.Signer, advertisableAddresser AdvertisableAddressResolver, overlay boson.Address, networkID uint64, nodeMode address.Model, welcomeMessage string, ownPeerID libp2ppeer.ID, logger logging.Logger, lightNodes *lightnode.Container, lightLimit int) (*Service, error)
New creates a new handshake Service.
func (*Service) GetWelcomeMessage ¶
GetWelcomeMessage returns the current handshake welcome message.
func (*Service) Handle ¶
func (s *Service) Handle(ctx context.Context, stream p2p.Stream, remoteMultiaddr ma.Multiaddr, remotePeerID libp2ppeer.ID) (i *address.AddressInfo, err error)
Handle handles an incoming handshake from a peer.
func (*Service) Handshake ¶
func (s *Service) Handshake(ctx context.Context, stream p2p.Stream, peerMultiaddr ma.Multiaddr, peerID libp2ppeer.ID) (i *address.AddressInfo, err error)
Handshake initiates a handshake with a peer.
func (*Service) Metrics ¶
func (s *Service) Metrics() []prometheus.Collector
Metrics returns set of prometheus collectors.
func (*Service) SetWelcomeMessage ¶
SetWelcomeMessage sets the new handshake welcome message.
Click to show internal directories.
Click to hide internal directories.