ipfs / go-graphsync

Initial Implementation Of GraphSync Wire Protocol
Other
100 stars 38 forks source link

Responder sends no blocks, just metadata #372

Open hannahhoward opened 2 years ago

hannahhoward commented 2 years ago

What

We introduce a new RequestType - Metadata - as follows:

type GraphSyncRequestType enum {
   # New means a new request
   | New     ("n")
   # Cancel means cancel the request referenced by request ID
   | Cancel  ("c")
   # Update means the extensions contain an update about this request
   | Update  ("u")
   # Restart means restart this request from the begging, respecting the any
   # DoNotSendCids/DoNotSendBlocks contained in the extensions--essentially a
   # cancel followed by a new
   # TODO: | Restart ("r")
   | Metadata ("m")
} representation string

For a metadata request, a responder responds as would normally, but simply never sends blocks for this request. This means they respond only with metadata.

Suggested implementation: