Documentation ¶
Index ¶
- Variables
- func NewInmemAddr() string
- type EagerSyncRequest
- type EagerSyncResponse
- type FastForwardRequest
- type FastForwardResponse
- type InmemTransport
- func (i *InmemTransport) Close() error
- func (i *InmemTransport) Connect(peer string, t Transport)
- func (i *InmemTransport) Consumer() <-chan RPC
- func (i *InmemTransport) Disconnect(peer string)
- func (i *InmemTransport) DisconnectAll()
- func (i *InmemTransport) EagerSync(target string, args *EagerSyncRequest, resp *EagerSyncResponse) error
- func (i *InmemTransport) FastForward(target string, args *FastForwardRequest, resp *FastForwardResponse) error
- func (i *InmemTransport) Join(target string, args *JoinRequest, resp *JoinResponse) error
- func (i *InmemTransport) LocalAddr() string
- func (i *InmemTransport) Sync(target string, args *SyncRequest, resp *SyncResponse) error
- type JoinRequest
- type JoinResponse
- type NetworkTransport
- func (n *NetworkTransport) Close() error
- func (n *NetworkTransport) Consumer() <-chan RPC
- func (n *NetworkTransport) EagerSync(target string, args *EagerSyncRequest, resp *EagerSyncResponse) error
- func (n *NetworkTransport) FastForward(target string, args *FastForwardRequest, resp *FastForwardResponse) error
- func (n *NetworkTransport) IsShutdown() bool
- func (n *NetworkTransport) Join(target string, args *JoinRequest, resp *JoinResponse) error
- func (n *NetworkTransport) LocalAddr() string
- func (n *NetworkTransport) Sync(target string, args *SyncRequest, resp *SyncResponse) error
- type RPC
- type RPCResponse
- type StreamLayer
- type SyncRequest
- type SyncResponse
- type TCPStreamLayer
- type Transport
Constants ¶
This section is empty.
Variables ¶
var ( // ErrTransportShutdown is returned when operations on a transport are // invoked after it's been terminated. ErrTransportShutdown = errors.New("transport shutdown") )
Functions ¶
func NewInmemAddr ¶
func NewInmemAddr() string
NewInmemAddr returns a new in-memory addr with a randomly generate UUID as the ID.
Types ¶
type EagerSyncRequest ¶
type EagerSyncResponse ¶
type FastForwardRequest ¶
type FastForwardRequest struct {
FromID uint32
}
type FastForwardResponse ¶
type InmemTransport ¶
InmemTransport Implements the Transport interface, to allow babble to be tested in-memory without going over a network.
func NewInmemTransport ¶
func NewInmemTransport(addr string) (string, *InmemTransport)
NewInmemTransport is used to initialize a new transport and generates a random local address if none is specified
func (*InmemTransport) Close ¶
func (i *InmemTransport) Close() error
Close is used to permanently disable the transport
func (*InmemTransport) Connect ¶
func (i *InmemTransport) Connect(peer string, t Transport)
Connect is used to connect this transport to another transport for a given peer name. This allows for local routing.
func (*InmemTransport) Consumer ¶
func (i *InmemTransport) Consumer() <-chan RPC
Consumer implements the Transport interface.
func (*InmemTransport) Disconnect ¶
func (i *InmemTransport) Disconnect(peer string)
Disconnect is used to remove the ability to route to a given peer.
func (*InmemTransport) DisconnectAll ¶
func (i *InmemTransport) DisconnectAll()
DisconnectAll is used to remove all routes to peers.
func (*InmemTransport) EagerSync ¶
func (i *InmemTransport) EagerSync(target string, args *EagerSyncRequest, resp *EagerSyncResponse) error
EagerSync implements the Transport interface.
func (*InmemTransport) FastForward ¶
func (i *InmemTransport) FastForward(target string, args *FastForwardRequest, resp *FastForwardResponse) error
FastForward implements the Transport interface.
func (*InmemTransport) Join ¶
func (i *InmemTransport) Join(target string, args *JoinRequest, resp *JoinResponse) error
Join implements the Transport interface
func (*InmemTransport) LocalAddr ¶
func (i *InmemTransport) LocalAddr() string
LocalAddr implements the Transport interface.
func (*InmemTransport) Sync ¶
func (i *InmemTransport) Sync(target string, args *SyncRequest, resp *SyncResponse) error
Sync implements the Transport interface.
type JoinRequest ¶
type JoinRequest struct {
InternalTransaction hashgraph.InternalTransaction
}
type JoinResponse ¶
type NetworkTransport ¶
type NetworkTransport struct {
// contains filtered or unexported fields
}
NetworkTransport provides a network based transport that can be used to communicate with babble on remote machines. It requires an underlying stream layer to provide a stream abstraction, which can be simple TCP, TLS, etc.
This transport is very simple and lightweight. Each RPC request is framed by sending a byte that indicates the message type, followed by the json encoded request.
The response is an error string followed by the response object, both are encoded using msgpack
func NewNetworkTransport ¶
func NewNetworkTransport( stream StreamLayer, maxPool int, timeout time.Duration, joinTimeout time.Duration, logger *logrus.Logger, ) *NetworkTransport
NewNetworkTransport creates a new network transport with the given dialer and listener. The maxPool controls how many connections we will pool (per target). The timeout is used to apply I/O deadlines.
func NewTCPTransport ¶
func NewTCPTransport( bindAddr string, advertise net.Addr, maxPool int, timeout time.Duration, joinTimeout time.Duration, logger *logrus.Logger, ) (*NetworkTransport, error)
NewTCPTransport returns a NetworkTransport that is built on top of a TCP streaming transport layer, with log output going to the supplied Logger
func (*NetworkTransport) Close ¶
func (n *NetworkTransport) Close() error
Close is used to stop the network transport.
func (*NetworkTransport) Consumer ¶
func (n *NetworkTransport) Consumer() <-chan RPC
Consumer implements the Transport interface.
func (*NetworkTransport) EagerSync ¶
func (n *NetworkTransport) EagerSync(target string, args *EagerSyncRequest, resp *EagerSyncResponse) error
EagerSync implements the Transport interface.
func (*NetworkTransport) FastForward ¶
func (n *NetworkTransport) FastForward(target string, args *FastForwardRequest, resp *FastForwardResponse) error
FastForward implements the Transport interface.
func (*NetworkTransport) IsShutdown ¶
func (n *NetworkTransport) IsShutdown() bool
IsShutdown is used to check if the transport is shutdown.
func (*NetworkTransport) Join ¶
func (n *NetworkTransport) Join(target string, args *JoinRequest, resp *JoinResponse) error
Join implements the Transport interface.
func (*NetworkTransport) LocalAddr ¶
func (n *NetworkTransport) LocalAddr() string
LocalAddr implements the Transport interface.
func (*NetworkTransport) Sync ¶
func (n *NetworkTransport) Sync(target string, args *SyncRequest, resp *SyncResponse) error
Sync implements the Transport interface.
type RPC ¶
type RPC struct { Command interface{} Reader io.Reader RespChan chan<- RPCResponse }
RPC has a command, and provides a response mechanism.
type RPCResponse ¶
type RPCResponse struct { Response interface{} Error error }
RPCResponse captures both a response and a potential error.
type StreamLayer ¶
type StreamLayer interface { net.Listener // Dial is used to create a new outgoing connection Dial(address string, timeout time.Duration) (net.Conn, error) }
StreamLayer is used with the NetworkTransport to provide the low level stream abstraction.
type SyncResponse ¶
type TCPStreamLayer ¶
type TCPStreamLayer struct {
// contains filtered or unexported fields
}
TCPStreamLayer implements StreamLayer interface for plain TCP.
func (*TCPStreamLayer) Accept ¶
func (t *TCPStreamLayer) Accept() (c net.Conn, err error)
Accept implements the net.Listener interface.
func (*TCPStreamLayer) Addr ¶
func (t *TCPStreamLayer) Addr() net.Addr
Addr implements the net.Listener interface.
func (*TCPStreamLayer) Close ¶
func (t *TCPStreamLayer) Close() (err error)
Close implements the net.Listener interface.
type Transport ¶
type Transport interface { // Consumer returns a channel that can be used to // consume and respond to RPC requests. Consumer() <-chan RPC // LocalAddr is used to return our local address to distinguish from our peers. LocalAddr() string Sync(target string, args *SyncRequest, resp *SyncResponse) error EagerSync(target string, args *EagerSyncRequest, resp *EagerSyncResponse) error FastForward(target string, args *FastForwardRequest, resp *FastForwardResponse) error Join(target string, args *JoinRequest, resp *JoinResponse) error // Close permanently closes a transport, stopping // any associated goroutines and freeing other resources. Close() error }
Transport provides an interface for network transports to allow a node to communicate with other nodes.