Exemplo n.º 1
0
 private void AddEventToReliableQueue(Event ievent)
 {
     if (!ievent.GetTimeoutType().Equals(EventTimeoutTypeEnum.Unreliable))
     {
         ReliableEventQueue eventQueue;
         if (_sendingEventsQueues.TryGetValue(ievent.GetTimeoutType(), out eventQueue))
         {
             eventQueue.AddEvent(ievent);
         }
         else
         {
             throw new Exception("No such timeout type " + ievent.GetTimeoutType());
         }
     }
 }
Exemplo n.º 2
0
 public EventBuilder(Event ievent)
 {
     _seqId           = ievent.SeqId;
     _clientId        = ievent.ClientId;
     _ack             = ievent.Ack;
     _eventEnum       = ievent.GetEventEnum();
     _timeoutTypeEnum = ievent.GetTimeoutType();
     _payload         = ievent.GetPayload();
 }
Exemplo n.º 3
0
        public void ReceiveEvent(Event ievent)
        {
            ReliableEventQueue eventQueue;

            if (_sendingEventsQueues.TryGetValue(ievent.GetTimeoutType(), out eventQueue))
            {
                if (ievent.Ack)
                {
                    eventQueue.AckEvent(ievent);
                }
                else
                {
                    if (eventQueue.ShouldProcessEvent(ievent) && ievent.GetPayload() != null)
                    {
                        lock (_unreadReceivedEvents)
                        {
                            _unreadReceivedEvents.Enqueue(ievent);
                        }
                        eventQueue.AckEvent(ievent);
                    }

                    _networkManager.SendEventFakingLatencyAndPacketLoss(new EventBuilder(ievent).SetAck(true).Build());
                }
            }
            else
            {
                if (ievent.GetTimeoutType().Equals(EventTimeoutTypeEnum.Unreliable))
                {
                    lock (_unreadReceivedEvents)
                    {
                        _unreadReceivedEvents.Enqueue(ievent);
                    }
                }
                else
                {
                    throw new Exception("No such timeout type " + ievent.GetTimeoutType());
                }
            }
        }