Skip to content

Commit 5b6e16e

Browse files
committed
Add quic
1 parent 57a5aac commit 5b6e16e

File tree

3 files changed

+66
-41
lines changed

3 files changed

+66
-41
lines changed

Diff for: multidim-interop/impl/dotnet/v1.0/Program.cs

+15-5
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,16 @@
2222

2323
int testTimeoutSeconds = int.Parse(Environment.GetEnvironmentVariable("test_timeout_seconds") ?? "180");
2424

25-
IPeerFactory peerFactory = new TestPlansPeerFactoryBuilder(transport, muxer, security).Build();
25+
TestPlansPeerFactoryBuilder builder = new TestPlansPeerFactoryBuilder(transport, muxer, security);
26+
IPeerFactory peerFactory = builder.Build();
2627

2728
Log($"Connecting to redis at {redisAddr}...");
2829
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(redisAddr);
2930
IDatabase db = redis.GetDatabase();
3031

3132
if (isDialer)
3233
{
33-
ILocalPeer localPeer = peerFactory.Create(localAddr: $"/ip4/0.0.0.0/tcp/0");
34+
ILocalPeer localPeer = peerFactory.Create(localAddr: builder.MakeAddress());
3435
string? listenerAddr = null;
3536
while ((listenerAddr = db.ListRightPop("listenerAddr")) is null)
3637
{
@@ -65,9 +66,9 @@
6566
ip = addresses.First().Address.ToString()!;
6667
}
6768
Log("Starting to listen...");
68-
ILocalPeer localPeer = peerFactory.Create(localAddr: $"/ip4/{ip}/tcp/0");
69+
ILocalPeer localPeer = peerFactory.Create(localAddr: builder.MakeAddress(ip));
6970
IListener listener = await localPeer.ListenAsync(localPeer.Address);
70-
listener.OnConnection += async (peer) => Log($"Connected {peer.Address}");
71+
listener.OnConnection += (peer) => { Log($"Connected {peer.Address}"); return Task.CompletedTask; };
7172
Log($"Listening on {listener.Address}");
7273
db.ListRightPush(new RedisKey("listenerAddr"), new RedisValue(localPeer.Address.ToString()));
7374
await Task.Delay(testTimeoutSeconds * 1000);
@@ -116,12 +117,14 @@ protected override ProtocolStack BuildStack()
116117
ProtocolStack stack = transport switch
117118
{
118119
"tcp" => Over<IpTcpProtocol>(),
120+
"quic-v1" => Over<QuicProtocol>(),
119121
_ => throw new NotImplementedException(),
120122
};
121123

124+
stack = stack.Over<MultistreamProtocol>();
125+
122126
if (!stacklessProtocols.Contains(transport))
123127
{
124-
stack = stack.Over<MultistreamProtocol>();
125128
stack = security switch
126129
{
127130
"noise" => stack.Over<NoiseProtocol>(),
@@ -139,4 +142,11 @@ protected override ProtocolStack BuildStack()
139142
return stack.AddAppLayerProtocol<IdentifyProtocol>()
140143
.AddAppLayerProtocol<PingProtocol>();
141144
}
145+
146+
public string MakeAddress(string ip = "0.0.0.0", string port = "0") => transport switch
147+
{
148+
"tcp" => $"/ip4/{ip}/tcp/{port}",
149+
"quic-v1" => $"/ip4/{ip}/udp/{port}/quic-v1",
150+
_ => throw new NotImplementedException(),
151+
};
142152
}

Diff for: multidim-interop/impl/dotnet/v1.0/TestPlansApp.csproj

+9-7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<Nullable>enable</Nullable>
88
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
99
<RestoreLockedMode>true</RestoreLockedMode>
10+
<EnablePreviewFeatures>True</EnablePreviewFeatures>
1011
</PropertyGroup>
1112

1213
<ItemGroup>
@@ -15,13 +16,14 @@
1516
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
1617
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.1" />
1718

18-
<PackageReference Include="Nethermind.Libp2p.Core" Version="1.0.0-preview.27" />
19-
<PackageReference Include="Nethermind.Libp2p.Protocols.IpTcp" Version="1.0.0-preview.27" />
20-
<PackageReference Include="Nethermind.Libp2p.Protocols.Noise" Version="1.0.0-preview.27" />
21-
<PackageReference Include="Nethermind.Libp2p.Protocols.Ping" Version="1.0.0-preview.27" />
22-
<PackageReference Include="Nethermind.Libp2p.Protocols.Yamux" Version="1.0.0-preview.27" />
23-
<PackageReference Include="Nethermind.Libp2p.Protocols.Identify" Version="1.0.0-preview.27" />
24-
<PackageReference Include="Nethermind.Libp2p.Protocols.Multistream" Version="1.0.0-preview.27" />
19+
<PackageReference Include="Nethermind.Libp2p.Core" Version="1.0.0-preview.29" />
20+
<PackageReference Include="Nethermind.Libp2p.Protocols.Quic" Version="1.0.0-preview.29" />
21+
<PackageReference Include="Nethermind.Libp2p.Protocols.IpTcp" Version="1.0.0-preview.29" />
22+
<PackageReference Include="Nethermind.Libp2p.Protocols.Noise" Version="1.0.0-preview.29" />
23+
<PackageReference Include="Nethermind.Libp2p.Protocols.Ping" Version="1.0.0-preview.29" />
24+
<PackageReference Include="Nethermind.Libp2p.Protocols.Yamux" Version="1.0.0-preview.29" />
25+
<PackageReference Include="Nethermind.Libp2p.Protocols.Identify" Version="1.0.0-preview.29" />
26+
<PackageReference Include="Nethermind.Libp2p.Protocols.Multistream" Version="1.0.0-preview.29" />
2527
</ItemGroup>
2628

2729
</Project>

Diff for: multidim-interop/impl/dotnet/v1.0/packages.lock.json

+42-29
Original file line numberDiff line numberDiff line change
@@ -36,79 +36,92 @@
3636
},
3737
"Nethermind.Libp2p.Core": {
3838
"type": "Direct",
39-
"requested": "[1.0.0-preview.27, )",
40-
"resolved": "1.0.0-preview.27",
41-
"contentHash": "QJ54Eokt+dFz9vVejXQiNeWX+Etw7z+zWLux5pgQoaQbwrtAUYfoqni8oGBUl6I94yCVQnqRv8mqg7wYODSiQg==",
39+
"requested": "[1.0.0-preview.29, )",
40+
"resolved": "1.0.0-preview.29",
41+
"contentHash": "HMllE4gIxjYL/hpkC+bHPa2KFsrQFkFRYeO2mdIkaDbWY6UAs8nZ8mVe2gQ30QVYPBUPDxPoQZ7MtwpxcPnQEw==",
4242
"dependencies": {
4343
"BouncyCastle.Cryptography": "2.2.1",
4444
"Google.Protobuf": "3.24.1",
4545
"Microsoft.Extensions.DependencyInjection": "7.0.0",
4646
"Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0",
4747
"Microsoft.Extensions.Logging.Abstractions": "7.0.1",
48-
"Multiformats.Hash": "1.5.0",
48+
"Multiformats.Hash": "1.5.0-preview.29",
4949
"SimpleBase": "4.0.0"
5050
}
5151
},
5252
"Nethermind.Libp2p.Protocols.Identify": {
5353
"type": "Direct",
54-
"requested": "[1.0.0-preview.27, )",
55-
"resolved": "1.0.0-preview.27",
56-
"contentHash": "sZs4Wg7GPZQoeGs3WiwEWqdjtAv9+drVTrLm9/rs9BVARXuYdkuAVVZhz/i0CsMzpSy3oMQtz6BiQ784VqVZPg==",
54+
"requested": "[1.0.0-preview.29, )",
55+
"resolved": "1.0.0-preview.29",
56+
"contentHash": "1LzFsm6xxq5nviLnXcjVUUe3AJrmwjykZoRUYSemGW229U+i/2lHHjPtJwY0/QNjKRxzcNJyNDmAfCQoZ5OM1A==",
5757
"dependencies": {
5858
"Google.Protobuf": "3.24.1",
5959
"Microsoft.Extensions.Logging.Abstractions": "7.0.1",
60-
"Nethermind.Libp2p.Core": "1.0.0-preview.27",
61-
"Nethermind.Libp2p.Protocols.IpTcp": "1.0.0-preview.27"
60+
"Nethermind.Libp2p.Core": "1.0.0-preview.29",
61+
"Nethermind.Libp2p.Protocols.IpTcp": "1.0.0-preview.29"
6262
}
6363
},
6464
"Nethermind.Libp2p.Protocols.IpTcp": {
6565
"type": "Direct",
66-
"requested": "[1.0.0-preview.27, )",
67-
"resolved": "1.0.0-preview.27",
68-
"contentHash": "w0JHXa4mN+O5bfiDeSXJb/NPdzNs7mLMgqZLWOrqt3rLkVCVIje0jWscNL1IN24QGr+0BWYAgPt7034NZBM7Hw==",
66+
"requested": "[1.0.0-preview.29, )",
67+
"resolved": "1.0.0-preview.29",
68+
"contentHash": "cHIvnkbjr1fBxpONz0+LXHHPmqfGmdFSYfLrf1ZDzkcnE3IWhYa+NW2VbWpowC7Ys9hGT2h8fiidsopiXlRAzw==",
6969
"dependencies": {
7070
"Microsoft.Extensions.Logging.Abstractions": "7.0.1",
71-
"Nethermind.Libp2p.Core": "1.0.0-preview.27"
71+
"Nethermind.Libp2p.Core": "1.0.0-preview.29"
7272
}
7373
},
7474
"Nethermind.Libp2p.Protocols.Multistream": {
7575
"type": "Direct",
76-
"requested": "[1.0.0-preview.27, )",
77-
"resolved": "1.0.0-preview.27",
78-
"contentHash": "ozEWB4ckQVb1W8R07AaDsge4yb1tp1k50jIoZyvVvE9EhYstchbP4HkjboTarJ2jae9iC2Xtc5Wd0lucI8f3OA==",
76+
"requested": "[1.0.0-preview.29, )",
77+
"resolved": "1.0.0-preview.29",
78+
"contentHash": "155kz2rHX3JG1bGlWFwRxYBZ8Zq6HIoCpDPvuE7WMzqZIKINe8+iP6Ogqzjb2oHEQHH1z5k+PHfoqWkhdrNSAw==",
7979
"dependencies": {
80-
"Nethermind.Libp2p.Core": "1.0.0-preview.27"
80+
"Nethermind.Libp2p.Core": "1.0.0-preview.29"
8181
}
8282
},
8383
"Nethermind.Libp2p.Protocols.Noise": {
8484
"type": "Direct",
85-
"requested": "[1.0.0-preview.27, )",
86-
"resolved": "1.0.0-preview.27",
87-
"contentHash": "zsDrlevkXpdzJyDitR5WZOLovSPPgvMDmwVpqKBgOqxngy11kjXyjAIz6k9z8sbjcw9wRcgBGMtrpg4+T3h9EA==",
85+
"requested": "[1.0.0-preview.29, )",
86+
"resolved": "1.0.0-preview.29",
87+
"contentHash": "7kg23PxfAcJzgOwIXwiG1GlCyP1i820VJTlSQ3l9u8Lplg3bM+UN1x8u6lmBQfFwUIkdbjv4WH6y9hKOFlMq3A==",
8888
"dependencies": {
8989
"BouncyCastle.Cryptography": "2.2.1",
9090
"Google.Protobuf": "3.24.1",
91-
"Nethermind.Libp2p.Core": "1.0.0-preview.27",
91+
"Multiformats.Hash": "1.5.0-preview.29",
92+
"Nethermind.Libp2p.Core": "1.0.0-preview.29",
9293
"Noise.NET": "1.0.0"
9394
}
9495
},
9596
"Nethermind.Libp2p.Protocols.Ping": {
9697
"type": "Direct",
97-
"requested": "[1.0.0-preview.27, )",
98-
"resolved": "1.0.0-preview.27",
99-
"contentHash": "lutGn++FJ3VdcAxD7VzLbrtORcVLi9+UKaokXzDI8nSOY9NEJyw8H4/I7QH9ZYhK4tscPOqeF7vDU7KSkboDEw==",
98+
"requested": "[1.0.0-preview.29, )",
99+
"resolved": "1.0.0-preview.29",
100+
"contentHash": "gA3iscXDptJnQayGg9iSWnkkRnQ1UR15sgrxEDIKw7hQgV9tKG5vM7uxWJ/8tgbKOJSmf4f2SDqmEqj/u/1H2Q==",
100101
"dependencies": {
101-
"Nethermind.Libp2p.Core": "1.0.0-preview.27"
102+
"Nethermind.Libp2p.Core": "1.0.0-preview.29"
103+
}
104+
},
105+
"Nethermind.Libp2p.Protocols.Quic": {
106+
"type": "Direct",
107+
"requested": "[1.0.0-preview.29, )",
108+
"resolved": "1.0.0-preview.29",
109+
"contentHash": "eIAjkWo3FAnljyWX14WefvHDBH8kXGWDUNU1+m2pAU01352bDvx0mEZMxZvZkL9xtqMbeFyRFmewn38VMFNwYw==",
110+
"dependencies": {
111+
"BouncyCastle.Cryptography": "2.2.1",
112+
"Microsoft.Extensions.Logging.Abstractions": "7.0.1",
113+
"Multiformats.Hash": "1.5.0-preview.29",
114+
"Nethermind.Libp2p.Core": "1.0.0-preview.29"
102115
}
103116
},
104117
"Nethermind.Libp2p.Protocols.Yamux": {
105118
"type": "Direct",
106-
"requested": "[1.0.0-preview.27, )",
107-
"resolved": "1.0.0-preview.27",
108-
"contentHash": "ODwlrNc0Yz665wUSzXgCgNxXJ1y/jiCSCAmF1b0AtRTFpwbTClplGEZpDKcXQcnM+tQDzeHMX5VDrmNvELLToQ==",
119+
"requested": "[1.0.0-preview.29, )",
120+
"resolved": "1.0.0-preview.29",
121+
"contentHash": "YesEdnovydPyPesPBdsRT+Uxcb28k2ho9nKlS28d7S8MC04LUiNZRnFxqQXPUUEPgB/qpILwDzDE0gqiTit+Rg==",
109122
"dependencies": {
110123
"Microsoft.Extensions.Logging.Abstractions": "7.0.1",
111-
"Nethermind.Libp2p.Core": "1.0.0-preview.27"
124+
"Nethermind.Libp2p.Core": "1.0.0-preview.29"
112125
}
113126
},
114127
"NRedisStack": {

0 commit comments

Comments
 (0)