@@ -3,6 +3,7 @@ package message
33import (
44 "bytes"
55 "encoding/binary"
6+ "encoding/hex"
67 "errors"
78 "fmt"
89 "io"
@@ -49,7 +50,7 @@ func NewMessageHandler() *MessageHandler {
4950// FromNet can read a network stream to deserialized a GraphSyncMessage
5051func (mh * MessageHandler ) FromNet (r io.Reader ) (GraphSyncMessage , error ) {
5152 reader := msgio .NewVarintReaderSize (r , network .MessageSizeMax )
52- return mh .FromMsgReaderV11 (reader )
53+ return mh .FromMsgReader (reader )
5354}
5455
5556// FromMsgReader can deserialize a DAG-CBOR message into a GraphySyncMessage
@@ -60,14 +61,16 @@ func (mh *MessageHandler) FromMsgReader(r msgio.Reader) (GraphSyncMessage, error
6061 }
6162
6263 builder := ipldbind .Prototype .Message .Representation ().NewBuilder ()
64+ fmt .Println (hex .EncodeToString (msg ))
6365 err = dagcbor .Decode (builder , bytes .NewReader (msg ))
6466 if err != nil {
67+ fmt .Printf ("dagcbor decode error %v" , err )
6568 return GraphSyncMessage {}, err
6669 }
6770
6871 node := builder .Build ()
6972 ipldGSM := bindnode .Unwrap (node ).(* ipldbind.GraphSyncMessage )
70- return mh .messageFromIPLD (ipldGSM )
73+ return mh .fromIPLD (ipldGSM )
7174}
7275
7376// FromMsgReaderV11 can deserialize a protobuf message into a GraphySyncMessage
@@ -105,14 +108,22 @@ func (mh *MessageHandler) FromMsgReaderV1(p peer.ID, r msgio.Reader) (GraphSyncM
105108}
106109
107110// ToProto converts a GraphSyncMessage to its ipldbind.GraphSyncMessage equivalent
108- func (mh * MessageHandler ) ToIPLD (gsm GraphSyncMessage ) (* ipldbind.GraphSyncMessage , error ) {
111+ func (mh * MessageHandler ) toIPLD (gsm GraphSyncMessage ) (* ipldbind.GraphSyncMessage , error ) {
109112 ibm := new (ipldbind.GraphSyncMessage )
110113 ibm .Requests = make ([]ipldbind.GraphSyncRequest , 0 , len (gsm .requests ))
111114 for _ , request := range gsm .requests {
115+ sel := & request .selector
116+ if request .selector == nil {
117+ sel = nil
118+ }
119+ root := & request .root
120+ if request .root == cid .Undef {
121+ root = nil
122+ }
112123 ibm .Requests = append (ibm .Requests , ipldbind.GraphSyncRequest {
113124 Id : request .id .Bytes (),
114- Root : request . root ,
115- Selector : & request . selector ,
125+ Root : root ,
126+ Selector : sel ,
116127 Priority : request .priority ,
117128 Cancel : request .isCancel ,
118129 Update : request .isUpdate ,
@@ -242,14 +253,14 @@ func (mh *MessageHandler) ToProtoV1(p peer.ID, gsm GraphSyncMessage) (*pb.Messag
242253// prefixed with a length uvar
243254func (mh * MessageHandler ) ToNet (gsm GraphSyncMessage , w io.Writer ) error {
244255 fmt .Printf ("gsm: %v\n " , gsm .String ())
245- msg , err := mh .ToIPLD (gsm )
256+ msg , err := mh .toIPLD (gsm )
246257 if err != nil {
247258 return err
248259 }
249260
250261 fmt .Printf ("ipldgsm: %v\n " , msg )
251262
252- lbuf := make ([]byte , binary .MaxVarintLen32 )
263+ lbuf := make ([]byte , binary .MaxVarintLen64 )
253264 buf := new (bytes.Buffer )
254265 buf .Write (lbuf )
255266
@@ -258,12 +269,16 @@ func (mh *MessageHandler) ToNet(gsm GraphSyncMessage, w io.Writer) error {
258269 if err != nil {
259270 return err
260271 }
272+ //_, err = buf.WriteTo(w)
261273
262- lbuflen := binary .PutUvarint (lbuf , uint64 (buf .Len ()- binary .MaxVarintLen32 ))
274+ lbuflen := binary .PutUvarint (lbuf , uint64 (buf .Len ()- binary .MaxVarintLen64 ))
263275 out := buf .Bytes ()
264- copy (lbuf [:lbuflen ], out [lbuflen :])
276+ // fmt.Printf("%v = %v - %v\n", uint64(buf.Len()-binary.MaxVarintLen64), hex.EncodeToString(lbuf), lbuf[:lbuflen])
277+ copy (out [binary .MaxVarintLen64 - lbuflen :], lbuf [:lbuflen ])
278+
279+ fmt .Println (hex .EncodeToString (out ))
280+ _ , err = w .Write (out [binary .MaxVarintLen64 - lbuflen :])
265281
266- _ , err = w .Write (out [lbuflen :])
267282 return err
268283}
269284
@@ -338,15 +353,15 @@ func intIdToRequestId(p peer.ID, fromV1Map map[v1RequestKey]graphsync.RequestID,
338353}
339354
340355// Mapping from a ipldbind.GraphSyncMessage object to a GraphSyncMessage object
341- func (mh * MessageHandler ) messageFromIPLD (ibm * ipldbind.GraphSyncMessage ) (GraphSyncMessage , error ) {
356+ func (mh * MessageHandler ) fromIPLD (ibm * ipldbind.GraphSyncMessage ) (GraphSyncMessage , error ) {
342357 requests := make (map [graphsync.RequestID ]GraphSyncRequest , len (ibm .Requests ))
343358 for _ , req := range ibm .Requests {
344359 // exts := req.Extensions
345360 id , err := graphsync .ParseRequestID (req .Id )
346361 if err != nil {
347362 return GraphSyncMessage {}, err
348363 }
349- requests [id ] = newRequest (id , req .Root , * req .Selector , graphsync .Priority (req .Priority ), req .Cancel , req .Update , nil )
364+ requests [id ] = newRequest (id , * req .Root , * req .Selector , graphsync .Priority (req .Priority ), req .Cancel , req .Update , nil )
350365 }
351366
352367 responses := make (map [graphsync.RequestID ]GraphSyncResponse , len (ibm .Responses ))
0 commit comments