Ejemplo n.º 1
0
        public void PublishMessageReceived(PublishPacketReceivedEventArgs message)
        {
            if (_jsonConfigurator.GetSettings().RunInClusterSetup)
            {
                if (!_publishers.Any(x => x.Ip == message.IpAddress && x.Port == message.Port))
                {
                    lock (_harakaDb.GetLock(Setup.PublisherCs))
                    {
                        var pubs      = _harakaDb.GetObjects <Publisher>(Setup.PublisherCs);
                        var publisher = new Publisher(message.IpAddress, message.Port, _jsonConfigurator.GetSettings().PrimaryNumber, message.SenderClient);
                        pubs.Add(publisher);
                        _harakaDb.StoreObject(Setup.PublisherCs, pubs);
                        _publishers.Add(publisher);
                    }
                }

                _queues.Find(x => x.GetTopicId() == message.Packet.Topic).AddEvent(new Event(message, EventType.TentativeMessage));
                lock (_messagesLock)
                {
                    OwnTentativeMessages.Add(message);
                }
            }
            else
            {
                _queues.Find(x => x.GetTopicId() == message.Packet.Topic).AddEvent(new Event(message, EventType.ComittedMessage));
                lock (_messagesLock)
                {
                    CommittedMessages.Add(message);
                }
            }
        }
Ejemplo n.º 2
0
 private void PublishCommittedMessage(PublishPacketReceivedEventArgs message)
 {
     _topic.Subscribers = _db.GetSubScribers(_topic);
     foreach (var sub in _topic.Subscribers.Where(x => x.AttachedBroker == _jsonConfigurator.GetSettings().PrimaryNumber))
     {
         _udpComm.SendPackage(message.Packet, sub.Ip, sub.Port);
     }
 }
Ejemplo n.º 3
0
 private void PublishAndAddTentativeMessage(PublishPacketReceivedEventArgs message)
 {
     //Todo: store tentative messages
     _topic.Subscribers = _db.GetSubScribers(_topic);
     //Todo: Dont send messages to one that has already received it
     foreach (var sub in _topic.Subscribers.Where(x => x.ReceiveTentativeMessages && x.AttachedBroker == _jsonConfigurator.GetSettings().PrimaryNumber))
     {
         _udpComm.SendPackage(message.Packet, sub.Ip, sub.Port);
     }
 }
Ejemplo n.º 4
0
        protected virtual void OnMessageReceived(object sender, PublishPacketReceivedEventArgs e)
        {
            if (!consumers.Any())
            {
                return;
            }
            var consumer = consumers.Find(x => x.Item2 == e.Packet.Topic);

            if (consumer == null)
            {
                return;
            }

            for (var i = 0; i < e.Packet.Messages.Count; i++)
            {
                var args = new BasicDeliverEventArgs {
                    Body = e.Packet.Messages[i]
                };
                consumer.Item1.MsgReceived(args);
            }
        }
Ejemplo n.º 5
0
 private void PublishPacketToApplicationLayer(PublishPacketReceivedEventArgs e)
 {
     PublishPackage?.Invoke(this, e);
 }
Ejemplo n.º 6
0
 private static void PublishMessageRecieved(object sender, PublishPacketReceivedEventArgs e)
 {
     _gossip.PublishMessageReceived(e);
 }
Ejemplo n.º 7
0
 public void PublishMessageReceived(PublishPacketReceivedEventArgs publishPacketReceivedEventArgs)
 {
     publishPacketReceivedEventArgs.Packet.ReceivedAtBroker = _clock.ElapsedTimeSpan();
     _antiEntropy.PublishMessageReceived(publishPacketReceivedEventArgs);
     //Debug.WriteLine("Messages Published to Broker - Number: " + message.AdministrationMessage.SeqNo + " Time: " + message.AdministrationMessage.ReceivedAtBroker);
 }
Ejemplo n.º 8
0
 public void PublishMessageReceived(PublishPacketReceivedEventArgs publishPacketReceivedEventArgs)
 {
     publishPacketReceivedEventArgs.Packet.ReceivedAtBroker = _timeSyncProtocol.GetTime();
     _antiEntropy.PublishMessageReceived(publishPacketReceivedEventArgs);
     //Debug.WriteLine("Messages Published to Broker - Number: " + message.AdministrationMessage.SeqNo + " Time: " + message.AdministrationMessage.ReceivedAtBroker);
 }