internal void SendInternal(ArraySegment <byte> payload, bool noMerge) { #if ALLOW_CONNECTION_STUB if (IsStub) { // NOOP return; } #endif LastMessageOut = NetTime.Now; bool merged = false; if (!Socket.Config.EnablePacketMerging || noMerge || !(merged = Merger.TryWrite(payload))) { if (Socket.Simulator != null) { Socket.Simulator.Add(this, payload); } else { Socket.SendRaw(EndPoint, payload); } } }
internal void SendInternal(ArraySegment <byte> payload, bool noMerge) { #if ALLOW_CONNECTION_STUB if (IsStub) { // NOOP return; } #endif // Check if there is enough bandwidth to spare for the packet if (BandwidthTracker == null || BandwidthTracker.TrySend(payload.Count)) { LastMessageOut = NetTime.Now; bool merged = false; if (!Socket.Config.EnablePacketMerging || noMerge || !(merged = Merger.TryWrite(payload))) { if (Socket.Simulator != null) { Socket.Simulator.Add(this, payload); } else { Socket.SendRaw(EndPoint, payload); } } } else { // Packet was dropped if (Logging.CurrentLogLevel <= LogLevel.Debug) { Logging.LogInfo("Message to connection " + this.Id + " was dropped due to bandwidth constraits"); } } }