peernet.go 1.09 KB
Newer Older
1 2 3
package bitswap

import (
4
	"context"
Jan Winkelmann's avatar
Jan Winkelmann committed
5

6
	bsnet "gitlab.dms3.io/dms3/go-bitswap/network"
7

8 9
	ds "gitlab.dms3.io/dms3/go-datastore"
	mockrouting "gitlab.dms3.io/dms3/go-dms3-routing/mock"
Raúl Kripalani's avatar
Raúl Kripalani committed
10

11 12 13
	"gitlab.dms3.io/p2p/go-p2p-core/peer"
	tnet "gitlab.dms3.io/p2p/go-p2p-testing/net"
	mockpeernet "gitlab.dms3.io/p2p/go-p2p/p2p/net/mock"
14 15 16 17 18 19 20
)

type peernet struct {
	mockpeernet.Mocknet
	routingserver mockrouting.Server
}

21
// StreamNet is a testnet that uses p2p's MockNet
Brian Tiger Chow's avatar
Brian Tiger Chow committed
22
func StreamNet(ctx context.Context, net mockpeernet.Mocknet, rs mockrouting.Server) (Network, error) {
23 24 25
	return &peernet{net, rs}, nil
}

dirkmc's avatar
dirkmc committed
26
func (pn *peernet) Adapter(p tnet.Identity, opts ...bsnet.NetOpt) bsnet.BitSwapNetwork {
27 28 29 30
	client, err := pn.Mocknet.AddPeer(p.PrivateKey(), p.Address())
	if err != nil {
		panic(err.Error())
	}
Brian Tiger Chow's avatar
Brian Tiger Chow committed
31
	routing := pn.routingserver.ClientWithDatastore(context.TODO(), p, ds.NewMapDatastore())
32
	return bsnet.NewFromDms3Host(client, routing, opts...)
33 34 35 36 37 38 39 40 41 42 43
}

func (pn *peernet) HasPeer(p peer.ID) bool {
	for _, member := range pn.Mocknet.Peers() {
		if p == member {
			return true
		}
	}
	return false
}

44
var _ Network = (*peernet)(nil)