Documentation ¶
Overview ¶
Package gateway connects a Sia node to the Sia flood network. The flood network is used to propagate blocks and transactions. The gateway is the primary avenue that a node uses to hear about transactions and blocks, and is the primary avenue used to tell the network about blocks that you have mined or about transactions that you have created.
Index ¶
- Constants
- Variables
- type Gateway
- func (g *Gateway) AddToBlocklist(addresses []string) error
- func (g *Gateway) Address() modules.NetAddress
- func (g *Gateway) Alerts() (crit, err, warn, info []modules.Alert)
- func (g *Gateway) BandwidthCounters() (uint64, uint64, time.Time, error)
- func (g *Gateway) Blocklist() ([]string, error)
- func (g *Gateway) Broadcast(name string, obj interface{}, peers []modules.Peer)
- func (g *Gateway) Close() error
- func (g *Gateway) Connect(addr modules.NetAddress) error
- func (g *Gateway) ConnectManual(addr modules.NetAddress) error
- func (g *Gateway) Disconnect(addr modules.NetAddress) error
- func (g *Gateway) DisconnectManual(addr modules.NetAddress) error
- func (g *Gateway) DiscoverAddress(cancel <-chan struct{}) (net.IP, error)
- func (g *Gateway) ForwardPort(port string) error
- func (g *Gateway) Online() (online bool)
- func (g *Gateway) Peers() []modules.Peer
- func (g *Gateway) RPC(addr modules.NetAddress, name string, fn modules.RPCFunc) error
- func (g *Gateway) RateLimits() (int64, int64)
- func (g *Gateway) RegisterConnectCall(name string, fn modules.RPCFunc)
- func (g *Gateway) RegisterRPC(name string, fn modules.RPCFunc)
- func (g *Gateway) RemoveFromBlocklist(addresses []string) error
- func (g *Gateway) SetBlocklist(addresses []string) error
- func (g *Gateway) SetRateLimits(downloadSpeed, uploadSpeed int64) error
- func (g *Gateway) UnregisterConnectCall(name string)
- func (g *Gateway) UnregisterRPC(name string)
Constants ¶
const ProtocolVersion = "1.5.4"
ProtocolVersion is the current version of the gateway p2p protocol.
Variables ¶
var ( // AlertMSGGatewayOffline indicates that the last time the gateway checked // the network status it was offline. AlertMSGGatewayOffline = "not connected to the internet" )
Constants related to the gateway's alerts.
var ( // ErrPeerNotConnected is returned when trying to disconnect from a peer // that the gateway is not connected to. ErrPeerNotConnected = errors.New("not connected to that node") )
Functions ¶
This section is empty.
Types ¶
type Gateway ¶
type Gateway struct {
// contains filtered or unexported fields
}
Gateway implements the modules.Gateway interface.
func NewCustomGateway ¶ added in v1.5.7
func NewCustomGateway(addr string, bootstrap bool, useUPNP bool, persistDir string, deps modules.Dependencies) (*Gateway, error)
NewCustomGateway returns an initialized Gateway with custom dependencies.
func (*Gateway) AddToBlocklist ¶ added in v1.5.7
AddToBlocklist adds addresses to the Gateway's blocklist
func (*Gateway) Address ¶
func (g *Gateway) Address() modules.NetAddress
Address returns the NetAddress of the Gateway.
func (*Gateway) Alerts ¶ added in v1.5.7
Alerts implements the modules.Alerter interface for the gateway.
func (*Gateway) BandwidthCounters ¶ added in v1.5.7
BandwidthCounters returns the Gateway's upload and download bandwidth
func (*Gateway) Broadcast ¶ added in v0.3.1
Broadcast calls an RPC on all of the specified peers. The calls are run in parallel. Broadcasts are restricted to "one-way" RPCs, which simply write an object and disconnect. This is why Broadcast takes an interface{} instead of an RPCFunc.
func (*Gateway) Connect ¶ added in v0.3.1
func (g *Gateway) Connect(addr modules.NetAddress) error
Connect establishes a persistent connection to a peer, and adds it to the Gateway's peer list.
func (*Gateway) ConnectManual ¶ added in v1.5.7
func (g *Gateway) ConnectManual(addr modules.NetAddress) error
ConnectManual is a wrapper for the Connect function. It is specifically used if a user wants to connect to a node manually. This also removes the node from the blocklist.
func (*Gateway) Disconnect ¶ added in v0.3.1
func (g *Gateway) Disconnect(addr modules.NetAddress) error
Disconnect terminates a connection to a peer and removes it from the Gateway's peer list.
func (*Gateway) DisconnectManual ¶ added in v1.5.7
func (g *Gateway) DisconnectManual(addr modules.NetAddress) error
DisconnectManual is a wrapper for the Disconnect function. It is specifically used if a user wants to connect to a node manually. This also adds the node to the blocklist.
func (*Gateway) DiscoverAddress ¶ added in v1.3.4
DiscoverAddress discovers and returns the current public IP address of the gateway. Contrary to Address, DiscoverAddress is blocking and might take multiple minutes to return. A channel to cancel the discovery can be supplied optionally. If nil is supplied, a reasonable timeout will be used by default.
func (*Gateway) ForwardPort ¶ added in v1.3.5
ForwardPort adds a port mapping to the router.
func (*Gateway) Online ¶ added in v1.3.1
Online returns true if the node is connected to the internet. During testing we always assume that the node is online
func (*Gateway) Peers ¶ added in v0.3.1
Peers returns the addresses currently connected to the Gateway.
func (*Gateway) RPC ¶
RPC calls an RPC on the given address. RPC cannot be called on an address that the Gateway is not connected to.
func (*Gateway) RateLimits ¶ added in v1.4.0
RateLimits returns the currently set bandwidth limits of the gateway.
func (*Gateway) RegisterConnectCall ¶ added in v0.3.1
RegisterConnectCall registers a name and RPCFunc to be called on a peer upon connecting.
func (*Gateway) RegisterRPC ¶
RegisterRPC registers an RPCFunc as a handler for a given identifier. To call an RPC, use gateway.RPC, supplying the same identifier given to RegisterRPC. Identifiers should always use PascalCase. The first 8 characters of an identifier should be unique, as the identifier used internally is truncated to 8 bytes.
func (*Gateway) RemoveFromBlocklist ¶ added in v1.5.7
RemoveFromBlocklist removes addresses from the Gateway's blocklist
func (*Gateway) SetBlocklist ¶ added in v1.5.7
SetBlocklist sets the blocklist of the gateway
func (*Gateway) SetRateLimits ¶ added in v1.4.0
SetRateLimits changes the rate limits for the peer-connections of the gateway.
func (*Gateway) UnregisterConnectCall ¶ added in v1.0.0
UnregisterConnectCall unregisters an on-connect call and removes the corresponding RPCFunc from g.initRPCs. Future connections to peers will not trigger the RPC to be called on them.
func (*Gateway) UnregisterRPC ¶ added in v1.0.0
UnregisterRPC unregisters an RPC and removes the corresponding RPCFunc from g.handlers. Future calls to the RPC by peers will fail.