Example #1
0
        /**
         * Subscribe
         *
         * This function is NON BLOCKING.
         * Listen for a message on a channel.
         *
         * @param Dictionary<string, object> args .
         *  args contains channel name and a delegate to get response back
         */

        public void Subscribe(Dictionary <string, object> args)
        {
            bool is_alreadyConnect = false;

            if (!args.ContainsKey("timestamp"))
            {
                args.Add("timestamp", 0);
            }
            string channel = args["channel"].ToString();

            // Validate Arguments
            if (args["callback"] != null)
            {
                callback = (Callback)args["callback"];
            }
            else
            {
                Debug.WriteLine("Invalid Callback.");
            }
            if (channel == null || channel == "")
            {
                callback.errorCallback(channel, "Invalid channel.");
                return;
            }

            // Ensure Single Connection
            if (subscriptions != null && subscriptions.Count > 0)
            {
                bool channel_exist = false;
                foreach (Channel_status cs in subscriptions)
                {
                    if (cs.channel == channel)
                    {
                        channel_exist = true;
                        if (!cs.connected)
                        {
                            cs.connected = true;
                        }
                        else
                        {
                            is_alreadyConnect = true;
                        }
                        break;
                    }
                }
                if (!channel_exist)
                {
                    Channel_status cs = new Channel_status();
                    cs.channel   = channel;
                    cs.connected = true;
                    subscriptions.Add(cs);
                }
                else if (is_alreadyConnect)
                {
                    callback.errorCallback(channel, " Already Connected");
                    return;
                }
            }
            else
            {
                // New Channel
                Channel_status cs = new Channel_status();
                cs.channel   = channel;
                cs.connected = true;
                subscriptions.Add(cs);
            }
            this._subscribe(args);
        }
Example #2
0
        /**
         * Subscribe
         *
         * This function is NON BLOCKING.
         * Listen for a message on a channel.
         *
         * @param Dictionary<string, object> args .
         *  args contains channel name and a delegate to get response back
         */
        public void Subscribe(Dictionary<string, object> args)
        {
            bool is_alreadyConnect = false;

            if(!args.ContainsKey("timestamp"))
                args.Add("timestamp", 0);
            string channel = args["channel"].ToString();
            // Validate Arguments
            if (args["callback"] != null)
            {
                callback = (Callback)args["callback"];
            }
            else
            {
                Debug.WriteLine("Invalid Callback.");
            }
            if (channel == null || channel == "")
            {
                callback.errorCallback(channel, "Invalid channel.");
                return;
            }

            // Ensure Single Connection
            if (subscriptions != null && subscriptions.Count > 0)
            {
                bool channel_exist = false;
                foreach (Channel_status cs in subscriptions)
                {
                    if (cs.channel == channel)
                    {
                        channel_exist = true;
                            if (!cs.connected)
                                cs.connected = true;
                            else
                                is_alreadyConnect = true;
                        break;
                    }
                }
                    if (!channel_exist)
                    {
                        Channel_status cs = new Channel_status();
                        cs.channel = channel;
                        cs.connected = true;
                        subscriptions.Add(cs);
                    }
                    else if (is_alreadyConnect)
                    {
                        callback.errorCallback(channel ," Already Connected");
                        return;
                    }
            }
            else
            {
                // New Channel
                Channel_status cs = new Channel_status();
                cs.channel = channel;
                cs.connected = true;
                subscriptions.Add(cs);
            }
            this._subscribe(args);
        }