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{}