Example #1
0
        public void GetMessagesForSubscriberOfTopic(string topic, NewsSubscriber subscriber)
        {
            if (messagesQueue.Count == 0)
            {
                Console.WriteLine("No messages from publishers to display");
            }
            else
            {
                while (messagesQueue.Count != 0)
                {
                    Message message = messagesQueue.Dequeue();

                    if (message.Topic.ToLower().Equals(topic.ToLower()))
                    {
                        HashSet <Subscriber> subscribersOfTopic = subscribersTopicMap[topic];

                        foreach (Subscriber _subscriber in subscribersOfTopic)
                        {
                            if (_subscriber.Equals(subscriber))
                            {
                                //add broadcasted message to subscriber message queue
                                List <Message> subscriberMessages = subscriber.SubscriberMessages;
                                subscriberMessages.Add(message);
                                subscriber.SubscriberMessages = subscriberMessages;
                            }
                        }
                    }
                }
            }
        }
Example #2
0
 public void RemoveSubscriber(string topic, NewsSubscriber subscriber)
 {
     if (subscribersTopicMap.ContainsKey(topic))
     {
         HashSet <Subscriber> subscribers = subscribersTopicMap[topic];
         subscribers.Remove(subscriber);
         subscribersTopicMap[topic] = subscribers;
     }
 }
Example #3
0
        public static void Main(string[] args)
        {
            //Instantiate publishers, subscribers and PubSubService
            IPublisher sportNewsPublisher     = new NewsPublisher();
            IPublisher politicalNewsPublisher = new NewsPublisher();

            Subscriber sportSubscriber    = new NewsSubscriber();
            Subscriber politicsSubscriber = new NewsSubscriber();
            Subscriber newsSubscriber     = new NewsSubscriber();


            //Declare Messages and Publish Messages to PubSubService
            Message sportMsg1    = new Message("Sport", "Sport news 1");
            Message sportMsg2    = new Message("Sport", "sport news 2");
            Message politicsMsg3 = new Message("Politics", "politics 1223");

            //
            PubSubService pubSubService = new PubSubService();

            sportNewsPublisher.publish(sportMsg1, pubSubService);
            sportNewsPublisher.publish(sportMsg2, pubSubService);
            politicalNewsPublisher.publish(politicsMsg3, pubSubService);



            //Declare Subscribers
            sportSubscriber.AddSubscriber("Sport", pubSubService);
            politicsSubscriber.AddSubscriber("Politics", pubSubService);
            newsSubscriber.AddSubscriber("Sport", pubSubService);
            newsSubscriber.AddSubscriber("Politics", pubSubService);

            //Trying unSubscribing a subscriber
            //newsSubscriber.unSubscribe("Sport", pubSubService);

            //Broadcast message to all subscribers. After broadcast, messageQueue will be empty in PubSubService
            pubSubService.Broadcast();

            //Print messages of each subscriber to see which messages they got
            Console.WriteLine("Messages of Sport Subscriber are: ");
            sportSubscriber.printMessages();

            Console.WriteLine("\nMessages of Politics Subscriber are: ");
            politicsSubscriber.printMessages();

            Console.WriteLine("\nMessages of News Subscriber are: ");
            newsSubscriber.printMessages();

            Console.Write("\nPress Any Key:");
            Console.ReadKey();
        }
Example #4
0
 public void AddSubscriber(string topic, NewsSubscriber subscriber)
 {
     if (subscribersTopicMap.ContainsKey(topic))
     {
         HashSet <Subscriber> subscribers = subscribersTopicMap[topic];
         subscribers.Add(subscriber);
         subscribersTopicMap[topic] = subscribers;
     }
     else
     {
         HashSet <Subscriber> subscribers = new HashSet <Subscriber>();
         subscribers.Add(subscriber);
         subscribersTopicMap.Add(topic, subscribers);
     }
 }