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()); } } }
public EventBuilder(Event ievent) { _seqId = ievent.SeqId; _clientId = ievent.ClientId; _ack = ievent.Ack; _eventEnum = ievent.GetEventEnum(); _timeoutTypeEnum = ievent.GetTimeoutType(); _payload = ievent.GetPayload(); }
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()); } } }