public override NetSendResult Enqueue(NetOutgoingMessage message) { int queueLen = QueuedSends.Count + 1; int left = GetAllowedSends(); if (queueLen > left || (message.ByteLength > _connection.CurrentMTU && _connection._peerConfiguration.UnreliableSizeBehaviour == NetUnreliableSizeBehaviour.DropAboveMTU)) { _connection.Peer.Recycle(message); return(NetSendResult.Dropped); } if (message.BitLength >= ushort.MaxValue && _connection._peerConfiguration.UnreliableSizeBehaviour == NetUnreliableSizeBehaviour.IgnoreMTU) { _connection.Peer.LogError(NetLogMessage.FromValues(NetLogCode.MessageSizeExceeded, endPoint: _connection, value: message.BitLength, maxValue: ushort.MaxValue)); return(NetSendResult.Dropped); } QueuedSends.Enqueue(message); return(NetSendResult.Sent); }
public override void Reset() { QueuedSends.Clear(); _receivedAcks.Clear(); _windowStart = 0; _sendStart = 0; }
public override NetSendResult Enqueue(NetOutgoingMessage message) { QueuedSends.Enqueue(message); if (QueuedSends.Count <= GetAllowedSends()) { return(NetSendResult.Sent); } return(NetSendResult.Queued); }
public override void Reset() { _receivedAcks.Clear(); for (int i = 0; i < StoredMessages.Length; i++) { StoredMessages[i].Reset(); } QueuedSends.Clear(); _windowStart = 0; _sendStart = 0; }
public override NetSocketResult SendQueuedMessages(TimeSpan now) { int num = GetAllowedSends(); while (num > 0 && QueuedSends.TryDequeue(out NetOutgoingMessage? om)) { var sendResult = ExecuteSend(om); if (!sendResult.Success) { QueuedSends.EnqueueFirst(om); return(sendResult); } num--; } NotifyIdleWaiters(now, num); return(new NetSocketResult(true, false)); }