syntax = "proto3"; package bitswap.message.pb; import "github.com/gogo/protobuf/gogoproto/gogo.proto"; message Message { message Wantlist { enum WantType { Block = 0; Have = 1; } message Entry { bytes block = 1 [(gogoproto.customtype) = "Cid", (gogoproto.nullable) = false]; // the block cid (cidV0 in bitswap 1.0.0, cidV1 in bitswap 1.1.0) int32 priority = 2; // the priority (normalized). default to 1 bool cancel = 3; // whether this revokes an entry WantType wantType = 4; // Note: defaults to enum 0, ie Block bool sendDontHave = 5; // Note: defaults to false } repeated Entry entries = 1 [(gogoproto.nullable) = false]; // a list of wantlist entries bool full = 2; // whether this is the full wantlist. default to false } message Block { bytes prefix = 1; // CID prefix (cid version, multicodec and multihash prefix (type + length) bytes data = 2; } enum BlockPresenceType { Have = 0; DontHave = 1; } message BlockPresence { bytes cid = 1 [(gogoproto.customtype) = "Cid", (gogoproto.nullable) = false]; BlockPresenceType type = 2; } Wantlist wantlist = 1 [(gogoproto.nullable) = false]; repeated bytes blocks = 2; // used to send Blocks in bitswap 1.0.0 repeated Block payload = 3 [(gogoproto.nullable) = false]; // used to send Blocks in bitswap 1.1.0 repeated BlockPresence blockPresences = 4 [(gogoproto.nullable) = false]; int32 pendingBytes = 5; }