Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrRPCUnimplemented is an error returned to RPC clients when the // provided command is recognized, but not implemented. ErrRPCUnimplemented = &btcjson.RPCError{ Code: btcjson.ErrRPCUnimplemented, Message: "Command unimplemented", } // ErrRPCNoWallet is an error returned to RPC clients when the provided // command is recognized as a wallet command. ErrRPCNoWallet = &btcjson.RPCError{ Code: btcjson.ErrRPCNoWallet, Message: "This implementation does not implement wallet commands", } )
Errors
var ErrClientQuit = errors.New("client quit")
ErrClientQuit describes the error where a client send is not processed due to the client having already been disconnected or dropped.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { // Listeners defines a slice of listeners for which the RPC server will // take ownership of and accept connections. Since the RPC server takes // ownership of these listeners, they will be closed when the RPC server // is stopped. Listeners []net.Listener // ConnMgr defines the connection manager for the RPC server to use. It // provides the RPC server with a means to do things such as add, // remove, connect, disconnect, and query peers as well as other // connection-related data and tasks. ConnMgr Manager ChainParams *chaincfg.Params // contains filtered or unexported fields }
Config is a descriptor containing the RPC server configuration.
type Manager ¶
type Manager interface { // Connect adds the provided address as a new outbound peer. The // permanent flag indicates whether or not to make the peer persistent // and reconnect if the connection is lost. Attempting to connect to an // already existing peer will return an error. Connect(addr string, permanent bool) error // RemoveByID removes the peer associated with the provided id from the // list of persistent peers. Attempting to remove an id that does not // exist will return an error. RemoveByID(id int32) error // RemoveByAddr removes the peer associated with the provided address // from the list of persistent peers. Attempting to remove an address // that does not exist will return an error. RemoveByAddr(addr string) error // DisconnectByID disconnects the peer associated with the provided id. // This applies to both inbound and outbound peers. Attempting to // remove an id that does not exist will return an error. DisconnectByID(id int32) error // DisconnectByAddr disconnects the peer associated with the provided // address. This applies to both inbound and outbound peers. // Attempting to remove an address that does not exist will return an // error. DisconnectByAddr(addr string) error // QueryPeerShardCount returns the number of currently connected peers shards count. QueryPeerShardCount() int32 // ConnectedCount returns the number of currently connected peers. ConnectedCount() int32 // NetTotals returns the sum of all bytes received and sent across the // network for all peers. NetTotals() (uint64, uint64) // ConnectedPeers returns an array consisting of all connected peers. ConnectedPeers() []Peer // PersistentPeers returns an array consisting of all the persistent // peers. PersistentPeers() []Peer // BroadcastMessage sends the provided message to all currently // connected peers. BroadcastMessage(msg wire.Message) // AddRebroadcastInventory adds the provided inventory to the list of // inventories to be rebroadcast at random intervals until they show up // in a block. AddRebroadcastInventory(iv *wire.InvVect, data interface{}) }
Manager represents a connection manager for use with the RPC server.
The interface contract requires that all of these methods are safe for concurrent access.
type Peer ¶
type Peer interface { // ToPeer returns the underlying peer instance. ToPeer() *peer.Peer // IsTxRelayDisabled returns whether or not the peer has disabled // transaction relay. IsTxRelayDisabled() bool // BanScore returns the current integer value that represents how close // the peer is to being banned. BanScore() uint32 // FeeFilter returns the requested current minimum fee rate for which // transactions should be announced. FeeFilter() int64 }
Peer represents a peer for use with the RPC server.
The interface contract requires that all of these methods are safe for concurrent access.
type RPCServer ¶
type RPCServer struct {
// contains filtered or unexported fields
}
RPCServer provides a concurrent safe RPC server to a chain server.
func NewRPCServer ¶
func NewRPCServer(chainParams *chaincfg.Params, connServer *connection.ConnServer, handler rpcHandler) (*RPCServer, error)
NewRPCServer returns a new instance of RPCServer and error message.
func (*RPCServer) RequestedProcessShutdown ¶
func (s *RPCServer) RequestedProcessShutdown() <-chan struct{}
RequestedProcessShutdown returns a channel that is sent to when an authorized RPC client requests the process to shutdown. If the request can not be read immediately, it is dropped.
func (*RPCServer) Start ¶
func (s *RPCServer) Start()
Start is used by server.go to start the rpc listener.
func (*RPCServer) WebsocketHandler ¶
func (s *RPCServer) WebsocketHandler(conn *websocket.Conn, remoteAddr string, authenticated bool, isAdmin bool)
WebsocketHandler handles a new websocket client by creating a new wsClient, starting it, and blocking until the connection closes. Since it blocks, it must be run in a separate goroutine. It should be invoked from the websocket server handler which runs each new connection in a new goroutine thereby satisfying the requirement.
type SyncManager ¶
type SyncManager interface { // IsCurrent returns whether or not the sync manager believes the chain // is current as compared to the rest of the network. IsCurrent() bool // Pause pauses the sync manager until the returned channel is closed. Pause() chan<- struct{} // SyncPeerID returns the ID of the peer that is currently the peer being // used to sync from or 0 if there is none. SyncPeerID() int32 // LocateHeaders returns the headers of the blocks after the first known // block in the provided locators until the provided stop hash or the // current tip is reached, up to a max of wire.MaxBlockHeadersPerMsg // hashes. LocateHeaders(locators []*chainhash.Hash, hashStop *chainhash.Hash) []wire.BlockHeader }
SyncManager represents a sync manager for use with the RPC server.
The interface contract requires that all of these methods are safe for concurrent access.