internal void CurrentPubnubInstance(Pubnub instance) { PubnubInstance = instance; if (!MultiChannelSubscribe.ContainsKey(instance.InstanceId)) { MultiChannelSubscribe.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, long>()); } if (!MultiChannelGroupSubscribe.ContainsKey(instance.InstanceId)) { MultiChannelGroupSubscribe.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, long>()); } if (!ChannelRequest.ContainsKey(instance.InstanceId)) { ChannelRequest.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, HttpWebRequest>()); } if (!ChannelInternetStatus.ContainsKey(instance.InstanceId)) { ChannelInternetStatus.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, bool>()); } if (!ChannelGroupInternetStatus.ContainsKey(instance.InstanceId)) { ChannelGroupInternetStatus.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, bool>()); } if (!ChannelLocalUserState.ContainsKey(instance.InstanceId)) { ChannelLocalUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelGroupLocalUserState.ContainsKey(instance.InstanceId)) { ChannelGroupLocalUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelUserState.ContainsKey(instance.InstanceId)) { ChannelUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelGroupUserState.ContainsKey(instance.InstanceId)) { ChannelGroupUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelReconnectTimer.ContainsKey(instance.InstanceId)) { ChannelReconnectTimer.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Timer>()); } if (!ChannelGroupReconnectTimer.ContainsKey(instance.InstanceId)) { ChannelGroupReconnectTimer.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Timer>()); } if (!SubscribeDisconnected.ContainsKey(instance.InstanceId)) { SubscribeDisconnected.GetOrAdd(instance.InstanceId, false); } if (!LastSubscribeTimetoken.ContainsKey(instance.InstanceId)) { LastSubscribeTimetoken.GetOrAdd(instance.InstanceId, 0); } if (!SubscribeRequestTracker.ContainsKey(instance.InstanceId)) { SubscribeRequestTracker.GetOrAdd(instance.InstanceId, DateTime.Now); } }
internal void CurrentPubnubInstance(Pubnub instance) { PubnubInstance = instance; if (!ChannelRequest.ContainsKey(instance.InstanceId)) { ChannelRequest.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, HttpWebRequest>()); } if (!ChannelInternetStatus.ContainsKey(instance.InstanceId)) { ChannelInternetStatus.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, bool>()); } if (!ChannelGroupInternetStatus.ContainsKey(instance.InstanceId)) { ChannelGroupInternetStatus.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, bool>()); } if (!ChannelUserState.ContainsKey(instance.InstanceId)) { ChannelUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelGroupUserState.ContainsKey(instance.InstanceId)) { ChannelGroupUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelLocalUserState.ContainsKey(instance.InstanceId)) { ChannelLocalUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelGroupLocalUserState.ContainsKey(instance.InstanceId)) { ChannelGroupLocalUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } }
public SetStateOperation(PNConfiguration pubnubConfig, IJsonPluggableLibrary jsonPluggableLibrary, IPubnubUnitTest pubnubUnit, IPubnubLog log, EndPoint.TelemetryManager telemetryManager, Pubnub instance) : base(pubnubConfig, jsonPluggableLibrary, pubnubUnit, log, telemetryManager, instance) { config = pubnubConfig; jsonLibrary = jsonPluggableLibrary; unit = pubnubUnit; pubnubLog = log; pubnubTelemetryMgr = telemetryManager; PubnubInstance = instance; if (!ChannelRequest.ContainsKey(instance.InstanceId)) { ChannelRequest.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, HttpWebRequest>()); } if (!ChannelInternetStatus.ContainsKey(instance.InstanceId)) { ChannelInternetStatus.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, bool>()); } if (!ChannelGroupInternetStatus.ContainsKey(instance.InstanceId)) { ChannelGroupInternetStatus.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, bool>()); } if (!ChannelUserState.ContainsKey(instance.InstanceId)) { ChannelUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelGroupUserState.ContainsKey(instance.InstanceId)) { ChannelGroupUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelLocalUserState.ContainsKey(instance.InstanceId)) { ChannelLocalUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } if (!ChannelGroupLocalUserState.ContainsKey(instance.InstanceId)) { ChannelGroupLocalUserState.GetOrAdd(instance.InstanceId, new ConcurrentDictionary <string, Dictionary <string, object> >()); } }
private string AddOrUpdateOrDeleteLocalUserState(string channel, string channelGroup, string userStateKey, object userStateValue) { string retJsonUserState = ""; Dictionary <string, object> channelUserStateDictionary = null; Dictionary <string, object> channelGroupUserStateDictionary = null; if (!string.IsNullOrEmpty(channel) && channel.Trim().Length > 0) { if (ChannelLocalUserState.ContainsKey(channel)) { channelUserStateDictionary = ChannelLocalUserState[channel]; if (channelUserStateDictionary != null) { if (channelUserStateDictionary.ContainsKey(userStateKey)) { if (userStateValue != null) { channelUserStateDictionary[userStateKey] = userStateValue; } else { channelUserStateDictionary.Remove(userStateKey); } } else { if (!string.IsNullOrEmpty(userStateKey) && userStateKey.Trim().Length > 0 && userStateValue != null) { channelUserStateDictionary.Add(userStateKey, userStateValue); } } } else { channelUserStateDictionary = new Dictionary <string, object>(); channelUserStateDictionary.Add(userStateKey, userStateValue); } ChannelLocalUserState.AddOrUpdate(channel, channelUserStateDictionary, (oldData, newData) => channelUserStateDictionary); } else { if (!string.IsNullOrEmpty(userStateKey) && userStateKey.Trim().Length > 0 && userStateValue != null) { channelUserStateDictionary = new Dictionary <string, object>(); channelUserStateDictionary.Add(userStateKey, userStateValue); ChannelLocalUserState.AddOrUpdate(channel, channelUserStateDictionary, (oldData, newData) => channelUserStateDictionary); } } } // if (!string.IsNullOrEmpty(channelGroup) && channelGroup.Trim().Length > 0) { if (ChannelGroupLocalUserState.ContainsKey(channelGroup)) { channelGroupUserStateDictionary = ChannelGroupLocalUserState[channelGroup]; if (channelGroupUserStateDictionary != null) { if (channelGroupUserStateDictionary.ContainsKey(userStateKey)) { if (userStateValue != null) { channelGroupUserStateDictionary[userStateKey] = userStateValue; } else { channelGroupUserStateDictionary.Remove(userStateKey); } } else { if (!string.IsNullOrEmpty(userStateKey) && userStateKey.Trim().Length > 0 && userStateValue != null) { channelGroupUserStateDictionary.Add(userStateKey, userStateValue); } } } else { channelGroupUserStateDictionary = new Dictionary <string, object>(); channelGroupUserStateDictionary.Add(userStateKey, userStateValue); } ChannelGroupLocalUserState.AddOrUpdate(channelGroup, channelGroupUserStateDictionary, (oldData, newData) => channelGroupUserStateDictionary); } else { if (!string.IsNullOrEmpty(userStateKey) && userStateKey.Trim().Length > 0 && userStateValue != null) { channelGroupUserStateDictionary = new Dictionary <string, object>(); channelGroupUserStateDictionary.Add(userStateKey, userStateValue); ChannelGroupLocalUserState.AddOrUpdate(channelGroup, channelGroupUserStateDictionary, (oldData, newData) => channelGroupUserStateDictionary); } } } string jsonChannelUserState = BuildJsonUserState(channel, "", true); string jsonChannelGroupUserState = BuildJsonUserState("", channelGroup, true); if (jsonChannelUserState != "" && jsonChannelGroupUserState != "") { retJsonUserState = string.Format("{{\"{0}\":{{{1}}},\"{2}\":{{{3}}}}}", channel, jsonChannelUserState, channelGroup, jsonChannelGroupUserState); } else if (jsonChannelUserState != "") { retJsonUserState = string.Format("{{{0}}}", jsonChannelUserState); } else if (jsonChannelGroupUserState != "") { retJsonUserState = string.Format("{{{0}}}", jsonChannelGroupUserState); } return(retJsonUserState); }