Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        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");
                }
            }
        }