github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/exchange/bitswap/testnet/peernet.go (about) 1 package bitswap 2 3 import ( 4 ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" 5 context "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context" 6 bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network" 7 mockpeernet "github.com/ipfs/go-ipfs/p2p/net/mock" 8 peer "github.com/ipfs/go-ipfs/p2p/peer" 9 mockrouting "github.com/ipfs/go-ipfs/routing/mock" 10 testutil "github.com/ipfs/go-ipfs/util/testutil" 11 ) 12 13 type peernet struct { 14 mockpeernet.Mocknet 15 routingserver mockrouting.Server 16 } 17 18 func StreamNet(ctx context.Context, net mockpeernet.Mocknet, rs mockrouting.Server) (Network, error) { 19 return &peernet{net, rs}, nil 20 } 21 22 func (pn *peernet) Adapter(p testutil.Identity) bsnet.BitSwapNetwork { 23 client, err := pn.Mocknet.AddPeer(p.PrivateKey(), p.Address()) 24 if err != nil { 25 panic(err.Error()) 26 } 27 routing := pn.routingserver.ClientWithDatastore(context.TODO(), p, ds.NewMapDatastore()) 28 return bsnet.NewFromIpfsHost(client, routing) 29 } 30 31 func (pn *peernet) HasPeer(p peer.ID) bool { 32 for _, member := range pn.Mocknet.Peers() { 33 if p == member { 34 return true 35 } 36 } 37 return false 38 } 39 40 var _ Network = &peernet{}