Пример #1
0
 public void SendRaw(ArraySegment <byte> raw, EDeliveryMethod eMethod)
 {
     m_Peer.Send(
         raw.Array,
         raw.Offset,
         raw.Count,
         eMethod == EDeliveryMethod.Reliable ?
         DeliveryMethod.ReliableOrdered :
         DeliveryMethod.Unreliable);
 }
        public static EXDeliveryMethod ToEXDeliveryMethod(this EDeliveryMethod method)
        {
            switch (method)
            {
            case EDeliveryMethod.Delivery:
                return(EXDeliveryMethod.Delivery);

            case EDeliveryMethod.PickUp:
                return(EXDeliveryMethod.PickUp);

            default:
                throw new ArgumentOutOfRangeException($"Unknown delivery method: {method}");
            }
        }
Пример #3
0
        /// <summary>
        ///     Sends a message to peer
        /// </summary>
        /// <param name="message">Message to send</param>
        /// <param name="responseCallback">Callback method, which will be invoked when peer responds</param>
        /// <param name="timeoutSecs">If peer fails to respons within this time frame, callback will be invoked with timeout status</param>
        /// <param name="eDeliveryMethod">Delivery method</param>
        /// <returns></returns>
        public int SendMessage(IMessage message, ResponseCallback responseCallback,
                               int timeoutSecs, EDeliveryMethod eDeliveryMethod)
        {
            if (!IsConnected)
            {
                responseCallback.Invoke(EResponseStatus.NotConnected, null);
                return(-1);
            }

            var id = RegisterAck(message, responseCallback, timeoutSecs);

            SendMessage(message, eDeliveryMethod);

            return(id);
        }
Пример #4
0
        public override void SendMessage(IMessage message, EDeliveryMethod eDeliveryMethod)
        {
            if (_delayedMessages != null)
            {
                lock (_delayedMessages)
                {
                    if (_delayedMessages != null)
                    {
                        _delayedMessages.Enqueue(message.ToBytes());
                        return;
                    }
                }
            }

            _socket.Send(message.ToBytes());
        }
Пример #5
0
        public override void SendMessage(IMessage message, EDeliveryMethod eDeliveryMethod)
        {
            if (_delayedMessages != null)
            {
                // There's a bug in websockets
                // When server sends a message to client right after client
                // connects to it, the message is lost somewhere.
                // Sending first few messages with a small delay fixes this issue.

                lock (_delayedMessages)
                {
                    if (_delayedMessages != null)
                    {
                        _delayedMessages.Enqueue(message.ToBytes());
                        return;
                    }
                }
            }

            _session.SendData(message.ToBytes());
        }
Пример #6
0
 public void SendMessage(short opCode, ISerializablePacket packet, EDeliveryMethod method)
 {
     SendMessage(MessageHelper.Create(opCode, packet), method);
 }
Пример #7
0
        public void SendMessage(short opCode, string data, EDeliveryMethod method)
        {
            var msg = MessageHelper.Create(opCode, data);

            Peer.SendMessage(msg, method);
        }
Пример #8
0
        public void SendMessage(short opCode, byte[] data, EDeliveryMethod method = EDeliveryMethod.ReliableSequenced)
        {
            var msg = MessageHelper.Create(opCode, data);

            Peer?.SendMessage(msg, method);
        }
Пример #9
0
        public void SendMessage(short opCode, ISerializablePacket packet, EDeliveryMethod method)
        {
            var msg = MessageHelper.Create(opCode, packet.ToBytes());

            Peer.SendMessage(msg, method);
        }
Пример #10
0
 public void SendMessage(IMessage message, EDeliveryMethod method)
 {
     Peer.SendMessage(message, method);
 }
Пример #11
0
 public void SendRaw(ArraySegment <byte> raw, EDeliveryMethod _)
 {
     sendBuffer.Add(raw.ToArray());
 }
Пример #12
0
 public override void SendMessage(IMessage message, EDeliveryMethod eDeliveryMethod)
 {
     _peer.Send(message.ToBytes(), DeliveryMethod.ReliableSequenced);
 }
Пример #13
0
 public void SendMessage(short opCode, byte[] data,
                         EDeliveryMethod deliveryMethod = EDeliveryMethod.ReliableOrdered)
 {
     SendMessage(MessageHelper.Create(opCode, data), deliveryMethod);
 }
Пример #14
0
 public override void SendMessage(IMessage message, EDeliveryMethod eDeliveryMethod)
 {
     _peer.Send(message.ToBytes(), (DeliveryMethod)(int)eDeliveryMethod);
 }
Пример #15
0
 /// <summary>
 ///     Sends a message to peer
 /// </summary>
 /// <param name="message">Message to send</param>
 /// <param name="eDeliveryMethod">Delivery method</param>
 /// <returns></returns>
 public abstract void SendMessage(IMessage message, EDeliveryMethod eDeliveryMethod);
Пример #16
0
 public IncommingMessage(short opCode, byte flags, byte[] data, EDeliveryMethod eDeliveryMethod, IPeer peer)
 {
     OpCode = opCode;
     Peer   = peer;
     _data  = data;
 }
Пример #17
0
 public void SendMessage(TMsgType type, byte[] data, EDeliveryMethod method = EDeliveryMethod.ReliableSequenced)
 {
     _client?.SendMessage((short)(object)type, data);
 }