Documentation ¶
Index ¶
- Constants
- Variables
- type BlockData
- type ExtensionData
- type ExtensionName
- type GraphExchange
- type IncomingBlockHookActions
- type IncomingRequestHookActions
- type IncomingResponseHookActions
- type OnBlockSentListener
- type OnIncomingBlockHook
- type OnIncomingRequestHook
- type OnIncomingRequestQueuedHook
- type OnIncomingResponseHook
- type OnNetworkErrorListener
- type OnOutgoingBlockHook
- type OnOutgoingRequestHook
- type OnReceiverNetworkErrorListener
- type OnRequestUpdatedHook
- type OnRequestorCancelledListener
- type OnResponseCompletedListener
- type OutgoingBlockHookActions
- type OutgoingRequestHookActions
- type Priority
- type RequestCancelledErr
- type RequestClientCancelledErr
- type RequestData
- type RequestFailedBusyErr
- type RequestFailedContentNotFoundErr
- type RequestFailedLegalErr
- type RequestFailedUnknownErr
- type RequestID
- type RequestNotFoundErr
- type RequestUpdatedHookActions
- type ResponseData
- type ResponseProgress
- type ResponseStatusCode
- type UnregisterHookFunc
Constants ¶
const ( // ExtensionMetadata provides response metadata for a Graphsync request and is // documented at // https://github.com/ipld/specs/blob/master/block-layer/graphsync/known_extensions.md ExtensionMetadata = ExtensionName("graphsync/response-metadata") // ExtensionDoNotSendCIDs tells the responding peer not to send certain blocks if they // are encountered in a traversal and is documented at // https://github.com/ipld/specs/blob/master/block-layer/graphsync/known_extensions.md ExtensionDoNotSendCIDs = ExtensionName("graphsync/do-not-send-cids") // ExtensionDeDupByKey tells the responding peer to only deduplicate block sending // for requests that have the same key. The data for the extension is a string key ExtensionDeDupByKey = ExtensionName("graphsync/dedup-by-key") )
const ( // RequestAcknowledged means the request was received and is being worked on. RequestAcknowledged = ResponseStatusCode(10) // AdditionalPeers means additional peers were found that may be able // to satisfy the request and contained in the extra block of the response. AdditionalPeers = ResponseStatusCode(11) // NotEnoughGas means fulfilling this request requires payment. NotEnoughGas = ResponseStatusCode(12) // OtherProtocol means a different type of response than GraphSync is // contained in extra. OtherProtocol = ResponseStatusCode(13) // PartialResponse may include blocks and metadata about the in progress response // in extra. PartialResponse = ResponseStatusCode(14) // RequestPaused indicates a request is paused and will not send any more data // until unpaused RequestPaused = ResponseStatusCode(15) // RequestCompletedFull means the entire fulfillment of the GraphSync request // was sent back. RequestCompletedFull = ResponseStatusCode(20) // RequestCompletedPartial means the response is completed, and part of the // GraphSync request was sent back, but not the complete request. RequestCompletedPartial = ResponseStatusCode(21) // RequestRejected means the node did not accept the incoming request. RequestRejected = ResponseStatusCode(30) // RequestFailedBusy means the node is too busy, try again later. Backoff may // be contained in extra. RequestFailedBusy = ResponseStatusCode(31) // RequestFailedUnknown means the request failed for an unspecified reason. May // contain data about why in extra. RequestFailedUnknown = ResponseStatusCode(32) // RequestFailedLegal means the request failed for legal reasons. RequestFailedLegal = ResponseStatusCode(33) // RequestFailedContentNotFound means the respondent does not have the content. RequestFailedContentNotFound = ResponseStatusCode(34) // RequestCancelled means the responder was processing the request but decided to top, for whatever reason RequestCancelled = ResponseStatusCode(35) )
GraphSync Response Status Codes
Variables ¶
var ( // ErrExtensionAlreadyRegistered means a user extension can be registered only once ErrExtensionAlreadyRegistered = errors.New("extension already registered") )
var ResponseCodeToName = map[ResponseStatusCode]string{ RequestAcknowledged: "RequestAcknowledged", AdditionalPeers: "AdditionalPeers", NotEnoughGas: "NotEnoughGas", OtherProtocol: "OtherProtocol", PartialResponse: "PartialResponse", RequestPaused: "RequestPaused", RequestCompletedFull: "RequestCompletedFull", RequestCompletedPartial: "RequestCompletedPartial", RequestRejected: "RequestRejected", RequestFailedBusy: "RequestFailedBusy", RequestFailedUnknown: "RequestFailedUnknown", RequestFailedLegal: "RequestFailedLegal", RequestFailedContentNotFound: "RequestFailedContentNotFound", RequestCancelled: "RequestCancelled", }
Functions ¶
This section is empty.
Types ¶
type BlockData ¶ added in v0.1.0
type BlockData interface { // Link is the link/cid for the block Link() ipld.Link // BlockSize specifies the size of the block BlockSize() uint64 // BlockSize specifies the amount of data actually transmitted over the network BlockSizeOnWire() uint64 }
BlockData gives information about a block included in a graphsync response
type ExtensionData ¶ added in v0.0.4
type ExtensionData struct { Name ExtensionName Data []byte }
ExtensionData is a name/data pair for a graphsync extension
type ExtensionName ¶ added in v0.0.4
type ExtensionName string
ExtensionName is a name for a GraphSync extension
type GraphExchange ¶ added in v0.0.4
type GraphExchange interface { // Request initiates a new GraphSync request to the given peer using the given selector spec. Request(ctx context.Context, p peer.ID, root ipld.Link, selector ipld.Node, extensions ...ExtensionData) (<-chan ResponseProgress, <-chan error) // RegisterPersistenceOption registers an alternate loader/storer combo that can be substituted for the default RegisterPersistenceOption(name string, lsys ipld.LinkSystem) error // UnregisterPersistenceOption unregisters an alternate loader/storer combo UnregisterPersistenceOption(name string) error // RegisterIncomingRequestQueuedHook adds a hook that runs when a new incoming request is added to the responder's task queue. RegisterIncomingRequestQueuedHook(hook OnIncomingRequestQueuedHook) UnregisterHookFunc // RegisterIncomingRequestHook adds a hook that runs when a request is received RegisterIncomingRequestHook(hook OnIncomingRequestHook) UnregisterHookFunc // RegisterIncomingResponseHook adds a hook that runs when a response is received RegisterIncomingResponseHook(OnIncomingResponseHook) UnregisterHookFunc // RegisterIncomingBlockHook adds a hook that runs when a block is received and validated (put in block store) RegisterIncomingBlockHook(OnIncomingBlockHook) UnregisterHookFunc // RegisterOutgoingRequestHook adds a hook that runs immediately prior to sending a new request RegisterOutgoingRequestHook(hook OnOutgoingRequestHook) UnregisterHookFunc // RegisterOutgoingBlockHook adds a hook that runs every time a block is sent from a responder RegisterOutgoingBlockHook(hook OnOutgoingBlockHook) UnregisterHookFunc // RegisterRequestUpdatedHook adds a hook that runs every time an update to a request is received RegisterRequestUpdatedHook(hook OnRequestUpdatedHook) UnregisterHookFunc // RegisterCompletedResponseListener adds a listener on the responder for completed responses RegisterCompletedResponseListener(listener OnResponseCompletedListener) UnregisterHookFunc // RegisterRequestorCancelledListener adds a listener on the responder for // responses cancelled by the requestor RegisterRequestorCancelledListener(listener OnRequestorCancelledListener) UnregisterHookFunc // RegisterBlockSentListener adds a listener for when blocks are actually sent over the wire RegisterBlockSentListener(listener OnBlockSentListener) UnregisterHookFunc // RegisterNetworkErrorListener adds a listener for when errors occur sending data over the wire RegisterNetworkErrorListener(listener OnNetworkErrorListener) UnregisterHookFunc // RegisterReceiverNetworkErrorListener adds a listener for when errors occur receiving data over the wire RegisterReceiverNetworkErrorListener(listener OnReceiverNetworkErrorListener) UnregisterHookFunc // UnpauseRequest unpauses a request that was paused in a block hook based request ID // Can also send extensions with unpause UnpauseRequest(RequestID, ...ExtensionData) error // PauseRequest pauses an in progress request (may take 1 or more blocks to process) PauseRequest(RequestID) error // UnpauseResponse unpauses a response that was paused in a block hook based on peer ID and request ID // Can also send extensions with unpause UnpauseResponse(peer.ID, RequestID, ...ExtensionData) error // PauseResponse pauses an in progress response (may take 1 or more blocks to process) PauseResponse(peer.ID, RequestID) error // CancelResponse cancels an in progress response CancelResponse(peer.ID, RequestID) error // CancelRequest cancels an in progress request CancelRequest(context.Context, RequestID) error }
GraphExchange is a protocol that can exchange IPLD graphs based on a selector
type IncomingBlockHookActions ¶ added in v0.1.0
type IncomingBlockHookActions interface { TerminateWithError(error) UpdateRequestWithExtensions(...ExtensionData) PauseRequest() }
IncomingBlockHookActions are actions that incoming block hook can take to change the execution of a request
type IncomingRequestHookActions ¶ added in v0.1.0
type IncomingRequestHookActions interface { SendExtensionData(ExtensionData) UsePersistenceOption(name string) UseLinkTargetNodePrototypeChooser(traversal.LinkTargetNodePrototypeChooser) TerminateWithError(error) ValidateRequest() PauseResponse() }
IncomingRequestHookActions are actions that a request hook can take to change behavior for the response
type IncomingResponseHookActions ¶ added in v0.1.0
type IncomingResponseHookActions interface { TerminateWithError(error) UpdateRequestWithExtensions(...ExtensionData) }
IncomingResponseHookActions are actions that incoming response hook can take to change the execution of a request
type OnBlockSentListener ¶ added in v0.3.0
type OnBlockSentListener func(p peer.ID, request RequestData, block BlockData)
OnBlockSentListener runs when a block is sent over the wire
type OnIncomingBlockHook ¶ added in v0.1.0
type OnIncomingBlockHook func(p peer.ID, responseData ResponseData, blockData BlockData, hookActions IncomingBlockHookActions)
OnIncomingBlockHook is a hook that runs each time a new block is validated as part of the response, regardless of whether it came locally or over the network It receives that sent the response, the most recent response, a link for the block received, and the size of the block received The difference between BlockSize & BlockSizeOnWire can be used to determine where the block came from (Local vs remote) It receives an interface for customizing how we handle the ongoing execution of the request
type OnIncomingRequestHook ¶ added in v0.1.0
type OnIncomingRequestHook func(p peer.ID, request RequestData, hookActions IncomingRequestHookActions)
OnIncomingRequestHook is a hook that runs each time a new request is received. It receives the peer that sent the request and all data about the request. It receives an interface for customizing the response to this request
type OnIncomingRequestQueuedHook ¶ added in v0.6.4
type OnIncomingRequestQueuedHook func(p peer.ID, request RequestData)
OnIncomingRequestQueuedHook is a hook that runs each time a new incoming request is added to the responder's task queue. It receives the peer that sent the request and all data about the request.
type OnIncomingResponseHook ¶ added in v0.1.0
type OnIncomingResponseHook func(p peer.ID, responseData ResponseData, hookActions IncomingResponseHookActions)
OnIncomingResponseHook is a hook that runs each time a new response is received. It receives the peer that sent the response and all data about the response. It receives an interface for customizing how we handle the ongoing execution of the request
type OnNetworkErrorListener ¶ added in v0.3.0
type OnNetworkErrorListener func(p peer.ID, request RequestData, err error)
OnNetworkErrorListener runs when queued data is not able to be sent
type OnOutgoingBlockHook ¶ added in v0.1.0
type OnOutgoingBlockHook func(p peer.ID, request RequestData, block BlockData, hookActions OutgoingBlockHookActions)
OnOutgoingBlockHook is a hook that runs immediately after a requestor sends a new block on a response It receives the peer we're sending a request to, all the data aobut the request, a link for the block sent, and the size of the block sent It receives an interface for taking further action on the response
type OnOutgoingRequestHook ¶ added in v0.1.0
type OnOutgoingRequestHook func(p peer.ID, request RequestData, hookActions OutgoingRequestHookActions)
OnOutgoingRequestHook is a hook that runs immediately prior to sending a request It receives the peer we're sending a request to and all the data aobut the request It receives an interface for customizing how we handle executing this request
type OnReceiverNetworkErrorListener ¶ added in v0.6.0
OnReceiverNetworkErrorListener runs when errors occur receiving data over the wire
type OnRequestUpdatedHook ¶ added in v0.1.0
type OnRequestUpdatedHook func(p peer.ID, request RequestData, updateRequest RequestData, hookActions RequestUpdatedHookActions)
OnRequestUpdatedHook is a hook that runs when an update to a request is received It receives the peer we're sending to, the original request, the request update It receives an interface to taking further action on the response
type OnRequestorCancelledListener ¶ added in v0.1.0
type OnRequestorCancelledListener func(p peer.ID, request RequestData)
OnRequestorCancelledListener provides a way to listen for responses the requestor canncels
type OnResponseCompletedListener ¶ added in v0.1.0
type OnResponseCompletedListener func(p peer.ID, request RequestData, status ResponseStatusCode)
OnResponseCompletedListener provides a way to listen for when responder has finished serving a response
type OutgoingBlockHookActions ¶ added in v0.1.0
type OutgoingBlockHookActions interface { SendExtensionData(ExtensionData) TerminateWithError(error) PauseResponse() }
OutgoingBlockHookActions are actions that an outgoing block hook can take to change the execution of a request
type OutgoingRequestHookActions ¶ added in v0.1.0
type OutgoingRequestHookActions interface { UsePersistenceOption(name string) UseLinkTargetNodePrototypeChooser(traversal.LinkTargetNodePrototypeChooser) }
OutgoingRequestHookActions are actions that an outgoing request hook can take to change the execution of a request
type RequestCancelledErr ¶ added in v0.1.0
type RequestCancelledErr struct{}
RequestCancelledErr is an error message received on the error channel that indicates the responder cancelled a request
func (RequestCancelledErr) Error ¶ added in v0.1.0
func (e RequestCancelledErr) Error() string
type RequestClientCancelledErr ¶ added in v0.6.9
type RequestClientCancelledErr struct{}
RequestClientCancelledErr is an error message received on the error channel when the request is cancelled on by the client code, either by closing the passed request context or calling CancelRequest
func (RequestClientCancelledErr) Error ¶ added in v0.6.9
func (e RequestClientCancelledErr) Error() string
type RequestData ¶ added in v0.0.4
type RequestData interface { // ID Returns the request ID for this Request ID() RequestID // Root returns the CID to the root block of this request Root() cid.Cid // Selector returns the byte representation of the selector for this request Selector() ipld.Node // Priority returns the priority of this request Priority() Priority // Extension returns the content for an extension on a response, or errors // if extension is not present Extension(name ExtensionName) ([]byte, bool) // IsCancel returns true if this particular request is being cancelled IsCancel() bool }
RequestData describes a received graphsync request.
type RequestFailedBusyErr ¶ added in v0.1.0
type RequestFailedBusyErr struct{}
RequestFailedBusyErr is an error message received on the error channel when the peer is busy
func (RequestFailedBusyErr) Error ¶ added in v0.1.0
func (e RequestFailedBusyErr) Error() string
type RequestFailedContentNotFoundErr ¶ added in v0.1.0
type RequestFailedContentNotFoundErr struct{}
RequestFailedContentNotFoundErr is an error message received on the error channel when the content is not found
func (RequestFailedContentNotFoundErr) Error ¶ added in v0.1.0
func (e RequestFailedContentNotFoundErr) Error() string
type RequestFailedLegalErr ¶ added in v0.1.0
type RequestFailedLegalErr struct{}
RequestFailedLegalErr is an error message received on the error channel when the request fails for legal reasons
func (RequestFailedLegalErr) Error ¶ added in v0.1.0
func (e RequestFailedLegalErr) Error() string
type RequestFailedUnknownErr ¶ added in v0.1.0
type RequestFailedUnknownErr struct{}
RequestFailedUnknownErr is an error message received on the error channel when the request fails for unknown reasons
func (RequestFailedUnknownErr) Error ¶ added in v0.1.0
func (e RequestFailedUnknownErr) Error() string
type RequestID ¶ added in v0.0.4
type RequestID int32
RequestID is a unique identifier for a GraphSync request.
type RequestNotFoundErr ¶ added in v0.6.9
type RequestNotFoundErr struct{}
RequestNotFoundErr indicates that a request with a particular request ID was not found
func (RequestNotFoundErr) Error ¶ added in v0.6.9
func (e RequestNotFoundErr) Error() string
type RequestUpdatedHookActions ¶ added in v0.1.0
type RequestUpdatedHookActions interface { TerminateWithError(error) SendExtensionData(ExtensionData) UnpauseResponse() }
RequestUpdatedHookActions are actions that can be taken in a request updated hook to change execution of the response
type ResponseData ¶ added in v0.0.4
type ResponseData interface { // RequestID returns the request ID for this response RequestID() RequestID // Status returns the status for a response Status() ResponseStatusCode // Extension returns the content for an extension on a response, or errors // if extension is not present Extension(name ExtensionName) ([]byte, bool) }
ResponseData describes a received Graphsync response
type ResponseProgress ¶
type ResponseProgress struct { Node ipld.Node // a node which matched the graphsync query Path ipld.Path // the path of that node relative to the traversal start LastBlock struct { Path ipld.Path Link ipld.Link } }
ResponseProgress is the fundamental unit of responses making progress in Graphsync.
type ResponseStatusCode ¶ added in v0.0.4
type ResponseStatusCode int32
ResponseStatusCode is a status returned for a GraphSync Request.
func (ResponseStatusCode) String ¶ added in v0.8.0
func (c ResponseStatusCode) String() string
type UnregisterHookFunc ¶ added in v0.1.0
type UnregisterHookFunc func()
UnregisterHookFunc is a function call to unregister a hook that was previously registered
Directories ¶
Path | Synopsis |
---|---|
benchmarks
|
|
responseassembler
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.
|
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. |
testplans
|
|
graphsync
Module
|
|