p2p

package
v1.0.6-chaosnet Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2020 License: MIT Imports: 27 Imported by: 5

Documentation

Index

Constants

View Source
const (
	LengthHeader        = 4 // LengthHeader represent how many bytes we used as header
	TimeoutReadPayload  = time.Second * 10
	TimeoutWritePayload = time.Second * 10
	MaxPayload          = 512000 // 512kb
)
View Source
const (
	// TimeoutConnecting maximum time for wait for peers to connect
	TimeoutConnecting = time.Second * 20
)

Variables

View Source
var ApplyDeadline = true

applyDeadline will be true , and only disable it when we are doing test the reason being the p2p network , mocknet, mock stream doesn't support SetReadDeadline ,SetWriteDeadline feature

View Source
var TSSProtocolID protocol.ID = "/p2p/tss"

TSSProtocolID protocol id used for tss

Functions

func LeaderNode

func LeaderNode(buf []byte, numNodes int32) (int32, error)

LeaderNode use the given input buf to calculate a hash , and consistently choose a node as a master coordinate note

func ReadStreamWithBuffer

func ReadStreamWithBuffer(stream network.Stream) ([]byte, error)

ReadStreamWithBuffer read data from the given stream

func WriteStreamWithBuffer

func WriteStreamWithBuffer(msg []byte, stream network.Stream) error

WriteStreamWithBuffer write the message to stream

Types

type Communication

type Communication struct {
	BroadcastMsgChan chan *messages.BroadcastMsgChan
	// contains filtered or unexported fields
}

Communication use p2p to broadcast messages among all the TSS nodes

func NewCommunication

func NewCommunication(rendezvous string, bootstrapPeers []maddr.Multiaddr, port int, externalIP string) (*Communication, error)

NewCommunication create a new instance of Communication

func (*Communication) Broadcast

func (c *Communication) Broadcast(peers []peer.ID, msg []byte, msgID string)

Broadcast message to Peers

func (*Communication) CancelSubscribe

func (c *Communication) CancelSubscribe(topic messages.THORChainTSSMessageType, msgID string)

func (*Communication) ExportPeerAddress

func (c *Communication) ExportPeerAddress() map[peer.ID]addr.AddrList

func (*Communication) GetHost

func (c *Communication) GetHost() host.Host

GetHost return the host

func (*Communication) GetLocalPeerID

func (c *Communication) GetLocalPeerID() string

GetLocalPeerID from p2p host

func (*Communication) ProcessBroadcast

func (c *Communication) ProcessBroadcast()

func (*Communication) ReleaseStream

func (c *Communication) ReleaseStream(msgID string)

func (*Communication) SetSubscribe

func (c *Communication) SetSubscribe(topic messages.THORChainTSSMessageType, msgID string, channel chan *Message)

func (*Communication) Start

func (c *Communication) Start(priKeyBytes []byte) error

Start will start the communication

func (*Communication) Stop

func (c *Communication) Stop() error

Stop communication

type Config

type Config struct {
	RendezvousString string
	Port             int
	BootstrapPeers   addrList
	ExternalIP       string
}

Config is configuration for P2P

type JoinParty

type JoinParty struct {
	Msg  *messages.JoinPartyRequest
	Peer peer.ID
	Resp chan *messages.JoinPartyResponse
}

JoinParty represent a join party request

func NewJoinParty

func NewJoinParty(msg *messages.JoinPartyRequest, peer peer.ID) *JoinParty

NewJoinParty create a new instance of JoinParty

type Message

type Message struct {
	PeerID  peer.ID
	Payload []byte
}

Message that get transfer across the wire

type MessageIDSubscriber

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

MessageIDSubscriber

func NewMessageIDSubscriber

func NewMessageIDSubscriber() *MessageIDSubscriber

NewMessageIDSubscriber create a new instance of MessageIDSubscriber

func (*MessageIDSubscriber) GetSubscriber

func (ms *MessageIDSubscriber) GetSubscriber(msgID string) chan *Message

GetSubscribers return a subscriber of given message id

func (*MessageIDSubscriber) IsEmpty

func (ms *MessageIDSubscriber) IsEmpty() bool

IsEmpty check whether there is subscribers

func (*MessageIDSubscriber) Subscribe

func (ms *MessageIDSubscriber) Subscribe(msgID string, channel chan *Message)

Subscribe a message id

func (*MessageIDSubscriber) UnSubscribe

func (ms *MessageIDSubscriber) UnSubscribe(msgID string)

UnSubscribe a messageid

type PartyCoordinator

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

func NewPartyCoordinator

func NewPartyCoordinator(host host.Host, timeout time.Duration) *PartyCoordinator

NewPartyCoordinator create a new instance of PartyCoordinator

func (*PartyCoordinator) HandleStream

func (pc *PartyCoordinator) HandleStream(stream network.Stream)

HandleStream handle party coordinate stream

func (*PartyCoordinator) JoinPartyWithRetry

func (pc *PartyCoordinator) JoinPartyWithRetry(msg *messages.JoinPartyRequest, peers []string) ([]peer.ID, error)

JoinPartyWithRetry this method provide the functionality to join party with retry and back off

func (*PartyCoordinator) ReleaseStream

func (pc *PartyCoordinator) ReleaseStream(msgID string)

func (*PartyCoordinator) Stop

func (pc *PartyCoordinator) Stop()

Stop the PartyCoordinator rune

type PeerStatus

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

func NewPeerStatus

func NewPeerStatus(peerNodes []peer.ID, myPeerID peer.ID) *PeerStatus

type StreamMgr

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

func NewStreamMgr

func NewStreamMgr() *StreamMgr

func (*StreamMgr) AddStream

func (sm *StreamMgr) AddStream(msgID string, stream network.Stream)

func (*StreamMgr) ReleaseStream

func (sm *StreamMgr) ReleaseStream(msgID string)

Jump to

Keyboard shortcuts

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