Documentation
¶
Overview ¶
Package responseassembler assembles responses that are queued for sending in outgoing messages
The response assembler's Transaction method allows a caller to specify response actions that will go into a single libp2p2 message. The response assembler will also deduplicate blocks that have already been sent over the network in a previous message
Index ¶
- type PeerMessageHandler
- type ResponseAssembler
- func (ra *ResponseAssembler) DedupKey(p peer.ID, requestID graphsync.RequestID, key string)
- func (ra *ResponseAssembler) IgnoreBlocks(p peer.ID, requestID graphsync.RequestID, links []ipld.Link)
- func (ra *ResponseAssembler) Transaction(p peer.ID, requestID graphsync.RequestID, transaction Transaction) error
- type ResponseBuilder
- type Transaction
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type PeerMessageHandler ¶
type PeerMessageHandler interface {
AllocateAndBuildMessage(p peer.ID, blkSize uint64, buildResponseFn func(*gsmsg.Builder), notifees []notifications.Notifee)
}
PeerMessageHandler is an interface that can queue a response for a given peer to go out over the network If blkSize > 0, message building may block until enough memory has been freed from the queues to allocate the message.
type ResponseAssembler ¶
type ResponseAssembler struct {
*peermanager.PeerManager
// contains filtered or unexported fields
}
ResponseAssembler manages assembling responses to go out over the network in libp2p messages
func New ¶
func New(ctx context.Context, peerHandler PeerMessageHandler) *ResponseAssembler
New generates a new ResponseAssembler for sending responses
func (*ResponseAssembler) DedupKey ¶
func (ra *ResponseAssembler) DedupKey(p peer.ID, requestID graphsync.RequestID, key string)
DedupKey indicates that outgoing blocks should be deduplicated in a seperate bucket (only with requests that share supplied key string)
func (*ResponseAssembler) IgnoreBlocks ¶
func (ra *ResponseAssembler) IgnoreBlocks(p peer.ID, requestID graphsync.RequestID, links []ipld.Link)
IgnoreBlocks indicates that a list of keys should be ignored when sending blocks
func (*ResponseAssembler) Transaction ¶
func (ra *ResponseAssembler) Transaction(p peer.ID, requestID graphsync.RequestID, transaction Transaction) error
Transaction builds a response, and queues it for sending in the next outgoing message
type ResponseBuilder ¶
type ResponseBuilder interface {
// SendResponse adds a response to this transaction.
SendResponse(
link ipld.Link,
data []byte,
) graphsync.BlockData
// SendExtensionData adds extension data to the transaction.
SendExtensionData(graphsync.ExtensionData)
// ClearRequest removes all tracking for this request.
ClearRequest()
// FinishRequest completes the response to a request.
FinishRequest() graphsync.ResponseStatusCode
// FinishWithError end the response due to an error
FinishWithError(status graphsync.ResponseStatusCode)
// PauseRequest temporarily halts responding to the request
PauseRequest()
// AddNotifee adds a notifee to be notified about the response to request.
AddNotifee(notifications.Notifee)
}
ResponseBuilder is a limited interface for assembling responses inside a transaction, so that they are included in the same message on the protocol
type Transaction ¶
type Transaction func(ResponseBuilder) error
Transaction is a series of operations that should be send together in a single response