/** * 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); }
/** * 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); }