-
Notifications
You must be signed in to change notification settings - Fork 17
/
transfer_message.go
56 lines (43 loc) · 1.45 KB
/
transfer_message.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package message1_1
import (
_ "embed"
"io"
"github.com/ipld/go-ipld-prime/codec/dagcbor"
"github.com/ipld/go-ipld-prime/datamodel"
bindnoderegistry "github.com/ipld/go-ipld-prime/node/bindnode/registry"
"github.com/ipld/go-ipld-prime/schema"
datatransfer "github.com/filecoin-project/go-data-transfer/v2"
)
var bindnodeRegistry = bindnoderegistry.NewRegistry()
//go:embed schema.ipldsch
var embedSchema []byte
// TransferMessage1_1 is the transfer message for the 1.1 Data Transfer Protocol.
type TransferMessage1_1 struct {
IsRequest bool
Request *TransferRequest1_1
Response *TransferResponse1_1
}
// ========= datatransfer.Message interface
// TransferID returns the TransferID of this message
func (tm *TransferMessage1_1) TransferID() datatransfer.TransferID {
if tm.IsRequest {
return tm.Request.TransferID()
}
return tm.Response.TransferID()
}
func (tm *TransferMessage1_1) toIPLD() schema.TypedNode {
return bindnodeRegistry.TypeToNode(tm)
}
// ToIPLD converts a transfer message type to an ipld Node
func (tm *TransferMessage1_1) ToIPLD() (datamodel.Node, error) {
return tm.toIPLD().Representation(), nil
}
// ToNet serializes a transfer message type.
func (tm *TransferMessage1_1) ToNet(w io.Writer) error {
return bindnodeRegistry.TypeToWriter(tm.toIPLD(), w, dagcbor.Encode)
}
func init() {
if err := bindnodeRegistry.RegisterType((*TransferMessage1_1)(nil), string(embedSchema), "TransferMessage1_1"); err != nil {
panic(err.Error())
}
}