@@ -2,10 +2,9 @@ package message
22
33import (
44 blocks "github.com/ipfs/go-block-format"
5- cid "github.com/ipfs/go-cid"
5+ "github.com/ipfs/go-cid"
66 "github.com/ipld/go-ipld-prime"
77 cidlink "github.com/ipld/go-ipld-prime/linking/cid"
8- "github.com/ipld/go-ipld-prime/node/basicnode"
98
109 "github.com/ipfs/go-graphsync"
1110 "github.com/ipfs/go-graphsync/metadata"
@@ -19,7 +18,7 @@ type Builder struct {
1918 blkSize uint64
2019 completedResponses map [graphsync.RequestID ]graphsync.ResponseStatusCode
2120 outgoingResponses map [graphsync.RequestID ]metadata.Metadata
22- extensions map [graphsync.RequestID ][]NamedExtension
21+ extensions map [graphsync.RequestID ][]graphsync. ExtensionData
2322 requests map [graphsync.RequestID ]GraphSyncRequest
2423}
2524
@@ -30,13 +29,13 @@ func NewBuilder() *Builder {
3029 outgoingBlocks : make (map [cid.Cid ]blocks.Block ),
3130 completedResponses : make (map [graphsync.RequestID ]graphsync.ResponseStatusCode ),
3231 outgoingResponses : make (map [graphsync.RequestID ]metadata.Metadata ),
33- extensions : make (map [graphsync.RequestID ][]NamedExtension ),
32+ extensions : make (map [graphsync.RequestID ][]graphsync. ExtensionData ),
3433 }
3534}
3635
3736// AddRequest registers a new request to be added to the message.
3837func (b * Builder ) AddRequest (request GraphSyncRequest ) {
39- b .requests [request .ID ] = request
38+ b .requests [request .ID () ] = request
4039}
4140
4241// AddBlock adds the given block to the message.
@@ -46,7 +45,7 @@ func (b *Builder) AddBlock(block blocks.Block) {
4645}
4746
4847// AddExtensionData adds the given extension data to to the message
49- func (b * Builder ) AddExtensionData (requestID graphsync.RequestID , extension NamedExtension ) {
48+ func (b * Builder ) AddExtensionData (requestID graphsync.RequestID , extension graphsync. ExtensionData ) {
5049 b .extensions [requestID ] = append (b .extensions [requestID ], extension )
5150 // make sure this extension goes out in next response even if no links are sent
5251 _ , ok := b .outgoingResponses [requestID ]
@@ -110,30 +109,21 @@ func (b *Builder) ScrubResponses(requestIDs []graphsync.RequestID) uint64 {
110109
111110// Build assembles and encodes message data from the added requests, links, and blocks.
112111func (b * Builder ) Build () (GraphSyncMessage , error ) {
113- requests := make ([]GraphSyncRequest , 0 , len (b .requests ))
114- for _ , request := range b .requests {
115- requests = append (requests , request )
116- }
117- responses := make ([]GraphSyncResponse , 0 , len (b .outgoingResponses ))
112+ responses := make (map [graphsync.RequestID ]GraphSyncResponse , len (b .outgoingResponses ))
118113 for requestID , linkMap := range b .outgoingResponses {
119114 mdRaw , err := metadata .EncodeMetadata (linkMap )
120115 if err != nil {
121116 return GraphSyncMessage {}, err
122117 }
123- b .extensions [requestID ] = append (b .extensions [requestID ], NamedExtension {
118+ b .extensions [requestID ] = append (b .extensions [requestID ], graphsync. ExtensionData {
124119 Name : graphsync .ExtensionMetadata ,
125- Data : basicnode . NewBytes ( mdRaw ), // TODO: likely wrong
120+ Data : mdRaw ,
126121 })
127122 status , isComplete := b .completedResponses [requestID ]
128- responses = append (responses , NewResponse (requestID , responseCode (status , isComplete ), b .extensions [requestID ]... ))
129- }
130- blocks := make ([]GraphSyncBlock , 0 , len (b .outgoingBlocks ))
131- for _ , block := range b .outgoingBlocks {
132- blocks = append (blocks , FromBlockFormat (block ))
123+ responses [requestID ] = NewResponse (requestID , responseCode (status , isComplete ), b .extensions [requestID ]... )
133124 }
134- // TODO: sort requests, responses, and blocks? map order is randomized
135125 return GraphSyncMessage {
136- requests , responses , blocks ,
126+ b . requests , responses , b . outgoingBlocks ,
137127 }, nil
138128}
139129
0 commit comments