 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
This section is empty.
Variables ¶
      View Source
      
  
var (
	ErrRequestFailed = errors.New("request failed")
)
    Functions ¶
func NewPeerTracker ¶ added in v0.3.0
func NewPeerTracker() *peerTracker
Types ¶
type Network ¶
type Network interface {
	validators.Connector
	common.AppHandler
	// SendAppRequestAny synchronously sends request to an arbitrary peer with a
	// node version greater than or equal to minVersion.
	// Returns the ID of the chosen peer, and an error if the request could not
	// be sent to a peer with the desired [minVersion].
	SendAppRequestAny(minVersion *version.Application, message []byte, handler message.ResponseHandler) (ids.NodeID, error)
	// SendAppRequest sends message to given nodeID, notifying handler when there's a response or timeout
	SendAppRequest(nodeID ids.NodeID, message []byte, handler message.ResponseHandler) error
	// Gossip sends given gossip message to peers
	Gossip(gossip []byte) error
	// SendCrossChainRequest sends a message to given chainID notifying handler when there's a response or timeout
	SendCrossChainRequest(chainID ids.ID, message []byte, handler message.ResponseHandler) error
	// Shutdown stops all peer channel listeners and marks the node to have stopped
	// n.Start() can be called again but the peers will have to be reconnected
	// by calling OnPeerConnected for each peer
	Shutdown()
	// SetGossipHandler sets the provided gossip handler as the gossip handler
	SetGossipHandler(handler message.GossipHandler)
	// SetRequestHandler sets the provided request handler as the request handler
	SetRequestHandler(handler message.RequestHandler)
	// SetCrossChainHandler sets the provided cross chain request handler as the cross chain request handler
	SetCrossChainRequestHandler(handler message.CrossChainRequestHandler)
	// Size returns the size of the network in number of connected peers
	Size() uint32
	// TrackBandwidth should be called for each valid request with the bandwidth
	// (length of response divided by request time), and with 0 if the response is invalid.
	TrackBandwidth(nodeID ids.NodeID, bandwidth float64)
}
    type NetworkClient ¶ added in v0.3.0
type NetworkClient interface {
	// SendAppRequestAny synchronously sends request to an arbitrary peer with a
	// node version greater than or equal to minVersion.
	// Returns response bytes, the ID of the chosen peer, and ErrRequestFailed if
	// the request should be retried.
	SendAppRequestAny(minVersion *version.Application, request []byte) ([]byte, ids.NodeID, error)
	// SendAppRequest synchronously sends request to the selected nodeID
	// Returns response bytes, and ErrRequestFailed if the request should be retried.
	SendAppRequest(nodeID ids.NodeID, request []byte) ([]byte, error)
	// SendCrossChainRequest sends a request to a specific blockchain running on this node.
	// Returns response bytes, and ErrRequestFailed if the request failed.
	SendCrossChainRequest(chainID ids.ID, request []byte) ([]byte, error)
	// Gossip sends given gossip message to peers
	Gossip(gossip []byte) error
	// TrackBandwidth should be called for each valid request with the bandwidth
	// (length of response divided by request time), and with 0 if the response is invalid.
	TrackBandwidth(nodeID ids.NodeID, bandwidth float64)
}
    NetworkClient defines ability to send request / response through the Network
func NewNetworkClient ¶ added in v0.3.0
func NewNetworkClient(network Network) NetworkClient
NewNetworkClient returns Client for a given network
 Click to show internal directories. 
   Click to hide internal directories.