peer

package
v0.0.0-...-7ece11e Latest Latest
Warning

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

Go to latest
Published: Aug 29, 2023 License: MIT Imports: 27 Imported by: 1

Documentation

Index

Constants

View Source
const (
	MessageToAll    = byte('a')
	MessageToShard  = byte('s')
	MessageToPeer   = byte('p')
	MessageToBeacon = byte('b')
)
View Source
const (
	// RemotePeer err
	UnexpectedError = iota
	PeerGenerateKeyPairError
	CreateP2PNodeError
	CreateP2PAddressError
	GetPeerIdFromProtocolError
	OpeningStreamP2PError
	HandleNewStreamError

	// PeerConn err
	HandleMessageCheckResponse
	HandleMessageCheck
	LimitByteForMessageError
	ReadStringMessageError
	HexDecodeMessageError
	UnzipMessageError
	HashToPoolError
	MessageTypeError
	CheckForwardError
	ParseJsonMessageError
	CacheMessageHashError
	UnhandleMessageTypeError
)
View Source
const (
	PrefixProtocolID = "/incognito/"
)

Variables

View Source
var ErrCodeMessage = map[int]struct {
	Code    int
	Message string
}{

	UnexpectedError:            {-1001, "Unexpected"},
	PeerGenerateKeyPairError:   {-1001, "Can not generate key pair with reader"},
	CreateP2PNodeError:         {-1002, "Can not create libp2p node"},
	CreateP2PAddressError:      {-1003, "Can not create libp2p address for node"},
	GetPeerIdFromProtocolError: {-1004, "Can not get peer id from protocol"},
	OpeningStreamP2PError:      {-1005, "Fail in opening stream "},
	HandleNewStreamError:       {-1006, "Handle new stream error"},

	HandleMessageCheckResponse: {-2001, "Handle message check response error"},
	HandleMessageCheck:         {-2002, "Handle message check error"},
	LimitByteForMessageError:   {-2003, "Limit byte for message"},
	ReadStringMessageError:     {-2004, "Read message error"},
	HexDecodeMessageError:      {-2005, "Hex decode message error"},
	UnzipMessageError:          {-2006, "Unzip message error"},
	HashToPoolError:            {-2007, "Insert hash of message to pool error"},
	MessageTypeError:           {-2008, "Can not find particular message for message cmd type"},
	CheckForwardError:          {-2009, "Check forward error"},
	ParseJsonMessageError:      {-2010, "Can not parse struct from json message"},
	CacheMessageHashError:      {-2011, "Cache messagse hash error"},
	UnhandleMessageTypeError:   {-2012, "Received unhandled message of type"},
}
View Source
var Logger = PeerLoger{}

Global instant to use

Functions

func GetInboundMessagesByPeer

func GetInboundMessagesByPeer() map[string]int

func GetInboundPeerMessages

func GetInboundPeerMessages() map[string][]PeerMessageInOut

func GetOutboundMessagesByPeer

func GetOutboundMessagesByPeer() map[string]int

func GetOutboundPeerMessages

func GetOutboundPeerMessages() map[string][]PeerMessageInOut

Types

type Config

type Config struct {
	MessageListeners MessageListeners
	// UserKeySet       *incognitokey.KeySet
	MaxOutPeers     int
	MaxInPeers      int
	MaxPeers        int
	ConsensusEngine interface {
		GetCurrentMiningPublicKey() (publickey string, keyType string)
		VerifyData(data []byte, sig string, publicKey string, consensusType string) error
		SignDataWithCurrentMiningKey(data []byte) (string, string, string, error)
	}
}

config is the struct to hold configuration options useful to RemotePeer.

type ConnState

type ConnState uint8

ConnState represents the state of the requested connection.

type MessageListeners

type MessageListeners struct {
	OnTx             func(p *PeerConn, msg *wire.MessageTx)
	OnTxPrivacyToken func(p *PeerConn, msg *wire.MessageTxPrivacyToken)
	OnBlockShard     func(p *PeerConn, msg *wire.MessageBlockShard)
	OnBlockBeacon    func(p *PeerConn, msg *wire.MessageBlockBeacon)
	OnCrossShard     func(p *PeerConn, msg *wire.MessageCrossShard)
	OnGetBlockBeacon func(p *PeerConn, msg *wire.MessageGetBlockBeacon)
	OnGetBlockShard  func(p *PeerConn, msg *wire.MessageGetBlockShard)
	OnGetCrossShard  func(p *PeerConn, msg *wire.MessageGetCrossShard)
	OnVersion        func(p *PeerConn, msg *wire.MessageVersion)
	OnVerAck         func(p *PeerConn, msg *wire.MessageVerAck)
	OnGetAddr        func(p *PeerConn, msg *wire.MessageGetAddr)
	OnAddr           func(p *PeerConn, msg *wire.MessageAddr)

	//PBFT
	OnBFTMsg             func(p *PeerConn, msg wire.Message)
	OnPeerState          func(p *PeerConn, msg *wire.MessagePeerState)
	OnFinishSync         func(p *PeerConn, msg *wire.MessageFinishSync)
	OnFeatureMsg         func(p *PeerConn, msg *wire.MessageFeature)
	PushRawBytesToShard  func(p *PeerConn, msgBytes *[]byte, shard byte) error
	PushRawBytesToBeacon func(p *PeerConn, msgBytes *[]byte) error
	GetCurrentRoleShard  func() (string, *byte)
}

// MessageListeners defines callback function pointers to invoke with message // listeners for a peer. Any listener which is not set to a concrete callback // during peer initialization is ignored. Execution of multiple message // listeners occurs serially, so one callback blocks the execution of the next. // // NOTE: Unless otherwise documented, these listeners must NOT directly call any // blocking calls (such as WaitForShutdown) on the peer instance since the input // handler goroutine blocks until the callback has completed. Doing so will // result in a deadlock.

type Peer

type Peer struct {

	// public field
	HandleConnected    func(peerConn *PeerConn)
	HandleDisconnected func(peerConn *PeerConn)
	HandleFailed       func(peerConn *PeerConn)
	// contains filtered or unexported fields
}

RemotePeer is present for libp2p node data

func (*Peer) CheckHashPool

func (peerObj *Peer) CheckHashPool(hash string) bool

func (Peer) GetConfig

func (peerObj Peer) GetConfig() Config

func (Peer) GetHost

func (peerObj Peer) GetHost() host.Host

func (Peer) GetListeningAddress

func (peerObj Peer) GetListeningAddress() common.SimpleAddr

func (*Peer) GetPeerConnByPeerID

func (peerObj *Peer) GetPeerConnByPeerID(peerID string) *PeerConn

func (*Peer) GetPeerConnOfAll

func (peerObj *Peer) GetPeerConnOfAll() []*PeerConn

GetPeerConnOfAll - return all Peer connection to other peers

func (Peer) GetPeerConns

func (peerObj Peer) GetPeerConns() map[string]*PeerConn

func (Peer) GetPeerConnsMtx

func (peerObj Peer) GetPeerConnsMtx() *sync.Mutex

func (Peer) GetPeerID

func (peerObj Peer) GetPeerID() peer.ID

func (Peer) GetPendingPeers

func (peerObj Peer) GetPendingPeers() map[string]*Peer

func (Peer) GetPort

func (peerObj Peer) GetPort() string

func (Peer) GetPublicKey

func (peerObj Peer) GetPublicKey() (string, string)

GetPublicKey return publicKey and keyType

func (Peer) GetRawAddress

func (peerObj Peer) GetRawAddress() string

func (Peer) GetTargetAddress

func (peerObj Peer) GetTargetAddress() ma.Multiaddr

func (*Peer) HashToPool

func (peerObj *Peer) HashToPool(hash string) error

func (*Peer) Init

func (peerObj *Peer) Init(protocolIDStr string) error

Init - init a peer with go libp2p

func (*Peer) PushConn

func (peerObj *Peer) PushConn(peer *Peer, cConn chan *PeerConn)

func (*Peer) QueueMessageWithEncoding

func (peerObj *Peer) QueueMessageWithEncoding(msg wire.Message, doneChan chan<- struct{}, msgType byte, msgShard *byte)

QueueMessageWithEncoding adds the passed Incognito message to the peer send queue. This function is identical to QueueMessage, however it allows the caller to specify the wire encoding type that should be used when encoding/decoding blocks and transactions.

This function is safe for concurrent access.

func (*Peer) SetConfig

func (peerObj *Peer) SetConfig(config Config)

func (*Peer) SetListeningAddress

func (peerObj *Peer) SetListeningAddress(v common.SimpleAddr)

func (*Peer) SetPeerConns

func (peerObj *Peer) SetPeerConns(data map[string]*PeerConn)

func (*Peer) SetPeerConnsMtx

func (peerObj *Peer) SetPeerConnsMtx(v *sync.Mutex)

func (*Peer) SetPeerID

func (peerObj *Peer) SetPeerID(peerID peer.ID)

func (*Peer) SetPendingPeers

func (peerObj *Peer) SetPendingPeers(data map[string]*Peer)

func (*Peer) SetPublicKey

func (peerObj *Peer) SetPublicKey(publicKey string, keyType string)

func (*Peer) SetRawAddress

func (peerObj *Peer) SetRawAddress(rawAddress string)

func (*Peer) SetSeed

func (peerObj *Peer) SetSeed(v int64)

func (*Peer) SetTargetAddress

func (peerObj *Peer) SetTargetAddress(targetAddress ma.Multiaddr)

func (*Peer) Start

func (peerObj *Peer) Start()

Start - start peer to begin waiting for connections from other peers

func (*Peer) Stop

func (peerObj *Peer) Stop()

Stop - stop all features of peer, not connect, not stream, not read and write message on stream

type PeerConn

type PeerConn struct {
	HandleConnected    func(peerConn *PeerConn)
	HandleDisconnected func(peerConn *PeerConn)
	HandleFailed       func(peerConn *PeerConn)
	// contains filtered or unexported fields
}

func (*PeerConn) ForceClose

func (p *PeerConn) ForceClose()

ForceClose - set flag and close channel

func (*PeerConn) GetIsOutbound

func (peerConn *PeerConn) GetIsOutbound() bool

Start GET/SET func

func (PeerConn) GetListenerPeer

func (p PeerConn) GetListenerPeer() *Peer

func (PeerConn) GetRemotePeer

func (p PeerConn) GetRemotePeer() *Peer

func (PeerConn) GetRemotePeerID

func (p PeerConn) GetRemotePeerID() peer.ID

func (PeerConn) GetRemoteRawAddress

func (p PeerConn) GetRemoteRawAddress() string

func (*PeerConn) QueueMessageWithBytes

func (peerConn *PeerConn) QueueMessageWithBytes(msgBytes *[]byte, doneChan chan<- struct{})

QueueMessageWithBytes -

func (*PeerConn) QueueMessageWithEncoding

func (peerConn *PeerConn) QueueMessageWithEncoding(msg wire.Message, doneChan chan<- struct{}, forwardType byte, forwardValue *byte)

QueueMessageWithEncoding adds the passed Incognito message to the peer send queue. This function is identical to QueueMessage, however it allows the caller to specify the wire encoding type that should be used when encoding/decoding blocks and transactions.

This function is safe for concurrent access.

func (*PeerConn) SetListenerPeer

func (p *PeerConn) SetListenerPeer(v *Peer)

func (*PeerConn) SetRemotePeer

func (p *PeerConn) SetRemotePeer(v *Peer)

func (*PeerConn) SetRemotePeerID

func (p *PeerConn) SetRemotePeerID(v peer.ID)

func (*PeerConn) SetVerValid

func (p *PeerConn) SetVerValid(v bool)

func (*PeerConn) VerAckReceived

func (p *PeerConn) VerAckReceived() bool

type PeerError

type PeerError struct {
	Code    int
	Message string
	// contains filtered or unexported fields
}

func NewPeerError

func NewPeerError(key int, err error, peer *Peer) *PeerError

func (PeerError) Error

func (e PeerError) Error() string

type PeerLoger

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

func (*PeerLoger) Init

func (peerLogger *PeerLoger) Init(inst common.Logger)

type PeerMessageInOut

type PeerMessageInOut struct {
	PeerID  peer.ID      `json:"PeerID"`
	Message wire.Message `json:"Message"`
	Time    int64        `json:"Time"`
}

Jump to

Keyboard shortcuts

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