protected override void RunWebRequest(QueueManager qm) { RequestState requestState = new RequestState(); requestState.OperationType = base.OperationType; #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog(string.Format("FetchMessagesRequestBuilder: \nChannel {0} \nStartTime: {1} \nthis.EndTime:{2} \nthis.HistoryCount:{3} \nthis.ReverseHistory:{4}", string.Join(",", this.ChannelsToUse.ToArray()), this.StartTime, this.EndTime, this.HistoryCount, this.ReverseHistory), PNLoggingMethod.LevelInfo); #endif if (IncludeMessageActionsInHistory || ChannelsToUse.Count > 1) { this.HistoryCount = 25; } Uri request = BuildRequests.BuildFetchRequest( ChannelsToUse.ToArray(), this.StartTime, this.EndTime, this.HistoryCount, this.ReverseHistory, this.IncludeTimetokenInHistory, this.PubNubInstance, this.QueryParams, this.IncludeMetaInHistory, this.IncludeMessageActionsInHistory, this.IncludeMessageTypeInHistory, this.IncludeUUIDInHistory ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); }
protected override void RunWebRequest(QueueManager qm) { RequestState requestState = new RequestState(); requestState.OperationType = OperationType; Uri request; if (PushType.Equals(PNPushType.APNS2)) { request = BuildRequests.BuildRegisterDevicePushRequest( string.Join(",", ChannelsToUse.ToArray()), PushType, DeviceIDForPush, this.PubNubInstance, this.QueryParams, TopicForPush, EnvironmentForPush ); } else { request = BuildRequests.BuildRegisterDevicePushRequest( string.Join(",", ChannelsToUse.ToArray()), PushType, DeviceIDForPush, this.PubNubInstance, this.QueryParams ); } base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); }
protected override void RunWebRequest(QueueManager qm) { RequestState requestState = new RequestState(); requestState.OperationType = PNOperationType.PNWhereNowOperation; string channels = ""; if ((ChannelsToUse != null) && (ChannelsToUse.Count > 0)) { channels = String.Join(",", ChannelsToUse.ToArray()); } string channelGroups = ""; if ((ChannelGroupsToUse != null) && (ChannelGroupsToUse.Count > 0)) { channelGroups = String.Join(",", ChannelGroupsToUse.ToArray()); } if (string.IsNullOrEmpty(uuid)) { uuid = this.PubNubInstance.PNConfig.UUID; } Uri request = BuildRequests.BuildSetStateRequest( channels, channelGroups, Helpers.BuildJsonUserState(ChannelEntities), uuid, this.PubNubInstance, this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); }
protected override void RunWebRequest(QueueManager qm) { RequestState requestState = new RequestState(); requestState.OperationType = OperationType; string channels = ""; if ((ChannelsToUse != null) && (ChannelsToUse.Count > 0)) { channels = String.Join(",", ChannelsToUse.ToArray()); } string channelGroups = ""; if ((ChannelGroupsToUse != null) && (ChannelGroupsToUse.Count > 0)) { channelGroups = String.Join(",", ChannelGroupsToUse.ToArray()); } Uri request = BuildRequests.BuildHereNowRequest( channels, channelGroups, IncludeUUIDsInHereNow, IncludeStateInHereNow, this.PubNubInstance, this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); }
public void Async(Action <PNPresenceHeartbeatResult, PNStatus> callback) { this.Callback = callback; RequestState requestState = new RequestState(); requestState.OperationType = OperationType; List <ChannelEntity> channelEntities = new List <ChannelEntity>(); string channels = ""; if ((ChannelsToUse != null) && (ChannelsToUse.Count > 0)) { ChannelsToUse.RemoveAll(t => t.Contains(Utility.PresenceChannelSuffix)); string[] chArr = ChannelsToUse.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToArray(); channels = String.Join(",", chArr); channelEntities.AddRange(Helpers.CreateChannelEntity(chArr, false, false, null, PubNubInstance.PNLog)); } string channelGroups = ""; if ((ChannelGroupsToUse != null) && (ChannelGroupsToUse.Count > 0)) { ChannelGroupsToUse.RemoveAll(t => t.Contains(Utility.PresenceChannelSuffix)); string[] cgArr = ChannelGroupsToUse.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToArray(); channelGroups = String.Join(",", cgArr); channelEntities.AddRange(Helpers.CreateChannelEntity(cgArr, false, true, null, PubNubInstance.PNLog)); } if (connected) { PubNubInstance.SubWorker.PHBWorker.RunIndependentOfSubscribe = true; PubNubInstance.SubWorker.PHBWorker.ChannelGroups = channelGroups; PubNubInstance.SubWorker.PHBWorker.Channels = channels; if (UserState != null) { PubNubInstance.SubWorker.PHBWorker.State = Helpers.BuildJsonUserState(channelEntities); } else { PubNubInstance.SubWorker.PHBWorker.State = ""; } PubNubInstance.SubWorker.PHBWorker.StopPresenceHeartbeat(); PubNubInstance.SubWorker.PHBWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval); } else { PubNubInstance.SubWorker.PHBWorker.RunIndependentOfSubscribe = false; PubNubInstance.SubWorker.PHBWorker.ChannelGroups = channelGroups; PubNubInstance.SubWorker.PHBWorker.Channels = channels; PubNubInstance.SubWorker.PHBWorker.StopPresenceHeartbeat(); PubNubInstance.SubWorker.PHBWorker.RunPresenceHeartbeat(false, PubNubInstance.PNConfig.PresenceInterval); } }
protected override void RunWebRequest(QueueManager qm) { RequestState requestState = new RequestState(); requestState.OperationType = OperationType; Uri request = BuildRequests.BuildRemoveChannelPushRequest( string.Join(",", ChannelsToUse.ToArray()), PushType, DeviceIDForPush, this.PubNubInstance ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); }
protected override void RunWebRequest(QueueManager qm) { RequestState requestState = new RequestState(); requestState.OperationType = base.OperationType; Uri request = BuildRequests.BuildRemoveChannelsFromChannelGroupRequest( ChannelsToUse.ToArray(), "", ChannelGroupToDelete, this.PubNubInstance ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); }
protected override void RunWebRequest(QueueManager qm) { RequestState requestState = new RequestState(); requestState.OperationType = base.OperationType; Uri request = BuildRequests.BuildAddChannelsToChannelGroupRequest( ChannelsToUse.ToArray(), "", ChannelGroupToAdd, this.PubNubInstance ); #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog(string.Format("RunPNChannelGroupsAddChannel {0}", request.OriginalString), PNLoggingMethod.LevelInfo); #endif base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); }
protected override void RunWebRequest(QueueManager qm) { RequestState requestState = new RequestState(); requestState.OperationType = base.OperationType; string TimetokenToUseString = ""; string ChannelsTimetokenToUseString = ""; if ((ChannelTimetokensToUse != null) && (ChannelTimetokensToUse.Count == 1)) { TimetokenToUseString = ChannelTimetokensToUse[0].ToString(); ChannelsTimetokenToUseString = ""; } else if (ChannelTimetokensToUse != null) { TimetokenToUseString = ""; ChannelsTimetokenToUseString = String.Join(",", ChannelTimetokensToUse.Select(p => p.ToString()).ToArray()); } else { // TODO: Remove in next major version bump TimetokenToUseString = TimetokenToUse; ChannelsTimetokenToUseString = ""; } #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog(string.Format("MessageCountsRequestBuilder: \nChannel {0} \nChannelTimetokens: {1} \nTimetokenToUse:{2}", string.Join(",", this.ChannelsToUse.ToArray()), ChannelsTimetokenToUseString, ChannelsTimetokenToUseString), PNLoggingMethod.LevelInfo); #endif Uri request = BuildRequests.BuildMessageCountsRequest( ChannelsToUse.ToArray(), ChannelsTimetokenToUseString, TimetokenToUseString, this.PubNubInstance, this.QueryParams ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); }
protected override void RunWebRequest(QueueManager qm) { RequestState requestState = new RequestState(); requestState.OperationType = OperationType; string channels = ""; if (ChannelsToUse != null) { channels = string.Join(",", ChannelsToUse.ToArray()); } string channelGroups = ""; if (ChannelGroupsToUse != null) { channelGroups = string.Join(",", ChannelGroupsToUse.ToArray()); } if (string.IsNullOrEmpty(channels) && (string.IsNullOrEmpty(channelGroups))) { #if (ENABLE_PUBNUB_LOGGING) this.PubNubInstance.PNLog.WriteToLog(string.Format("Both ChannelGroupsToLeave and ChannelsToLeave are empty, running unsubscribe all"), PNLoggingMethod.LevelInfo); #endif channelGroups = Helpers.GetNamesFromChannelEntities(this.PubNubInstance.SubscriptionInstance.AllChannelGroups, true); channels = Helpers.GetNamesFromChannelEntities(this.PubNubInstance.SubscriptionInstance.AllChannels, false); ChannelsToUse = Helpers.CreateListOfStringFromListOfChannelEntity(this.PubNubInstance.SubscriptionInstance.AllChannels); ChannelGroupsToUse = Helpers.CreateListOfStringFromListOfChannelEntity(this.PubNubInstance.SubscriptionInstance.AllChannelGroups); } List <ChannelEntity> subscribedChannels = this.PubNubInstance.SubscriptionInstance.AllSubscribedChannelsAndChannelGroups; List <ChannelEntity> newChannelEntities; this.PubNubInstance.SubscriptionInstance.TryRemoveDuplicatesCheckAlreadySubscribedAndGetChannels( OperationType, ChannelsToUse, ChannelGroupsToUse, true, out newChannelEntities ); //Retrieve the current channels already subscribed previously and terminate them this.PubNubInstance.SubWorker.AbortPreviousRequest(subscribedChannels); if (!this.PubNubInstance.PNConfig.SuppressLeaveEvents) { Uri request = BuildRequests.BuildLeaveRequest( channels, channelGroups, this.PubNubInstance ); base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this); } RemoveUnsubscribedChannelsAndDeleteUserState(newChannelEntities); //Get all the channels this.PubNubInstance.SubWorker.ContinueToSubscribeRestOfChannels(); }
public void Async(Action <PNMessageCountsResult, PNStatus> callback) { this.Callback = callback; if ((this.ChannelsToUse == null) || ((this.ChannelsToUse != null) && (this.ChannelsToUse.Count <= 0))) { PNStatus pnStatus = base.CreateErrorResponseFromMessage("Channel is null or empty", null, PNStatusCategory.PNBadRequestCategory); Callback(null, pnStatus); return; } if (((this.ChannelTimetokensToUse == null) || ((this.ChannelTimetokensToUse != null) && (this.ChannelTimetokensToUse.Count <= 0))) && (string.IsNullOrEmpty(TimetokenToUse))) { PNStatus pnStatus = base.CreateErrorResponseFromMessage("Channel Timetoken is null or empty", null, PNStatusCategory.PNBadRequestCategory); Callback(null, pnStatus); return; } if ((ChannelTimetokensToUse.Count > 1) && (ChannelTimetokensToUse.Count() != ChannelsToUse.Count())) { PNStatus pnStatus = base.CreateErrorResponseFromMessage("Length of Channels Timetoken and Channels do not match", null, PNStatusCategory.PNBadRequestCategory); Callback(null, pnStatus); return; } base.Async(this); }