Documentation ¶
Overview ¶
This package defines a protocol that is used to request namespaced data from peers in the network.
This protocol is a request/response protocol that sends a request for specific data that lives in a specific namespace ID and receives a response with the data.
The streams are established using the protocol ID:
- "{networkID}/shrex/nd/0.0.1" where networkID is the network ID of the network. (e.g. "arabica")
The protocol uses protobuf to serialize and deserialize messages.
Usage ¶
To use a shrexnd client to request data from a peer, you must first create a new `shrexnd.Client` instance by:
1. Create a new client using `NewClient` and pass in the parameters of the protocol and the host:
client, err := shrexnd.NewClient(params, host)
2. Request data from a peer by calling Client.RequestND on the client and pass in the context, the data root, the namespace ID and the peer ID:
data, err := client.RequestND(ctx, dataRoot, peerID, namespaceID)
where data is of type libshare.NamespacedShares
To use a shrexnd server to respond to requests from peers, you must first create a new `shrexnd.Server` instance by:
1. Create a new server using `NewServer` and pass in the parameters of the protocol, the host, the store and store share getter:
server, err := shrexnd.NewServer(params, host, store, storeShareGetter)
where store is of type [share.Store] and storeShareGetter is of type [share.Getter]
2. Start the server by calling `Start` on the server:
err := server.Start(ctx)
3. Stop the server by calling `Stop` on the server:
err := server.Stop(ctx)
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client implements client side of shrex/nd protocol to obtain namespaced shares data from remote peers.
func NewClient ¶
func NewClient(params *Parameters, host host.Host) (*Client, error)
NewClient creates a new shrEx/nd client
func (*Client) RequestND ¶
func (c *Client) RequestND( ctx context.Context, height uint64, namespace libshare.Namespace, peer peer.ID, ) (shwap.NamespaceData, error)
RequestND requests namespaced data from the given peer. Returns NamespaceData with unverified inclusion proofs against the share.Root.
func (*Client) WithMetrics ¶
type Parameters ¶
type Parameters = shrex.Parameters
Parameters is the set of parameters that must be configured for the shrex/eds protocol.
func DefaultParameters ¶
func DefaultParameters() *Parameters
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server implements server side of shrex/nd protocol to serve namespaced share to remote peers.
func (*Server) SetHandler ¶
func (srv *Server) SetHandler(handler network.StreamHandler)
SetHandler sets server handler