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

Commit ccca903

Browse files
add support for the resource manager
1 parent 4603638 commit ccca903

File tree

7 files changed

+190
-52
lines changed

7 files changed

+190
-52
lines changed

go.mod

+8-7
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@ module github.com/libp2p/go-libp2p-swarm
33
go 1.16
44

55
require (
6+
github.com/golang/mock v1.6.0
67
github.com/ipfs/go-log/v2 v2.5.0
78
github.com/libp2p/go-conn-security-multistream v0.3.0
8-
github.com/libp2p/go-libp2p-core v0.13.1-0.20220104083644-a3dd401efe36
9+
github.com/libp2p/go-libp2p-core v0.13.1-0.20220114101623-6b8d8bf59647
910
github.com/libp2p/go-libp2p-peerstore v0.6.0
10-
github.com/libp2p/go-libp2p-quic-transport v0.13.0
11-
github.com/libp2p/go-libp2p-testing v0.5.0
12-
github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104084635-5fc0a74b41f0
13-
github.com/libp2p/go-libp2p-yamux v0.5.0
14-
github.com/libp2p/go-stream-muxer-multistream v0.3.0
15-
github.com/libp2p/go-tcp-transport v0.4.1-0.20220104085503-4ad75e6f32a5
11+
github.com/libp2p/go-libp2p-quic-transport v0.15.1-0.20220115163217-d8ebfeffe1f5
12+
github.com/libp2p/go-libp2p-testing v0.6.1-0.20220114111157-d4fb83f89618
13+
github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220114112005-92eaefd089ab
14+
github.com/libp2p/go-libp2p-yamux v0.7.1-0.20220113124110-6ee26a611de0
15+
github.com/libp2p/go-stream-muxer-multistream v0.3.1-0.20220114113010-69fdf28c9d78
16+
github.com/libp2p/go-tcp-transport v0.4.1-0.20220114115510-e760df1f0b84
1617
github.com/multiformats/go-multiaddr v0.5.0
1718
github.com/multiformats/go-multiaddr-fmt v0.1.0
1819
github.com/stretchr/testify v1.7.0

go.sum

+31-30
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ github.com/ipfs/go-log v1.0.4/go.mod h1:oDCg2FkjogeFOhqqb+N39l2RpTNPL6F/StPkB3kP
222222
github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw=
223223
github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM=
224224
github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g=
225+
github.com/ipfs/go-log/v2 v2.4.0/go.mod h1:nPZnh7Cj7lwS3LpRU5Mwr2ol1c2gXIEXuF6aywqrtmo=
225226
github.com/ipfs/go-log/v2 v2.5.0 h1:+MhAooFd9XZNvR0i9FriKW6HB0ql7HNXUuflWtc0dd4=
226227
github.com/ipfs/go-log/v2 v2.5.0/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI=
227228
github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA=
@@ -250,8 +251,8 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL
250251
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
251252
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
252253
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
253-
github.com/klauspost/compress v1.11.7 h1:0hzRabrMN4tSTvMfnL3SCv1ZGeAP23ynzodBgaHeMeg=
254-
github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
254+
github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
255+
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
255256
github.com/klauspost/cpuid/v2 v2.0.4 h1:g0I61F2K2DjRHz1cnxlkNSBIaePVoJIjjnHui8QHbiw=
256257
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
257258
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -264,7 +265,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
264265
github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
265266
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
266267
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
267-
github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ=
268268
github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs=
269269
github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM=
270270
github.com/libp2p/go-conn-security-multistream v0.3.0 h1:9UCIKlBL1hC9u7nkMXpD1nkc/T53PKMAn3/k9ivBAVc=
@@ -273,39 +273,39 @@ github.com/libp2p/go-flow-metrics v0.0.3 h1:8tAs/hSdNvUiLgtlSy3mxwxWP4I9y/jlkPFT
273273
github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs=
274274
github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL6+TrrxANBjPGw=
275275
github.com/libp2p/go-libp2p-core v0.5.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0=
276-
github.com/libp2p/go-libp2p-core v0.5.1/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y=
277-
github.com/libp2p/go-libp2p-core v0.8.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8=
278276
github.com/libp2p/go-libp2p-core v0.10.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg=
279277
github.com/libp2p/go-libp2p-core v0.12.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg=
280-
github.com/libp2p/go-libp2p-core v0.13.1-0.20220104083644-a3dd401efe36 h1:b/pMmgc5EV+dqSc+MjkX5xPa1nV6EKiOb0L0XT03Lic=
281-
github.com/libp2p/go-libp2p-core v0.13.1-0.20220104083644-a3dd401efe36/go.mod h1:KlkHsZ0nKerWsXLZJm3LfFQwusI5k3iN4BgtYTE4IYE=
282-
github.com/libp2p/go-libp2p-mplex v0.4.1 h1:/pyhkP1nLwjG3OM+VuaNJkQT/Pqq73WzB3aDN3Fx1sc=
283-
github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g=
278+
github.com/libp2p/go-libp2p-core v0.13.1-0.20220113111946-0391e674afe4/go.mod h1:KlkHsZ0nKerWsXLZJm3LfFQwusI5k3iN4BgtYTE4IYE=
279+
github.com/libp2p/go-libp2p-core v0.13.1-0.20220114101623-6b8d8bf59647 h1:r72wIR0ywdBUSTodR3WyY1Fdb9FUCHcYGT8NWxQH7wY=
280+
github.com/libp2p/go-libp2p-core v0.13.1-0.20220114101623-6b8d8bf59647/go.mod h1:KlkHsZ0nKerWsXLZJm3LfFQwusI5k3iN4BgtYTE4IYE=
281+
github.com/libp2p/go-libp2p-mplex v0.4.2-0.20220113124821-8bd3fd12e637 h1:yYLuo4pZ4JiKojIFkGYnxJ1Nrdr6qZX6jPrjjG5wKio=
282+
github.com/libp2p/go-libp2p-mplex v0.4.2-0.20220113124821-8bd3fd12e637/go.mod h1:avzhJCZQaBxFEPplk5OTe5C9njPax2LRXBZHuOWwpsw=
284283
github.com/libp2p/go-libp2p-peerstore v0.6.0 h1:HJminhQSGISBIRb93N6WK3t6Fa8OOTnHd/VBjL4mY5A=
285284
github.com/libp2p/go-libp2p-peerstore v0.6.0/go.mod h1:DGEmKdXrcYpK9Jha3sS7MhqYdInxJy84bIPtSu65bKc=
286285
github.com/libp2p/go-libp2p-pnet v0.2.0 h1:J6htxttBipJujEjz1y0a5+eYoiPcFHhSYHH6na5f0/k=
287286
github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA=
288-
github.com/libp2p/go-libp2p-quic-transport v0.13.0 h1:MTVojS4AnGD/rng6rF/HXEqwMHL27rHUEf3DaqSdnUw=
289-
github.com/libp2p/go-libp2p-quic-transport v0.13.0/go.mod h1:39/ZWJ1TW/jx1iFkKzzUg00W6tDJh73FC0xYudjr7Hc=
287+
github.com/libp2p/go-libp2p-quic-transport v0.15.1-0.20220115163217-d8ebfeffe1f5 h1:kkCYvj0Ymbemkg6S0A/rQkP1rfTAMB9seZ04Ku9W/kk=
288+
github.com/libp2p/go-libp2p-quic-transport v0.15.1-0.20220115163217-d8ebfeffe1f5/go.mod h1:893WbnmI5Peo8o8A1/cHcsxC0c2/bdjDIEuT+JU4+2A=
290289
github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc=
291-
github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0=
292-
github.com/libp2p/go-libp2p-testing v0.5.0 h1:bTjC29TTQ/ODq0ld3+0KLq3irdA5cAH3OMbRi0/QsvE=
293290
github.com/libp2p/go-libp2p-testing v0.5.0/go.mod h1:QBk8fqIL1XNcno/l3/hhaIEn4aLRijpYOR+zVjjlh+A=
291+
github.com/libp2p/go-libp2p-testing v0.6.1-0.20220113123347-8dda553fe7f3/go.mod h1:VeazaHJZ7jwgje7xyb46LwP+9AhvIYliIq1FE/vuTMk=
292+
github.com/libp2p/go-libp2p-testing v0.6.1-0.20220114111157-d4fb83f89618 h1:vzHomenj6MtCKN0OwFyCha/MA+9P6TO1p4Tvvj4kM/g=
293+
github.com/libp2p/go-libp2p-testing v0.6.1-0.20220114111157-d4fb83f89618/go.mod h1:/UYj9SOREV7S5U7QUhp7mZnAmu3N+apRuyqIp+hMd7M=
294294
github.com/libp2p/go-libp2p-tls v0.3.0 h1:8BgvUJiOTcj0Gp6XvEicF0rL5aUtRg/UzEdeZDmDlC8=
295295
github.com/libp2p/go-libp2p-tls v0.3.0/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY=
296-
github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104084635-5fc0a74b41f0 h1:eD/QJCpcImYOUl6MdBuxMByVaEe5VMm463zJG6oUg9o=
297-
github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104084635-5fc0a74b41f0/go.mod h1:ByIyNe8asQhgcyIHetb4f+UgV+hDrA8pQ3L/TgNs+RI=
298-
github.com/libp2p/go-libp2p-yamux v0.5.0 h1:ZzmUhbQE+X7NuYUT2naxN31JyebZfRmpZVhKtRP13ys=
299-
github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po=
296+
github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220114112005-92eaefd089ab h1:uWnpS1h44xaoMghNV/cyhLpIUGWwvrMOIMAXi1NplJs=
297+
github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220114112005-92eaefd089ab/go.mod h1:WJv0GCzEmy+wJlAf9gKtGDHt8cZ0UVS+Y6ubHUHu2Sw=
298+
github.com/libp2p/go-libp2p-yamux v0.7.1-0.20220113124110-6ee26a611de0 h1:DX38YT8tuexg3Rs3DDH1/m4700UCMY94f/ifxPxT1hQ=
299+
github.com/libp2p/go-libp2p-yamux v0.7.1-0.20220113124110-6ee26a611de0/go.mod h1:AVjV1Ma0qg7+6HROYTXrdiA5d9SlQVpqqW6sxKOBndQ=
300300
github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU=
301301
github.com/libp2p/go-mplex v0.3.0 h1:U1T+vmCYJaEoDJPV1aq31N56hS+lJgb397GsylNSgrU=
302302
github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ=
303-
github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
304303
github.com/libp2p/go-msgio v0.0.6 h1:lQ7Uc0kS1wb1EfRxO2Eir/RJoHkHn7t6o+EiwsYIKJA=
305304
github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA=
306305
github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk=
307-
github.com/libp2p/go-netroute v0.1.5 h1:Qj8GE/6Cxmw9aQUYTA9BrS+TELTqU7kKKspWBR4ieVw=
308306
github.com/libp2p/go-netroute v0.1.5/go.mod h1:V1SR3AaECRkEQCoFFzYwVYWvYIEtlxx89+O3qcpCl4A=
307+
github.com/libp2p/go-netroute v0.2.0 h1:0FpsbsvuSnAhXFnCY0VLFbJOzaK0VnP0r1QT/o4nWRE=
308+
github.com/libp2p/go-netroute v0.2.0/go.mod h1:Vio7LTzZ+6hoT4CMZi5/6CpY3Snzh2vgZhWgxMNwlQI=
309309
github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
310310
github.com/libp2p/go-openssl v0.0.7 h1:eCAzdLejcNVBzP/iZM9vqHnQm+XyCEbSSIheIPRGNsw=
311311
github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
@@ -314,18 +314,17 @@ github.com/libp2p/go-reuseport v0.1.0/go.mod h1:bQVn9hmfcTaoo0c9v5pBhOarsU1eNOBZ
314314
github.com/libp2p/go-reuseport-transport v0.1.0 h1:C3PHeHjmnz8m6f0uydObj02tMEoi7CyD1zuN7xQT8gc=
315315
github.com/libp2p/go-reuseport-transport v0.1.0/go.mod h1:vev0C0uMkzriDY59yFHD9v+ujJvYmDQVLowvAjEOmfw=
316316
github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k=
317-
github.com/libp2p/go-sockaddr v0.1.0 h1:Y4s3/jNoryVRKEBrkJ576F17CPOaMIzUeCsg7dlTDj0=
318317
github.com/libp2p/go-sockaddr v0.1.0/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k=
319-
github.com/libp2p/go-stream-muxer-multistream v0.3.0 h1:TqnSHPJEIqDEO7h1wZZ0p3DXdvDSiLHQidKKUGZtiOY=
320-
github.com/libp2p/go-stream-muxer-multistream v0.3.0/go.mod h1:yDh8abSIzmZtqtOt64gFJUXEryejzNb0lisTt+fAMJA=
321-
github.com/libp2p/go-tcp-transport v0.4.1-0.20220104085503-4ad75e6f32a5 h1:/x3GSszKipn1nlKY0C5at59fBLYyJeObd5gm32DrobM=
322-
github.com/libp2p/go-tcp-transport v0.4.1-0.20220104085503-4ad75e6f32a5/go.mod h1:YPwlF5gW5BnFikKoQBuJeQkPXAn+z2wTzDpJKamkgjY=
323-
github.com/libp2p/go-yamux v1.4.1 h1:P1Fe9vF4th5JOxxgQvfbOHkrGqIZniTLf+ddhZp8YTI=
324-
github.com/libp2p/go-yamux v1.4.1/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE=
318+
github.com/libp2p/go-stream-muxer-multistream v0.3.1-0.20220114113010-69fdf28c9d78 h1:Xn3GYSayl4/XXK1Etyo18jjSOaZBZrDrr0HhEnNeIxg=
319+
github.com/libp2p/go-stream-muxer-multistream v0.3.1-0.20220114113010-69fdf28c9d78/go.mod h1:r2CIocbEGAHKmTDathaEPRxLvwvBLqFbo7ubRV3tK5E=
320+
github.com/libp2p/go-tcp-transport v0.4.1-0.20220114115510-e760df1f0b84 h1:fV83JfUVCujwxx2fJdF1t1zms4USUYMCwUFWQj/hDEI=
321+
github.com/libp2p/go-tcp-transport v0.4.1-0.20220114115510-e760df1f0b84/go.mod h1:wS5uPYRE/cUSHjSFjy2oK59p3oIv9NTRrcIu+/RZnko=
322+
github.com/libp2p/go-yamux/v2 v2.3.1-0.20220113122706-54af342cdc78 h1:klmc6PFemZJVgiAij+lpkk1YBZ9GFfO8wPjmmCFy+pk=
323+
github.com/libp2p/go-yamux/v2 v2.3.1-0.20220113122706-54af342cdc78/go.mod h1:iTU+lOIn/2h0AgKcL49clNTwfEw+WSfDYrXe05EyKIs=
325324
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
326325
github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
327-
github.com/lucas-clemente/quic-go v0.23.0 h1:5vFnKtZ6nHDFsc/F3uuiF4T3y/AXaQdxjUqiVw26GZE=
328-
github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0=
326+
github.com/lucas-clemente/quic-go v0.24.1-0.20220114080404-bfd685faf22b h1:Sm3+VIiPfO1bacIRL4ToVajYrPcz+fntJBY9MRykkFU=
327+
github.com/lucas-clemente/quic-go v0.24.1-0.20220114080404-bfd685faf22b/go.mod h1:YtzP8bxRVCBlO77yRanE264+fY/T2U9ZlW1AaHOsMOg=
329328
github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
330329
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
331330
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -337,6 +336,8 @@ github.com/marten-seemann/qtls-go1-16 v0.1.4 h1:xbHbOGGhrenVtII6Co8akhLEdrawwB2i
337336
github.com/marten-seemann/qtls-go1-16 v0.1.4/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk=
338337
github.com/marten-seemann/qtls-go1-17 v0.1.0 h1:P9ggrs5xtwiqXv/FHNwntmuLMNq3KaSIG93AtAZ48xk=
339338
github.com/marten-seemann/qtls-go1-17 v0.1.0/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8=
339+
github.com/marten-seemann/qtls-go1-18 v0.1.0-beta.1 h1:EnzzN9fPUkUck/1CuY1FlzBaIYMoiBsdwTNmNGkwUUM=
340+
github.com/marten-seemann/qtls-go1-18 v0.1.0-beta.1/go.mod h1:PUhIQk19LoFt2174H4+an8TYvWOGjb/hHwphBeaDHwI=
340341
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk=
341342
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU=
342343
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -597,7 +598,6 @@ go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
597598
go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
598599
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
599600
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
600-
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
601601
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
602602
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
603603
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
@@ -681,6 +681,7 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v
681681
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
682682
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
683683
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
684+
golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
684685
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0=
685686
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
686687
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -741,8 +742,8 @@ golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7w
741742
golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
742743
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
743744
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
745+
golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
744746
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
745-
golang.org/x/sys v0.0.0-20210511113859-b0526f3d8744/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
746747
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
747748
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
748749
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=

swarm.go

+16
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@ func WithDialTimeoutLocal(t time.Duration) Option {
7676
}
7777
}
7878

79+
func WithResourceManager(m network.ResourceManager) Option {
80+
return func(s *Swarm) error {
81+
s.rcmgr = m
82+
return nil
83+
}
84+
}
85+
7986
// Swarm is a connection muxer, allowing connections to other peers to
8087
// be opened and closed, while still using the same Chan for all
8188
// communication. The Chan sends/receives Messages, which note the
@@ -88,6 +95,8 @@ type Swarm struct {
8895
// down before continuing.
8996
refs sync.WaitGroup
9097

98+
rcmgr network.ResourceManager
99+
91100
local peer.ID
92101
peers peerstore.Peerstore
93102

@@ -156,6 +165,9 @@ func NewSwarm(local peer.ID, peers peerstore.Peerstore, opts ...Option) (*Swarm,
156165
return nil, err
157166
}
158167
}
168+
if s.rcmgr == nil {
169+
s.rcmgr = network.NullResourceManager
170+
}
159171

160172
s.dsync = newDialSync(s.dialWorkerLoop)
161173
s.limiter = newDialLimiter(s.dialAddr)
@@ -586,6 +598,10 @@ func (s *Swarm) String() string {
586598
return fmt.Sprintf("<Swarm %s>", s.LocalPeer())
587599
}
588600

601+
func (s *Swarm) ResourceManager() network.ResourceManager {
602+
return s.rcmgr
603+
}
604+
589605
// Swarm is a Network.
590606
var _ network.Network = (*Swarm)(nil)
591607
var _ transport.TransportNetwork = (*Swarm)(nil)

swarm_conn.go

+21-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"time"
1010

1111
ic "github.com/libp2p/go-libp2p-core/crypto"
12-
"github.com/libp2p/go-libp2p-core/mux"
1312
"github.com/libp2p/go-libp2p-core/network"
1413
"github.com/libp2p/go-libp2p-core/peer"
1514
"github.com/libp2p/go-libp2p-core/transport"
@@ -42,6 +41,8 @@ type Conn struct {
4241
stat network.ConnStats
4342
}
4443

44+
var _ network.Conn = &Conn{}
45+
4546
func (c *Conn) ID() string {
4647
// format: <first 10 chars of peer id>-<global conn ordinal>
4748
return fmt.Sprintf("%s-%d", c.RemotePeer().Pretty()[0:10], c.id)
@@ -93,6 +94,7 @@ func (c *Conn) removeStream(s *Stream) {
9394
c.stat.NumStreams--
9495
delete(c.streams.m, s)
9596
c.streams.Unlock()
97+
s.scope.Done()
9698
}
9799

98100
// listens for new streams.
@@ -109,9 +111,14 @@ func (c *Conn) start() {
109111
if err != nil {
110112
return
111113
}
114+
scope, err := c.swarm.ResourceManager().OpenStream(c.RemotePeer(), network.DirInbound)
115+
if err != nil {
116+
ts.Reset()
117+
continue
118+
}
112119
c.swarm.refs.Add(1)
113120
go func() {
114-
s, err := c.addStream(ts, network.DirInbound)
121+
s, err := c.addStream(ts, network.DirInbound, scope)
115122

116123
// Don't defer this. We don't want to block
117124
// swarm shutdown on the connection handler.
@@ -186,19 +193,23 @@ func (c *Conn) NewStream(ctx context.Context) (network.Stream, error) {
186193
}
187194
}
188195

196+
scope, err := c.swarm.ResourceManager().OpenStream(c.RemotePeer(), network.DirOutbound)
197+
if err != nil {
198+
return nil, err
199+
}
189200
ts, err := c.conn.OpenStream(ctx)
190-
191201
if err != nil {
192202
return nil, err
193203
}
194-
return c.addStream(ts, network.DirOutbound)
204+
return c.addStream(ts, network.DirOutbound, scope)
195205
}
196206

197-
func (c *Conn) addStream(ts mux.MuxedStream, dir network.Direction) (*Stream, error) {
207+
func (c *Conn) addStream(ts network.MuxedStream, dir network.Direction, scope network.StreamManagementScope) (*Stream, error) {
198208
c.streams.Lock()
199209
// Are we still online?
200210
if c.streams.m == nil {
201211
c.streams.Unlock()
212+
scope.Done()
202213
ts.Reset()
203214
return nil, ErrConnClosed
204215
}
@@ -207,6 +218,7 @@ func (c *Conn) addStream(ts mux.MuxedStream, dir network.Direction) (*Stream, er
207218
s := &Stream{
208219
stream: ts,
209220
conn: c,
221+
scope: scope,
210222
stat: network.Stats{
211223
Direction: dir,
212224
Opened: time.Now(),
@@ -244,3 +256,7 @@ func (c *Conn) GetStreams() []network.Stream {
244256
}
245257
return streams
246258
}
259+
260+
func (c *Conn) Scope() network.ConnScope {
261+
return c.conn.Scope()
262+
}

0 commit comments

Comments
 (0)