mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-02-24 13:39:48 +07:00
Added reliable udp packet receiving and partial sending
This commit is contained in:
parent
bfe71c1031
commit
7b3827823d
@ -218,11 +218,34 @@ public class ReliableMessageChannel extends MessageChannel {
|
||||
@Override
|
||||
public void sendMessage(int channelId, DatagramChannel ch, ByteBuf bb) {
|
||||
if (DEBUG_SEND) Log.debug(TAG, "sendMessage " + bb);
|
||||
|
||||
int sendBufferSize = 0;
|
||||
for (int seq = oldestUnacked; ReliableUtils.sequenceLessThan(seq, sequence); seq = (seq + 1) & Packet.USHORT_MAX_VALUE) {
|
||||
if (sendBuffer.exists(seq)) sendBufferSize++;
|
||||
}
|
||||
|
||||
// TODO: make sure this doesn't leak
|
||||
if (sendBufferSize == sendBuffer.numEntries) {
|
||||
messageQueue.addLast(bb);
|
||||
return;
|
||||
}
|
||||
|
||||
final int sequence = incSequence();
|
||||
BufferedPacket packet = sendBuffer.insert(sequence);
|
||||
packet.time = -1.0f;
|
||||
|
||||
// ensure size for header
|
||||
// Is this appending the header length?
|
||||
// https://github.com/KillaMaaki/ReliableNetcode.NET/blob/c5a7339e2de70f52bfda2078f1bbdab2ec9a85c1/ReliableNetcode/MessageChannel.cs#L331-L393
|
||||
|
||||
packet.bb = bb;
|
||||
packet.writeLock = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessageReceived(ChannelHandlerContext ctx, DatagramPacket packet) {
|
||||
if (DEBUG_SEND) Log.debug(TAG, "onMessageReceived " + packet);
|
||||
packetController.onPacketReceived(ctx, packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -232,7 +255,8 @@ public class ReliableMessageChannel extends MessageChannel {
|
||||
|
||||
@Override
|
||||
public void onPacketProcessed(int sequence, ByteBuf bb) {
|
||||
|
||||
if (DEBUG_RECEIVE) Log.debug(TAG, "onPacketProcessed " + bb);
|
||||
packetTransceiver.receivePacket(bb);
|
||||
}
|
||||
|
||||
public static class BufferedPacket {
|
||||
|
Loading…
Reference in New Issue
Block a user