Documentation
¶
Index ¶
- Constants
- func LocalState() uint64
- type AddressManager
- func (addrManager *AddressManager) AddAddress(addr *common.NetAddress)
- func (addrManager *AddressManager) AddAddresses(addrs []*common.NetAddress)
- func (addrManager *AddressManager) AddLocalAddress(port int32) error
- func (addrManager *AddressManager) AddOurAddress(addr *common.NetAddress)
- func (addrManager *AddressManager) GetAddress() (*common.NetAddress, error)
- func (addrManager *AddressManager) GetAddressAttemptInfo(addr *common.NetAddress) (attemptNum uint32, lastAttemptTime time.Time)
- func (addrManager *AddressManager) GetAddressCount() int
- func (addrManager *AddressManager) GetAddresses() []*common.NetAddress
- func (addrManager *AddressManager) GetAllAddress() []*common.NetAddress
- func (addrManager *AddressManager) IsOurAddress(addr *common.NetAddress) bool
- func (addrManager *AddressManager) NeedMoreAddrs() bool
- func (addrManager *AddressManager) OurAddresses() []*common.NetAddress
- func (addrManager *AddressManager) RemoveAddress(addr *common.NetAddress)
- func (addrManager *AddressManager) ResetAddressAttemptInfo(addr *common.NetAddress)
- func (addrManager *AddressManager) Save()
- func (addrManager *AddressManager) Start()
- func (addrManager *AddressManager) Stop()
- func (addrManager *AddressManager) UpdateAddressAttemptInfo(addr *common.NetAddress)
- type AttemptInfo
- type DebugHandler
- type InternalMsg
- type P2P
- func (service *P2P) BroadCast(msg message.Message)
- func (service *P2P) Gather(peerFilter PeerFilter, reqMsg message.Message) error
- func (service *P2P) GetInBountPeersCount() int
- func (service *P2P) GetOutBountPeersCount() int
- func (service *P2P) GetPeerByAddress(addr *common.NetAddress) *Peer
- func (service *P2P) GetPeers() []*Peer
- func (service *P2P) MessageChan() <-chan *InternalMsg
- func (service *P2P) SendMsg(peerAddr *common.NetAddress, msg message.Message) error
- func (service *P2P) Start() error
- func (service *P2P) Stop()
- type P2PAPI
- type Peer
- func (peer *Peer) CurrentState() uint64
- func (peer *Peer) GetAddr() *common.NetAddress
- func (peer *Peer) GetState() uint64
- func (peer *Peer) IsOutBound() bool
- func (peer *Peer) IsPersistent() bool
- func (peer *Peer) KnownMsg(msg message.Message) bool
- func (peer *Peer) SendMsg(msg *InternalMsg) error
- func (peer *Peer) SetState(state uint64)
- func (peer *Peer) Start() error
- func (peer *Peer) Stop()
- type PeerCom
- type PeerConn
- type PeerFilter
Constants ¶
const ( MAX_BUF_LEN = 1024 * 256 //the maximum buffer To receive message WRITE_DEADLINE = 60 //deadline of conn write )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AddressManager ¶
type AddressManager struct {
// contains filtered or unexported fields
}
AddressManager is used To manage neighbor's address
func NewAddressManager ¶
func NewAddressManager(filePath string) *AddressManager
NewAddressManager create an address manager instance
func (*AddressManager) AddAddress ¶
func (addrManager *AddressManager) AddAddress(addr *common.NetAddress)
AddAddress add a new address
func (*AddressManager) AddAddresses ¶
func (addrManager *AddressManager) AddAddresses(addrs []*common.NetAddress)
AddAddresses add new addresses
func (*AddressManager) AddLocalAddress ¶
func (addrManager *AddressManager) AddLocalAddress(port int32) error
AddOurAddress add our local address.
func (*AddressManager) AddOurAddress ¶
func (addrManager *AddressManager) AddOurAddress(addr *common.NetAddress)
AddOurAddress add our local address.
func (*AddressManager) GetAddress ¶
func (addrManager *AddressManager) GetAddress() (*common.NetAddress, error)
GetAddress get a random address
func (*AddressManager) GetAddressAttemptInfo ¶ added in v1.0.0
func (addrManager *AddressManager) GetAddressAttemptInfo(addr *common.NetAddress) (attemptNum uint32, lastAttemptTime time.Time)
GetAddressAttemptInfo get address attempt info
func (*AddressManager) GetAddressCount ¶
func (addrManager *AddressManager) GetAddressCount() int
GetAddressCount get address count
func (*AddressManager) GetAddresses ¶
func (addrManager *AddressManager) GetAddresses() []*common.NetAddress
GetAddresses get a random address list To send To peer
func (*AddressManager) GetAllAddress ¶
func (addrManager *AddressManager) GetAllAddress() []*common.NetAddress
GetAllAddress get all address
func (*AddressManager) IsOurAddress ¶
func (addrManager *AddressManager) IsOurAddress(addr *common.NetAddress) bool
IsOurAddress check whether the address is our address
func (*AddressManager) NeedMoreAddrs ¶
func (addrManager *AddressManager) NeedMoreAddrs() bool
NeedMoreAddrs check whether need more address.
func (*AddressManager) OurAddresses ¶
func (addrManager *AddressManager) OurAddresses() []*common.NetAddress
OurAddresses get local address.
func (*AddressManager) RemoveAddress ¶
func (addrManager *AddressManager) RemoveAddress(addr *common.NetAddress)
RemoveAddress remove an address
func (*AddressManager) ResetAddressAttemptInfo ¶ added in v1.0.0
func (addrManager *AddressManager) ResetAddressAttemptInfo(addr *common.NetAddress)
ResetAddressAttemptInfo reset address attempt info
func (*AddressManager) Start ¶
func (addrManager *AddressManager) Start()
Start start address manager
func (*AddressManager) UpdateAddressAttemptInfo ¶ added in v1.0.0
func (addrManager *AddressManager) UpdateAddressAttemptInfo(addr *common.NetAddress)
UpdateAddressAttemptInfo update address attempt info
type AttemptInfo ¶ added in v1.0.0
type AttemptInfo struct { AttemptNum uint32 // number of attempt LastAttemptTime atomic.Value // unix time of last attempt }
AttemptInfo represent the address attempt info
type DebugHandler ¶ added in v1.0.0
type DebugHandler struct {
// contains filtered or unexported fields
}
DebugHandler is a handler used to trace p2p message and report the p2p topo info.
func NewDebugHandler ¶ added in v1.0.0
func NewDebugHandler(p2p *P2P, center types.EventCenter, debugServer string) *DebugHandler
NewDebugHandler create a new NewDebugHandler instance
func (*DebugHandler) BroadCastMsgEventSubscriber ¶ added in v1.0.0
func (this *DebugHandler) BroadCastMsgEventSubscriber(msg interface{})
EventSubscriber is the type of types.EventFunc, used to subscribe the p2p related event
func (*DebugHandler) RecvMsgEventSubscriber ¶ added in v1.0.0
func (this *DebugHandler) RecvMsgEventSubscriber(msg interface{})
RecvMsgEventSubscriber is the type of types.EventFunc, used to subscribe the p2p related event
func (*DebugHandler) ReportNeighborHandler ¶ added in v1.0.0
func (this *DebugHandler) ReportNeighborHandler()
ReportNeighborHandler report peer neighbor's handler
func (*DebugHandler) Start ¶ added in v1.0.0
func (this *DebugHandler) Start()
Start start p2p debug handler
func (*DebugHandler) Stop ¶ added in v1.0.0
func (this *DebugHandler) Stop()
Stop stop p2p debug handler
type InternalMsg ¶
type InternalMsg struct { From *common.NetAddress To *common.NetAddress Payload message.Message RespTo chan interface{} }
internal message type
type P2P ¶
type P2P struct { PeerCom // contains filtered or unexported fields }
P2P is p2p service implementation.
func (*P2P) Gather ¶
func (service *P2P) Gather(peerFilter PeerFilter, reqMsg message.Message) error
Gather gather newest data From p2p network
func (*P2P) GetInBountPeersCount ¶
GetOutBountPeersCount get out bount peer count
func (*P2P) GetOutBountPeersCount ¶
GetOutBountPeersCount get out bount peer count
func (*P2P) GetPeerByAddress ¶
func (service *P2P) GetPeerByAddress(addr *common.NetAddress) *Peer
GetPeerByAddress get a peer by net address
func (*P2P) MessageChan ¶
func (service *P2P) MessageChan() <-chan *InternalMsg
MessageChan get p2p's message channel, (Messages sent To the server will eventually be placed in the message channel)
type P2PAPI ¶
type P2PAPI interface { // Start start p2p service Start() error // Stop stop p2p service Stop() // BroadCast broad cast message To all neighbor peers BroadCast(msg message.Message) // SendMsg send message to a peer SendMsg(peerAddr *common.NetAddress, msg message.Message) error // Gather gather newest data From p2p network Gather(peerFilter PeerFilter, reqMsg message.Message) error // MessageChan get p2p's message channel, (Messages sent To the server will eventually be placed in the message channel) MessageChan() <-chan *InternalMsg }
type Peer ¶
type Peer struct { PeerCom // contains filtered or unexported fields }
Peer represent the peer
func NewInboundPeer ¶
func NewInboundPeer(serverInfo *PeerCom, addr *common.NetAddress, msgChan chan<- *InternalMsg, conn net.Conn) *Peer
NewInboundPeer new inbound peer instance
func NewOutboundPeer ¶
func NewOutboundPeer(serverInfo *PeerCom, addr *common.NetAddress, persistent bool, msgChan chan<- *InternalMsg) *Peer
NewInboundPeer new outbound peer instance
func (*Peer) CurrentState ¶
CurrentState get current state of this peer.
func (*Peer) IsOutBound ¶ added in v1.0.0
IsOutBound check whether the peer is outbound peer.
func (*Peer) IsPersistent ¶
IsPersistent return true if this peer is a persistent peer
func (*Peer) SendMsg ¶ added in v1.1.0
func (peer *Peer) SendMsg(msg *InternalMsg) error
Channel get peer's send channel
type PeerCom ¶ added in v1.0.0
type PeerCom struct {
// contains filtered or unexported fields
}
PeerCom provides the basic information of a peer
type PeerConn ¶
type PeerConn struct {
// contains filtered or unexported fields
}
PeerConn is the abstract of the net.Conn To this peer.
func NewPeerConn ¶
NewPeerConn create a PeerConn instance
func (*PeerConn) SendMessage ¶
SendMessage message To this PeerConn.
type PeerFilter ¶
PeerFilter used To filter the peer satisfy the request