Skip to content
This repository has been archived by the owner on May 26, 2022. It is now read-only.

Commit

Permalink
Merge pull request #109 from libp2p/rcmgr
Browse files Browse the repository at this point in the history
use the resource manager
  • Loading branch information
marten-seemann authored Jan 18, 2022
2 parents d4817b5 + b9c0482 commit e75c710
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 61 deletions.
2 changes: 1 addition & 1 deletion browser_integration_browser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func TestInBrowser(t *testing.T) {
if err != nil {
t.Fatal(err)
}
tpt := New(u)
tpt := New(u, nil)
addr, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/5555/ws")
if err != nil {
t.Fatal("could not parse multiaddress:" + err.Error())
Expand Down
2 changes: 1 addition & 1 deletion browser_integration_native_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func TestInBrowser(t *testing.T) {
if err != nil {
t.Error("SERVER:", err)
}
tpt := New(u)
tpt := New(u, nil)
addr, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/5555/ws")
if err != nil {
t.Error("SERVER:", err)
Expand Down
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ module github.com/libp2p/go-ws-transport
require (
github.com/gorilla/websocket v1.4.2
github.com/libp2p/go-conn-security-multistream v0.3.0
github.com/libp2p/go-libp2p-core v0.13.1-0.20220104083644-a3dd401efe36
github.com/libp2p/go-libp2p-mplex v0.4.1
github.com/libp2p/go-libp2p-testing v0.5.0
github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104084635-5fc0a74b41f0
github.com/libp2p/go-libp2p-core v0.14.0
github.com/libp2p/go-libp2p-mplex v0.5.0
github.com/libp2p/go-libp2p-testing v0.7.0
github.com/libp2p/go-libp2p-transport-upgrader v0.7.0
github.com/multiformats/go-multiaddr v0.4.1
github.com/multiformats/go-multiaddr-fmt v0.1.0
)
Expand Down
92 changes: 44 additions & 48 deletions go.sum

Large diffs are not rendered by default.

20 changes: 16 additions & 4 deletions websocket.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,18 @@ var _ transport.Transport = (*WebsocketTransport)(nil)

// WebsocketTransport is the actual go-libp2p transport
type WebsocketTransport struct {
Upgrader transport.Upgrader
upgrader transport.Upgrader
rcmgr network.ResourceManager
}

func New(u transport.Upgrader) *WebsocketTransport {
return &WebsocketTransport{u}
func New(u transport.Upgrader, rcmgr network.ResourceManager) *WebsocketTransport {
if rcmgr == nil {
rcmgr = network.NullResourceManager
}
return &WebsocketTransport{
upgrader: u,
rcmgr: rcmgr,
}
}

func (t *WebsocketTransport) CanDial(a ma.Multiaddr) bool {
Expand All @@ -49,9 +56,14 @@ func (t *WebsocketTransport) Proxy() bool {
}

func (t *WebsocketTransport) Dial(ctx context.Context, raddr ma.Multiaddr, p peer.ID) (transport.CapableConn, error) {
connScope, err := t.rcmgr.OpenConnection(network.DirOutbound, true)
if err != nil {
return nil, err
}
macon, err := t.maDial(ctx, raddr)
if err != nil {
connScope.Done()
return nil, err
}
return t.Upgrader.Upgrade(ctx, t, macon, network.DirOutbound, p)
return t.upgrader.Upgrade(ctx, t, macon, network.DirOutbound, p, connScope)
}
2 changes: 1 addition & 1 deletion websocket_native.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func (t *WebsocketTransport) Listen(a ma.Multiaddr) (transport.Listener, error)
if err != nil {
return nil, err
}
return t.Upgrader.UpgradeListener(t, malist), nil
return t.upgrader.UpgradeListener(t, malist), nil
}

func (t *WebsocketTransport) wrapListener(l net.Listener, origin *url.URL) (*listener, error) {
Expand Down
4 changes: 2 additions & 2 deletions websocket_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ func TestWebsocketTransport(t *testing.T) {
if err != nil {
t.Fatal(err)
}
ta := New(ua)
ta := New(ua, nil)
ub, err := tptu.New(newSecureMuxer(t, "peerB"), new(mplex.Transport))
if err != nil {
t.Fatal(err)
}
tb := New(ub)
tb := New(ub, nil)

zero := "/ip4/127.0.0.1/tcp/0/ws"
ttransport.SubtestTransport(t, ta, tb, zero, "peerA")
Expand Down

0 comments on commit e75c710

Please sign in to comment.