Ejemplo n.º 1
0
        //Todo: Enable to bulk messages to subscribers
        public void PublishCommittedMessages(IEnumerable <PublishPacketReceivedEventArgs> messages)
        {
            _topic.Subscribers = _db.GetSubScribers(_topic);
            foreach (var messageReceivedEventArgse in messages)
            {
                foreach (var sub in _topic.Subscribers.Where(x => !x.ReceiveTentativeMessages && x.AttachedBroker == _jsonConfigurator.GetSettings().PrimaryNumber))
                {
                    if (messageReceivedEventArgse.Packet.GlobalSequenceNumber > sub.GlobalSequenceNumberLastReceived)
                    {
                        _udpComm.SendPackage(messageReceivedEventArgse.Packet, sub.Ip, sub.Port);
                        sub.UpdateGobalSequenceNumber(messageReceivedEventArgse.Packet.GlobalSequenceNumber.Value);
                    }
                }
            }

            _db.UpdateSubscribers(_topic);
            SubscribersHasBeenUpdated?.Invoke(this, _topic.Subscribers.Where(x => x.AttachedBroker == _jsonConfigurator.GetSettings().PrimaryNumber).ToList());
        }