private void HandleSubscribeEvent(EventData eventData) { var channelsInResponse = (string[])eventData.Parameters[ChatParameterCode.Channels]; var results = (bool[])eventData.Parameters[ChatParameterCode.SubscribeResults]; for (int i = 0; i < channelsInResponse.Length; i++) { if (results[i]) { string channelName = channelsInResponse[i]; if (!this.PublicChannels.ContainsKey(channelName)) { ChatChannel channel = new ChatChannel(channelName); this.PublicChannels.Add(channel.Name, channel); } } } this.listener.OnSubscribed(channelsInResponse, results); }
/// <summary> /// Simplified access to all channels by name. Checks public channels first, then private ones. /// </summary> /// <param name="channelName">Name of the channel to get.</param> /// <param name="channel">Out parameter gives you the found channel, if any.</param> /// <returns>True if the channel was found.</returns> public bool TryGetChannel(string channelName, out ChatChannel channel) { bool found = false; found = this.PublicChannels.TryGetValue(channelName, out channel); if (found) return true; found = this.PrivateChannels.TryGetValue(channelName, out channel); return found; }
private void HandlePrivateMessageEvent(EventData eventData) { //Console.WriteLine(SupportClass.DictionaryToString(eventData.Parameters)); var message = (object)eventData.Parameters[(byte)ChatParameterCode.Message]; var sender = (string)eventData.Parameters[(byte)ChatParameterCode.Sender]; string channelName; if (this.UserId != null && this.UserId.Equals(sender)) { var target = (string)eventData.Parameters[(byte)ChatParameterCode.UserId]; channelName = this.GetPrivateChannelNameByUser(target); } else { channelName = this.GetPrivateChannelNameByUser(sender); } ChatChannel channel; if (!this.PrivateChannels.TryGetValue(channelName, out channel)) { channel = new ChatChannel(channelName); channel.IsPrivate = true; this.PrivateChannels.Add(channel.Name, channel); } channel.Add(sender, message); this.listener.OnPrivateMessage(sender, message, channelName); }
/// <summary> /// Simplified access to either private or public channels by name. /// </summary> /// <param name="channelName">Name of the channel to get. For private channels, the channel-name is composed of both user's names.</param> /// <param name="isPrivate">Define if you expect a private or public channel.</param> /// <param name="channel">Out parameter gives you the found channel, if any.</param> /// <returns>True if the channel was found.</returns> public bool TryGetChannel(string channelName, bool isPrivate, out ChatChannel channel) { if (!isPrivate) { return this.PublicChannels.TryGetValue(channelName, out channel); } else { return this.PrivateChannels.TryGetValue(channelName, out channel); } }