diff --git a/bitswap/message.go b/bitswap/message.go index 634b74adc..1a4eb450e 100644 --- a/bitswap/message.go +++ b/bitswap/message.go @@ -1,6 +1,8 @@ package bitswap import ( + proto "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto" + blocks "github.com/jbenet/go-ipfs/blocks" nm "github.com/jbenet/go-ipfs/net/message" swarm "github.com/jbenet/go-ipfs/net/swarm" @@ -41,6 +43,15 @@ func (m *message) AppendBlock(b *blocks.Block) { m.pb.Blocks = append(m.pb.Blocks, b.Data) } +func FromSwarm(sms swarm.Message) (BitSwapMessage, error) { + var protoMsg PBMessage + err := proto.Unmarshal(sms.Data, &protoMsg) + if err != nil { + return nil, err + } + return newMessageFromProto(protoMsg), nil +} + func (m *message) ToProto() *PBMessage { cp := m.pb return &cp