Skip to content

Commit b95d688

Browse files
committed
further developments
1 parent 245835f commit b95d688

File tree

90 files changed

+4301
-2709
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+4301
-2709
lines changed

Benchmarks/CustomSerializerBenchmark/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using System.Diagnostics;
22
using CustomSerializer;
3-
using Serialization;
43
using NetworkLibrary.Components.Statistics;
5-
using MessageProtocol.Serialization;
4+
using NetworkLibrary.MessageProtocol.Serialization;
5+
using NetworkLibrary;
66

77
namespace CustomSerializerBenchmark
88
{

Benchmarks/HybridProtoNetworkBenchmark/Program.cs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
1-
using MessageProtocol.Serialization;
1+
using NetworkLibrary;
22
using NetworkLibrary.Components.Statistics;
3+
using NetworkLibrary.MessageProtocol;
4+
using NetworkLibrary.MessageProtocol.Serialization;
35
using NetworkLibrary.Utils;
46
using ProtoBuf;
57
using Protobuff;
68
using System.Diagnostics;
79

810
namespace HybridProtoNetworkBenchmark
911
{
10-
[ProtoContract]
11-
class AA:IProtoMessage
12-
{
13-
[ProtoMember(1)]
14-
public int B;
15-
}
12+
1613
internal class Program
1714
{
18-
static AA aa = new AA() { B = 8 };
1915
static int port = 20007;
2016
static bool runAsServer;
2117
static bool isFixedMessage;
@@ -28,8 +24,8 @@ internal class Program
2824
static int messageSize;
2925
static MessageEnvelope clientMessage;
3026

31-
private static List<ProtoClient> clients = new List<ProtoClient>();
32-
private static ProtoServer server;
27+
private static List<ProtoMessageClient> clients = new List<ProtoMessageClient>();
28+
private static ProtoMessageServer server;
3329
private static Stopwatch sw2 = new Stopwatch();
3430
private static long totMsgClient;
3531
private static long totMsgServer;
@@ -67,7 +63,7 @@ private static void InitializeServer()
6763

6864
} : new MessageEnvelope();
6965

70-
server = new ProtoServer(port);
66+
server = new ProtoMessageServer(port);
7167
server.OnMessageReceived += isFixedMessage ? EchoStatic : EchoDynamic;
7268
Console.WriteLine("Server Running");
7369

@@ -79,7 +75,7 @@ static void EchoDynamic(in Guid arg1, MessageEnvelope arg2)
7975
}
8076
static void EchoStatic(in Guid arg1, MessageEnvelope arg2)
8177
{
82-
server.SendAsyncMessage(in arg1, fixedMessage,aa);
78+
server.SendAsyncMessage(in arg1, fixedMessage);
8379
}
8480

8581
private static void InitializeClients()
@@ -92,13 +88,12 @@ private static void InitializeClients()
9288
To = Guid.NewGuid(),
9389

9490
};
95-
clients = new List<ProtoClient>();
91+
clients = new List<ProtoMessageClient>();
9692

9793
for (int i = 0; i < numClients; i++)
9894
{
99-
var client = new ProtoClient();
100-
client.OnMessageReceived += (reply)
101-
=> client.SendAsyncMessage(reply);
95+
var client = new ProtoMessageClient();
96+
client.OnMessageReceived += client.SendAsyncMessage;
10297
clients.Add(client);
10398

10499
}

Benchmarks/MessagePackBenchmark/MessagePackBenchmark/Program.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using MessagePack;
2-
using MessagePackNetwork.Network.Components;
2+
using MessagePackNetwork;
3+
using MessagePackNetwork.Components;
34
using NetworkLibrary.Components.Statistics;
45
using NetworkLibrary.Utils;
56
using System;
@@ -24,8 +25,8 @@ internal class Program
2425
static int messageSize;
2526
static MessageEnvelope clientMessage;
2627

27-
private static List<MessagePackClient> clients = new List<MessagePackClient>();
28-
private static MessagePackServer server;
28+
private static List<MessagePackMessageClient> clients = new List<MessagePackMessageClient>();
29+
private static MessagePackMessageServer server;
2930
private static Stopwatch sw2 = new Stopwatch();
3031
private static long totMsgClient;
3132
private static long totMsgServer;
@@ -63,7 +64,7 @@ private static void InitializeServer()
6364

6465
} : new MessageEnvelope();
6566

66-
server = new MessagePackServer(port);
67+
server = new MessagePackMessageServer(port);
6768
server.OnMessageReceived += isFixedMessage ? EchoStatic : EchoDynamic;
6869
Console.WriteLine("Server Running");
6970

@@ -89,11 +90,11 @@ private static void InitializeClients()
8990
To = Guid.NewGuid(),
9091

9192
};
92-
clients = new List<MessagePackClient>();
93+
clients = new List<MessagePackMessageClient>();
9394

9495
for (int i = 0; i < numClients; i++)
9596
{
96-
var client = new MessagePackClient();
97+
var client = new MessagePackMessageClient();
9798
client.OnMessageReceived += (reply) => client.SendAsyncMessage(reply);
9899
clients.Add(client);
99100

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
using NetworkLibrary;
2+
using NetworkLibrary.Components;
3+
using NetworkLibrary.MessageProtocol;
4+
using NetworkLibrary.MessageProtocol.Serialization;
5+
using NetworkLibrary.Utils;
6+
using Protobuff.P2P;
7+
using System.Collections.Concurrent;
8+
using System.Diagnostics;
9+
using System.Runtime.CompilerServices;
10+
using System.Security.Cryptography.X509Certificates;
11+
12+
namespace RelayBenchmark
13+
{
14+
internal class Program
15+
{
16+
private static int totMsgCl;
17+
18+
static void Main(string[] args)
19+
{
20+
MiniLogger.AllLog += (l) => Console.WriteLine(l);
21+
RelayTest();
22+
23+
Console.ReadLine();
24+
}
25+
private static void SerializerTest()
26+
{
27+
PooledMemoryStream stream = new PooledMemoryStream();
28+
MessageEnvelope env = new MessageEnvelope()
29+
{
30+
IsInternal = true,
31+
From = Guid.NewGuid(),
32+
To = Guid.NewGuid(),
33+
Header = "rattatta",
34+
35+
MessageId = Guid.NewGuid(),
36+
TimeStamp = DateTime.Now,
37+
KeyValuePairs = new Dictionary<string, string>() {
38+
{ "K1", "v2" } ,
39+
{ "K3", "" },
40+
{ "K2", null } ,
41+
{ "K4", "%%" } ,
42+
}
43+
};
44+
EnvelopeSerializer.Serialize(stream, env);
45+
var result = EnvelopeSerializer.Deserialize(stream.GetBuffer(), 0);
46+
stream.Position = 0;
47+
48+
Stopwatch sw = new Stopwatch();
49+
sw.Start();
50+
for (int i = 0; i < 50000000; i++)
51+
{
52+
// EnvelopeSerializer.Serialize(stream, env);
53+
var r = EnvelopeSerializer.DeserializeToRouterHeader(stream.GetBuffer(), 0);
54+
stream.Position = 0;
55+
56+
}
57+
sw.Stop();
58+
Console.WriteLine(sw.ElapsedMilliseconds);
59+
}
60+
private static void RelayTest()
61+
{
62+
string ip = "127.0.0.1";
63+
MessageEnvelope testMessage = new MessageEnvelope()
64+
{
65+
Header = "Test",
66+
// Payload = new byte[32]
67+
};
68+
69+
var cert = new X509Certificate2("client.pfx", "greenpass");
70+
var scert = new X509Certificate2("server.pfx", "greenpass");
71+
72+
// var server = new SecureProtoRelayServer(20011, scert);
73+
var clients = new ConcurrentBag<RelayClient>();
74+
//for (int i = 0; i < 200; i++)
75+
int numclients = 20;
76+
Task[] pending = new Task[numclients];
77+
// Parallel.For(0, numclients, (i) =>
78+
for (int i = 0; i < numclients; i++)
79+
80+
{
81+
var client = new RelayClient(cert);
82+
client.OnMessageReceived += (reply) => ClientMsgReceived(client, reply);
83+
client.OnUdpMessageReceived += (reply) => ClientUdpReceived(client, reply);
84+
//client.OnPeerRegistered+=(id)=> client.RequestHolePunchAsync(id, 10000, false);
85+
try
86+
{
87+
pending[i]= client.ConnectAsync(ip, 20011);
88+
89+
clients.Add(client);
90+
client.StartPingService();
91+
}
92+
catch { }
93+
94+
//Thread.Sleep(1000);
95+
}
96+
//);
97+
Task.WaitAll(pending);
98+
Thread.Sleep(5000);
99+
int cc = 0;
100+
List<Task<bool>> pndg = new List<Task<bool>>();
101+
foreach (var client in clients)
102+
{
103+
if (client.sessionId == Guid.Empty)
104+
throw new Exception();
105+
// Console.WriteLine("--- -- - | "+client.sessionId+" count: " + client.Peers.Count);
106+
foreach (var peer in client.Peers)
107+
{
108+
if (client.sessionId>peer.Key)
109+
{
110+
if (peer.Key == Guid.Empty)
111+
throw new Exception();
112+
113+
var a = client.RequestHolePunchAsync(peer.Key, 10000, false);
114+
pndg.Add(a);
115+
116+
// Console.WriteLine(peer.Key+" cnt=> "+ ++cc);
117+
}
118+
119+
}
120+
}
121+
Task.WaitAll(pndg.ToArray());
122+
int kk = 0;
123+
foreach (var item in pndg)
124+
{
125+
kk++;
126+
127+
if (item.Result == false)
128+
{
129+
Console.WriteLine(" +++++++++-------***************---------------- Fucked");
130+
}
131+
else
132+
{
133+
Console.WriteLine("All good"+kk);
134+
}
135+
}
136+
137+
Task.Run(async () =>
138+
{
139+
while(true)
140+
{
141+
await Task.Delay(3000);
142+
Console.WriteLine(totMsgCl);
143+
}
144+
145+
});
146+
Thread.Sleep(5000);
147+
Parallel.ForEach(clients, (client) =>
148+
{
149+
for (int i = 0; i < 10; i++)
150+
{
151+
//return;
152+
foreach (var peer in client.Peers.Keys)
153+
{
154+
//await client.SendRequestAndWaitResponse(peer, testMessage,1000);
155+
//client.SendAsyncMessage(peer, testMessage);
156+
157+
// client.SendUdpMesssage(peer, testMessage);
158+
}
159+
}
160+
161+
});
162+
163+
164+
165+
void ClientMsgReceived(RelayClient client, MessageEnvelope reply)
166+
{
167+
//Interlocked.Increment(ref totMsgCl);
168+
client.SendAsyncMessage(reply.From, reply);
169+
170+
}
171+
172+
173+
void ClientUdpReceived(RelayClient client, MessageEnvelope reply)
174+
{
175+
Interlocked.Increment(ref totMsgCl);
176+
client.SendUdpMesssage(reply.From, reply);
177+
178+
}
179+
}
180+
181+
}
182+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net7.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<ProjectReference Include="..\..\Protobuff\Protobuff.csproj" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<None Update="client.pfx">
16+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
17+
</None>
18+
<None Update="server.pfx">
19+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
20+
</None>
21+
</ItemGroup>
22+
23+
</Project>

Benchmarks/SecureProtobuffBenchmark/Program.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
using MessageProtocol.Serialization;
1+
using NetworkLibrary;
22
using NetworkLibrary.Components.Statistics;
3+
using NetworkLibrary.MessageProtocol.Serialization;
34
using NetworkLibrary.Utils;
45
using Protobuff;
56
using System;
@@ -23,8 +24,8 @@ internal class Program
2324
static int messageSize;
2425
static MessageEnvelope clientMessage;
2526

26-
private static List<SecureProtoClient> clients = new List<SecureProtoClient>();
27-
private static SecureProtoServer server;
27+
private static List<SecureProtoMessageClient> clients = new List<SecureProtoMessageClient>();
28+
private static SecureProtoMessageServer server;
2829
private static Stopwatch sw2 = new Stopwatch();
2930
private static long totMsgClient;
3031
private static long totMsgServer;
@@ -62,7 +63,7 @@ private static void InitializeServer()
6263
} : new MessageEnvelope();
6364

6465
var scert = new X509Certificate2("server.pfx", "greenpass");
65-
server = new SecureProtoServer(port, scert);
66+
server = new SecureProtoMessageServer(port, scert);
6667
server.OnMessageReceived += isFixedMessage ? EchoStatic : EchoDynamic;
6768
Console.WriteLine("Server Running");
6869

@@ -88,12 +89,12 @@ private static void InitializeClients()
8889
To = Guid.NewGuid(),
8990

9091
};
91-
clients = new List<SecureProtoClient>();
92+
clients = new List<SecureProtoMessageClient>();
9293
var ccert = new X509Certificate2("client.pfx", "greenpass");
9394

9495
for (int i = 0; i < numClients; i++)
9596
{
96-
var client = new SecureProtoClient(ccert);
97+
var client = new SecureProtoMessageClient(ccert);
9798
client.OnMessageReceived += (reply) => client.SendAsyncMessage(reply);
9899
clients.Add(client);
99100

NetworkLibrary/Components/MessageBuffer/MessageBuffer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ public bool TryFlushQueue(ref byte[] buffer, int offset, out int amountWritten)
8989
flushStream = temp;
9090

9191
buffer = flushStream.GetBuffer();
92-
amountWritten = (int)flushStream.Position;
92+
amountWritten = flushStream.Position32;
9393

9494
currentIndexedMemory -= amountWritten;
95-
flushStream.Position = 0;
95+
flushStream.Position32 = 0;
9696

9797
return true;
9898
}

0 commit comments

Comments
 (0)