peernet.go 886 Bytes
Newer Older
1 2 3 4 5
package testnet

import (
	"context"

6 7 8
	"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"
hannahhoward's avatar
hannahhoward committed
9

10
	gsnet "gitlab.dms3.io/dms3/go-graphsync/network"
11 12 13 14 15 16
)

type peernet struct {
	mockpeernet.Mocknet
}

17
// StreamNet is a testnet that uses p2p's MockNet
18 19 20 21 22 23 24 25 26
func StreamNet(ctx context.Context, net mockpeernet.Mocknet) Network {
	return &peernet{net}
}

func (pn *peernet) Adapter(p tnet.Identity) gsnet.GraphSyncNetwork {
	client, err := pn.Mocknet.AddPeer(p.PrivateKey(), p.Address())
	if err != nil {
		panic(err.Error())
	}
Hannah Howard's avatar
Hannah Howard committed
27 28 29 30
	err = pn.Mocknet.LinkAll()
	if err != nil {
		panic(err.Error())
	}
31
	return gsnet.NewFromP2pHost(client)
32 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
}

var _ Network = (*peernet)(nil)