private void Subscribe(string[] channels, string[] channelGroups) { if ((channels == null || channels.Length == 0) && (channelGroups == null || channelGroups.Length == 0)) { throw new ArgumentException("Either Channel Or Channel Group or Both should be provided."); } string channel = (channels != null) ? string.Join(",", channels.OrderBy(x => x).ToArray()) : ""; string channelGroup = (channelGroups != null) ? string.Join(",", channelGroups.OrderBy(x => x).ToArray()) : ""; PNPlatform.Print(config, pubnubLog); LoggingMethod.WriteToLog(pubnubLog, string.Format("DateTime {0}, requested subscribe for channel(s)={1} and channel group(s)={2}", DateTime.Now.ToString(CultureInfo.InvariantCulture), channel, channelGroup), config.LogVerbosity); string[] arrayChannel = new string[] { }; string[] arrayChannelGroup = new string[] { }; if (!string.IsNullOrEmpty(channel) && channel.Trim().Length > 0) { arrayChannel = channel.Trim().Split(','); } if (!string.IsNullOrEmpty(channelGroup) && channelGroup.Trim().Length > 0) { arrayChannelGroup = channelGroup.Trim().Split(','); } Dictionary <string, string> initialSubscribeUrlParams = new Dictionary <string, string>(); if (this.subscribeTimetoken >= 0) { initialSubscribeUrlParams.Add("tt", this.subscribeTimetoken.ToString()); } if (!string.IsNullOrEmpty(config.FilterExpression) && config.FilterExpression.Trim().Length > 0) { initialSubscribeUrlParams.Add("filter-expr", new UriUtil().EncodeUriComponent(config.FilterExpression, PNOperationType.PNSubscribeOperation, false, false, false)); } Task.Factory.StartNew(() => { manager = new SubscribeManager(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr); manager.CurrentPubnubInstance(PubnubInstance); manager.MultiChannelSubscribeInit <T>(PNOperationType.PNSubscribeOperation, channels, channelGroups, initialSubscribeUrlParams); }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default); }
private void Subscribe(string[] channels, string[] channelGroups, Dictionary <string, object> externalQueryParam) { if ((channels == null || channels.Length == 0) && (channelGroups == null || channelGroups.Length == 0)) { throw new ArgumentException("Either Channel Or Channel Group or Both should be provided."); } string channel = (channels != null) ? string.Join(",", channels.OrderBy(x => x).ToArray()) : ""; string channelGroup = (channelGroups != null) ? string.Join(",", channelGroups.OrderBy(x => x).ToArray()) : ""; PNPlatform.Print(config, pubnubLog); LoggingMethod.WriteToLog(pubnubLog, string.Format("DateTime {0}, requested subscribe for channel(s)={1} and channel group(s)={2}", DateTime.Now.ToString(CultureInfo.InvariantCulture), channel, channelGroup), config.LogVerbosity); Dictionary <string, string> initialSubscribeUrlParams = new Dictionary <string, string>(); if (this.subscribeTimetoken >= 0) { initialSubscribeUrlParams.Add("tt", this.subscribeTimetoken.ToString()); } if (!string.IsNullOrEmpty(config.FilterExpression) && config.FilterExpression.Trim().Length > 0) { initialSubscribeUrlParams.Add("filter-expr", UriUtil.EncodeUriComponent(false, config.FilterExpression, PNOperationType.PNSubscribeOperation, false, false, false)); } #if NETFX_CORE || WINDOWS_UWP || UAP || NETSTANDARD Task.Factory.StartNew(() => { manager = new SubscribeManager(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, PubnubInstance); manager.CurrentPubnubInstance(PubnubInstance); manager.MultiChannelSubscribeInit <T>(PNOperationType.PNSubscribeOperation, channels, channelGroups, initialSubscribeUrlParams, externalQueryParam); }, CancellationToken.None, TaskCreationOptions.PreferFairness, TaskScheduler.Default).ConfigureAwait(false); #else new Thread(() => { manager = new SubscribeManager(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, PubnubInstance); manager.CurrentPubnubInstance(PubnubInstance); manager.MultiChannelSubscribeInit <T>(PNOperationType.PNSubscribeOperation, channels, channelGroups, initialSubscribeUrlParams, externalQueryParam); }) { IsBackground = true }.Start(); #endif }