🚧 pass-through raw data, refactoring

This commit is contained in:
2023-10-07 19:30:52 +03:00
parent 8788cb0fcf
commit e1a3ea45e2
29 changed files with 434 additions and 219 deletions
+2 -2
View File
@@ -31,8 +31,8 @@ public sealed class ENetConnection: INetworkConnection
_peer = peer;
Id = (ushort) peer.ID;
Reliable = new ENetReliableChannel(peer, 0);
Unreliable = new ENetUnreliableChannel(peer, 1);
Reliable = new ENetReliableChannel(peer, NetworkChannel.RELIABLE);
Unreliable = new ENetUnreliableChannel(peer, NetworkChannel.UNRELIABLE);
}
public void Close()
@@ -14,7 +14,9 @@
* limitations under the License.
*/
using System.Net;
using ENet;
using Ragon.Protocol;
using Ragon.Server.IO;
namespace Ragon.Server.ENet;
@@ -23,11 +25,13 @@ public sealed class ENetReliableChannel: INetworkChannel
{
private Peer _peer;
private byte _channelId;
private byte[] _data;
public ENetReliableChannel(Peer peer, int channelId)
public ENetReliableChannel(Peer peer, NetworkChannel channel)
{
_peer = peer;
_channelId = (byte) channelId;
_data = new byte[1500];
_channelId = (byte) channel;
}
public void Send(byte[] data)
@@ -37,4 +41,14 @@ public sealed class ENetReliableChannel: INetworkChannel
_peer.Send(_channelId, ref newPacket);
}
public void Send(RagonBuffer buffer)
{
buffer.ToArray(_data);
var newPacket = new Packet();
newPacket.Create(_data, buffer.Length, PacketFlags.Reliable);
_peer.Send(_channelId, ref newPacket);
}
}
+1 -1
View File
@@ -118,7 +118,7 @@ namespace Ragon.Server.ENet
_event.Packet.CopyTo(dataRaw);
_event.Packet.Dispose();
_listener.OnData(connection, dataRaw);
_listener.OnData(connection, (NetworkChannel) _event.ChannelID, dataRaw);
break;
}
}
@@ -15,6 +15,7 @@
*/
using ENet;
using Ragon.Protocol;
using Ragon.Server.IO;
namespace Ragon.Server.ENet;
@@ -23,11 +24,12 @@ public sealed class ENetUnreliableChannel: INetworkChannel
{
private Peer _peer;
private byte _channelId;
private byte[] _data;
public ENetUnreliableChannel(Peer peer, int channelId)
public ENetUnreliableChannel(Peer peer, NetworkChannel channel)
{
_peer = peer;
_channelId = (byte) channelId;
_channelId = (byte) channel;
}
public void Send(byte[] data)
@@ -37,4 +39,14 @@ public sealed class ENetUnreliableChannel: INetworkChannel
_peer.Send(_channelId, ref newPacket);
}
public void Send(RagonBuffer buffer)
{
buffer.ToArray(_data);
var newPacket = new Packet();
newPacket.Create(_data, buffer.Length, PacketFlags.None);
_peer.Send(_channelId, ref newPacket);
}
}