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
| Type | Name | Description |
|---|---|---|
| Mirage.SocketLayer.IRawConnection | connection | |
| Mirage.SocketLayer.Config | config | |
| System.Int32 | maxPacketSize | |
| Mirage.SocketLayer.ITime | time | |
| 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.Action | onInvalidPacket | |
| ILogger | logger | |
| Mirage.SocketLayer.Metrics | metrics |
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
| Type | Name | Description |
|---|---|---|
| Mirage.SocketLayer.AckSystem.ReliableReceived | packet |
Returns
| Type | Description |
|---|---|
| System.Boolean | true if next packet is available |
GetNextFragment()
Declaration
public AckSystem.ReliableReceived GetNextFragment()
Returns
| Type | Description |
|---|---|
| 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
| Type | Name | Description |
|---|---|---|
| System.Byte[] | inPacket | |
| System.Int32 | inOffset | |
| System.Int32 | inLength |
Returns
| Type | Description |
|---|---|
| Mirage.SocketLayer.INotifyToken |
SendNotify(Byte[], Int32, Int32, INotifyCallBack)
Declaration
public void SendNotify(byte[] inPacket, int inOffset, int inLength, INotifyCallBack callBacks)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Byte[] | inPacket | |
| System.Int32 | inOffset | |
| System.Int32 | inLength | |
| Mirage.SocketLayer.INotifyCallBack | callBacks |
SendReliable(Byte[], Int32, Int32)
Declaration
public void SendReliable(byte[] message, int offset, int length)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Byte[] | message | |
| System.Int32 | offset | |
| System.Int32 | length |
ReceiveNotify(ReadOnlySpan<Byte>)
Receives incoming Notify packet Ignores duplicate or late packets
Declaration
public ReadOnlySpan<byte> ReceiveNotify(ReadOnlySpan<byte> packet)
Parameters
| Type | Name | Description |
|---|---|---|
| ReadOnlySpan<System.Byte> | packet |
Returns
| Type | Description |
|---|---|
| ReadOnlySpan<System.Byte> | default or new packet to handle |
ReceiveReliable(ReadOnlySpan<Byte>, Boolean)
Declaration
public void ReceiveReliable(ReadOnlySpan<byte> packet, bool isFragment)
Parameters
| Type | Name | Description |
|---|---|---|
| ReadOnlySpan<System.Byte> | packet | |
| System.Boolean | isFragment |
ReceiveAck(ReadOnlySpan<Byte>)
Declaration
public void ReceiveAck(ReadOnlySpan<byte> packet)
Parameters
| Type | Name | Description |
|---|---|---|
| ReadOnlySpan<System.Byte> | packet |