Skip to main content

Class AckSystem

Inheritance​
System.Object
Inherited Members​
Show
Syntax​
public class AckSystem : IDisposable

Constructors​

AckSystem(IRawConnection, Config, Int32, ITime, Pool<ByteBuffer>, Pool<AckSystem.ReliablePacket>, RingBuffer<AckSystem.AckablePacket>, RingBuffer<AckSystem.ReliableReceived>, Action, ILogger, Metrics)​

Declaration​
public AckSystem(IRawConnection connection, Config config, int maxPacketSize, ITime time, Pool<ByteBuffer> bufferPool, Pool<AckSystem.ReliablePacket> reliablePool, RingBuffer<AckSystem.AckablePacket> sentAckablePackets, RingBuffer<AckSystem.ReliableReceived> reliableReceive, Action onInvalidPacket, ILogger logger = null, Metrics metrics = null)
Parameters​
TypeNameDescription
Mirage.SocketLayer.IRawConnectionconnection
Mirage.SocketLayer.Configconfig
System.Int32maxPacketSize
Mirage.SocketLayer.ITimetime
Mirage.SocketLayer.Pool<Mirage.SocketLayer.ByteBuffer>bufferPool
Mirage.SocketLayer.Pool<Mirage.SocketLayer.AckSystem.ReliablePacket>reliablePool
Mirage.SocketLayer.RingBuffer<Mirage.SocketLayer.AckSystem.AckablePacket>sentAckablePackets
Mirage.SocketLayer.RingBuffer<Mirage.SocketLayer.AckSystem.ReliableReceived>reliableReceive
System.ActiononInvalidPacket
ILoggerlogger
Mirage.SocketLayer.Metricsmetrics

Fields​

SEQUENCE_HEADER​

Declaration​
public const int SEQUENCE_HEADER = 13

NOTIFY_HEADER_SIZE​

PacketType, sequence, ack sequence, mask

Declaration​
public const int NOTIFY_HEADER_SIZE = 13

RELIABLE_HEADER_SIZE​

PacketType, sequence, ack sequence, mask, order

Declaration​
public const int RELIABLE_HEADER_SIZE = 15

ACK_HEADER_SIZE​

PacketType, ack sequence, mask

Declaration​
public const int ACK_HEADER_SIZE = 11

FRAGMENT_INDEX_SIZE​

Declaration​
public const int FRAGMENT_INDEX_SIZE = 1

MIN_RELIABLE_HEADER_SIZE​

Smallest size a header for reliable packet, + 2 bytes per message

Declaration​
public const int MIN_RELIABLE_HEADER_SIZE = 17

MIN_RELIABLE_FRAGMENT_HEADER_SIZE​

Smallest size a header for reliable packet, + 1 byte for fragment index

Declaration​
public const int MIN_RELIABLE_FRAGMENT_HEADER_SIZE = 16

SizePerFragment​

Declaration​
public readonly int SizePerFragment

Properties​

SentAckablePackets​

Declaration​
public RingBuffer<AckSystem.AckablePacket> SentAckablePackets { get; }

ReliableReceive​

Declaration​
public RingBuffer<AckSystem.ReliableReceived> ReliableReceive { get; }

Methods​

Dispose()​

Declaration​
public void Dispose()

NextReliablePacket(out AckSystem.ReliableReceived)​

Gets next Reliable packet in order, packet consists for multiple messages [length, message, length, message, ...]

Declaration​
public bool NextReliablePacket(out AckSystem.ReliableReceived packet)
Parameters​
TypeNameDescription
Mirage.SocketLayer.AckSystem.ReliableReceivedpacket
Returns​
TypeDescription
System.Booleantrue if next packet is available

GetNextFragment()​

Declaration​
public AckSystem.ReliableReceived GetNextFragment()
Returns​
TypeDescription
Mirage.SocketLayer.AckSystem.ReliableReceived

Update()​

Declaration​
public void Update()

SendNotify(Byte[], Int32, Int32)​

Use for non-alloc version

Declaration​
public INotifyToken SendNotify(byte[] inPacket, int inOffset, int inLength)
Parameters​
TypeNameDescription
System.Byte[]inPacket
System.Int32inOffset
System.Int32inLength
Returns​
TypeDescription
Mirage.SocketLayer.INotifyToken

SendNotify(Byte[], Int32, Int32, INotifyCallBack)​

Declaration​
public void SendNotify(byte[] inPacket, int inOffset, int inLength, INotifyCallBack callBacks)
Parameters​
TypeNameDescription
System.Byte[]inPacket
System.Int32inOffset
System.Int32inLength
Mirage.SocketLayer.INotifyCallBackcallBacks

SendReliable(Byte[], Int32, Int32)​

Declaration​
public void SendReliable(byte[] message, int offset, int length)
Parameters​
TypeNameDescription
System.Byte[]message
System.Int32offset
System.Int32length

ReceiveNotify(ReadOnlySpan<Byte>)​

Receives incoming Notify packet Ignores duplicate or late packets

Declaration​
public ReadOnlySpan<byte> ReceiveNotify(ReadOnlySpan<byte> packet)
Parameters​
TypeNameDescription
ReadOnlySpan<System.Byte>packet
Returns​
TypeDescription
ReadOnlySpan<System.Byte>default or new packet to handle

ReceiveReliable(ReadOnlySpan<Byte>, Boolean)​

Declaration​
public void ReceiveReliable(ReadOnlySpan<byte> packet, bool isFragment)
Parameters​
TypeNameDescription
ReadOnlySpan<System.Byte>packet
System.BooleanisFragment

ReceiveAck(ReadOnlySpan<Byte>)​

Declaration​
public void ReceiveAck(ReadOnlySpan<byte> packet)
Parameters​
TypeNameDescription
ReadOnlySpan<System.Byte>packet