Esempio n. 1
0
        private static void StartListening(Socket server)
        {
            EndPoint remoteEp = new IPEndPoint(IPAddress.Any, 0);

            while (true)
            {
                var recv = 0;
                var data = new byte[1024];
                recv = server.ReceiveFrom(data, ref remoteEp);
                var message = JsonConvert.DeserializeObject <Message>(Encoding.ASCII.GetString(data, 0, recv));

                switch (message.Header.Command)
                {
                case Command.Subscribe:
                    Subscribers.AddSubscriber(message.Header.Topic, message.Content.SubscriptionId.Value, remoteEp);
                    break;

                case Command.Unsubscribe:
                    Subscribers.RemoveSubscriber(message.Header.Topic, message.Content.SubscriptionId.Value);
                    break;
                }
            }
        }
        private void MessageQeueConsumer()
        {
            while (true)
            {
                MessageServiceItem item;
                if (!MessageList.TryGetNextItem(out item))
                {
                    continue;
                }

                if (item.Message.Header.Timeout.HasValue && item.Message.Header.Timeout <= DateTime.Now)
                {
                    if (item.Message.Header.PublishToSubscriptionId && item.Message.Content.SubscriptionId.HasValue)
                    {
                        MessageList.RemoveItem(item.Message.Header.MessageNumber);
                        Subscribers.RemoveSubscriber(item.Message.Header.Topic, item.Message.Content.SubscriptionId.Value);
                    }
                    continue;
                }

                TryPublish(item);
            }
        }