feat(datatransfer): make dag service dt async

To more closely match the implementation, make calls to dag service in DT module asynchronous
This commit is contained in:
hannahhoward 2019-10-28 18:44:12 -07:00
parent d0b705705f
commit 4e1e43f10f

View File

@ -58,14 +58,16 @@ func (impl *dagserviceImpl) OpenPushDataChannel(to peer.ID, voucher Voucher, bas
// open a data transfer that will request data from the sending peer and // open a data transfer that will request data from the sending peer and
// transfer parts of the piece that match the selector // transfer parts of the piece that match the selector
func (impl *dagserviceImpl) OpenPullDataChannel(to peer.ID, voucher Voucher, baseCid cid.Cid, Selector ipld.Node) (ChannelID, error) { func (impl *dagserviceImpl) OpenPullDataChannel(to peer.ID, voucher Voucher, baseCid cid.Cid, Selector ipld.Node) (ChannelID, error) {
err := merkledag.FetchGraph(context.TODO(), baseCid, impl.dag) go func() {
var event Event err := merkledag.FetchGraph(context.TODO(), baseCid, impl.dag)
if err != nil { var event Event
event = Error if err != nil {
} else { event = Error
event = Complete } else {
} event = Complete
impl.subscriber(event, ChannelState{Channel: Channel{voucher: voucher}}) }
impl.subscriber(event, ChannelState{Channel: Channel{voucher: voucher}})
}()
return ChannelID{}, nil return ChannelID{}, nil
} }