Commit 25f5c198 authored by Jeromy's avatar Jeromy
Browse files

WIP: relay integration

parent 74390ca5
...@@ -9,6 +9,7 @@ import ( ...@@ -9,6 +9,7 @@ import (
logging "github.com/ipfs/go-log" logging "github.com/ipfs/go-log"
goprocess "github.com/jbenet/goprocess" goprocess "github.com/jbenet/goprocess"
circuit "github.com/libp2p/go-libp2p-circuit"
metrics "github.com/libp2p/go-libp2p-metrics" metrics "github.com/libp2p/go-libp2p-metrics"
mstream "github.com/libp2p/go-libp2p-metrics/stream" mstream "github.com/libp2p/go-libp2p-metrics/stream"
inet "github.com/libp2p/go-libp2p-net" inet "github.com/libp2p/go-libp2p-net"
...@@ -51,10 +52,12 @@ type BasicHost struct { ...@@ -51,10 +52,12 @@ type BasicHost struct {
proc goprocess.Process proc goprocess.Process
bwc metrics.Reporter bwc metrics.Reporter
relay *circuit.Relay
} }
// New constructs and sets up a new *BasicHost with given Network // New constructs and sets up a new *BasicHost with given Network
func New(net inet.Network, opts ...interface{}) *BasicHost { func New(net inet.Network, opts ...interface{}) (*BasicHost, error) {
h := &BasicHost{ h := &BasicHost{
network: net, network: net,
mux: msmux.NewMultistreamMuxer(), mux: msmux.NewMultistreamMuxer(),
...@@ -81,6 +84,14 @@ func New(net inet.Network, opts ...interface{}) *BasicHost { ...@@ -81,6 +84,14 @@ func New(net inet.Network, opts ...interface{}) *BasicHost {
} }
case metrics.Reporter: case metrics.Reporter:
h.bwc = o h.bwc = o
case *circuit.Relay:
net.AddDialer(o.Dialer())
list := o.Listener()
err := net.AddListener(list)
if err != nil {
return nil, err
}
} }
} }
...@@ -89,7 +100,7 @@ func New(net inet.Network, opts ...interface{}) *BasicHost { ...@@ -89,7 +100,7 @@ func New(net inet.Network, opts ...interface{}) *BasicHost {
net.SetConnHandler(h.newConnHandler) net.SetConnHandler(h.newConnHandler)
net.SetStreamHandler(h.newStreamHandler) net.SetStreamHandler(h.newStreamHandler)
return h return h, nil
} }
// newConnHandler is the remote-opened conn handler for inet.Network // newConnHandler is the remote-opened conn handler for inet.Network
......
...@@ -16,8 +16,8 @@ import ( ...@@ -16,8 +16,8 @@ import (
func TestHostSimple(t *testing.T) { func TestHostSimple(t *testing.T) {
ctx := context.Background() ctx := context.Background()
h1 := New(testutil.GenSwarmNetwork(t, ctx)) h1, _ := New(testutil.GenSwarmNetwork(t, ctx))
h2 := New(testutil.GenSwarmNetwork(t, ctx)) h2, _ := New(testutil.GenSwarmNetwork(t, ctx))
defer h1.Close() defer h1.Close()
defer h2.Close() defer h2.Close()
...@@ -64,8 +64,8 @@ func TestHostSimple(t *testing.T) { ...@@ -64,8 +64,8 @@ func TestHostSimple(t *testing.T) {
} }
func getHostPair(ctx context.Context, t *testing.T) (host.Host, host.Host) { func getHostPair(ctx context.Context, t *testing.T) (host.Host, host.Host) {
h1 := New(testutil.GenSwarmNetwork(t, ctx)) h1, _ := New(testutil.GenSwarmNetwork(t, ctx))
h2 := New(testutil.GenSwarmNetwork(t, ctx)) h2, _ := New(testutil.GenSwarmNetwork(t, ctx))
h2pi := h2.Peerstore().PeerInfo(h2.ID()) h2pi := h2.Peerstore().PeerInfo(h2.ID())
if err := h1.Connect(ctx, h2pi); err != nil { if err := h1.Connect(ctx, h2pi); err != nil {
...@@ -170,8 +170,8 @@ func TestHostProtoPreknowledge(t *testing.T) { ...@@ -170,8 +170,8 @@ func TestHostProtoPreknowledge(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
defer cancel() defer cancel()
h1 := New(testutil.GenSwarmNetwork(t, ctx)) h1, _ := New(testutil.GenSwarmNetwork(t, ctx))
h2 := New(testutil.GenSwarmNetwork(t, ctx)) h2, _ := New(testutil.GenSwarmNetwork(t, ctx))
conn := make(chan protocol.ID) conn := make(chan protocol.ID)
handler := func(s inet.Stream) { handler := func(s inet.Stream) {
......
...@@ -84,7 +84,7 @@ func (mn *mocknet) AddPeerWithPeerstore(p peer.ID, ps pstore.Peerstore) (host.Ho ...@@ -84,7 +84,7 @@ func (mn *mocknet) AddPeerWithPeerstore(p peer.ID, ps pstore.Peerstore) (host.Ho
return nil, err return nil, err
} }
h := bhost.New(n) h, _ := bhost.New(n)
h.NegotiateTimeout = 0 h.NegotiateTimeout = 0
mn.proc.AddChild(n.proc) mn.proc.AddChild(n.proc)
......
...@@ -8,9 +8,11 @@ import ( ...@@ -8,9 +8,11 @@ import (
"github.com/jbenet/goprocess" "github.com/jbenet/goprocess"
goprocessctx "github.com/jbenet/goprocess/context" goprocessctx "github.com/jbenet/goprocess/context"
iconn "github.com/libp2p/go-libp2p-interface-conn"
inet "github.com/libp2p/go-libp2p-net" inet "github.com/libp2p/go-libp2p-net"
peer "github.com/libp2p/go-libp2p-peer" peer "github.com/libp2p/go-libp2p-peer"
pstore "github.com/libp2p/go-libp2p-peerstore" pstore "github.com/libp2p/go-libp2p-peerstore"
tpt "github.com/libp2p/go-libp2p-transport"
ma "github.com/multiformats/go-multiaddr" ma "github.com/multiformats/go-multiaddr"
) )
...@@ -220,6 +222,14 @@ func (pn *peernet) LocalPeer() peer.ID { ...@@ -220,6 +222,14 @@ func (pn *peernet) LocalPeer() peer.ID {
return pn.peer return pn.peer
} }
func (pn *peernet) AddDialer(d iconn.SingleDialer) {
panic("mocknet doesnt support adding dialers")
}
func (pn *peernet) AddListener(l tpt.Listener) error {
return fmt.Errorf("mocknet doesnt support adding listeners")
}
// Peers returns the connected peers // Peers returns the connected peers
func (pn *peernet) Peers() []peer.ID { func (pn *peernet) Peers() []peer.ID {
pn.RLock() pn.RLock()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment