Documentation ¶
Index ¶
- Constants
- Variables
- type AdvertisableAddressResolver
- type Info
- type Model
- type Service
- func (s *Service) Disconnected(_ network.Network, c network.Conn)
- func (s *Service) GetWelcomeMessage() string
- func (s *Service) Handle(ctx context.Context, stream p2p.Stream, remoteMultiaddr ma.Multiaddr, ...) (i *Info, err error)
- func (s *Service) Handshake(ctx context.Context, stream p2p.Stream, peerMultiaddr ma.Multiaddr, ...) (i *Info, err error)
- 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 )
View Source
const ( FullNode = iota LightNode )
Variables ¶
View Source
var ( // ErrNetworkIDIncompatible is returned if response from the other peer does not have valid networkID. ErrNetworkIDIncompatible = errors.New("incompatible network ID") // ErrHandshakeDuplicate is returned if the handshake response has been received by an already processed peer. ErrHandshakeDuplicate = errors.New("duplicate handshake") // 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) )
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 { network.Notifiee // handshake service can be the receiver for network.Notify // 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, fullNode bool, welcomeMessage string, ownPeerID libp2ppeer.ID, logger logging.Logger) (*Service, error)
New creates a new handshake Service.
func (*Service) Disconnected ¶
Disconnected is called when the peer disconnects.
func (*Service) GetWelcomeMessage ¶
GetWelcomeMessage returns the 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 *Info, 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 *Info, err error)
Handshake initiates a handshake with a peer.
func (*Service) SetWelcomeMessage ¶
SetWelcomeMessage sets the new handshake welcome message.
Click to show internal directories.
Click to hide internal directories.