Skip to content

Commit

Permalink
fix: HttpRequest Cancellation through CancellationTokenSource
Browse files Browse the repository at this point in the history
  • Loading branch information
Mohit Tejani authored and Mohit Tejani committed Feb 24, 2025
1 parent 838738a commit c93c03f
Show file tree
Hide file tree
Showing 6 changed files with 313 additions and 230 deletions.
2 changes: 1 addition & 1 deletion src/Api/PubnubApi/EndPoint/Files/SendFileOperation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ private async Task<PNResult<PNFileUploadResult>> ProcessFileUpload()
RequestType = Constants.POST,
RequestUrl = generateFileUploadUrlResult.FileUploadRequest.Url,
BodyContentBytes = postData,
CancellationToken = cts.Token
CancellationTokenSource = cts
};
transportRequest.Headers.Add("Content-Type", contentType);
Tuple<string, PNStatus> jsonAndStatusTuple;
Expand Down
3 changes: 2 additions & 1 deletion src/Api/PubnubApi/EndPoint/PubSub/SubscribeManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,8 @@ private void MultiChannelSubscribeRequest<T>(PNOperationType type, string[] chan
};
var subscribeRequestParameter = CreateSubscribeRequestParameter(channels: channels, channelGroups: channelGroups,timetoken: (Convert.ToInt64(timetoken.ToString(), CultureInfo.InvariantCulture) == 0) ? Convert.ToInt64(timetoken.ToString(), CultureInfo.InvariantCulture) : lastTimetoken,region: region,stateJsonValue: channelsJsonState, initialSubscribeUrlParams: initialSubscribeUrlParams, externalQueryParam: externalQueryParam);
var transportRequest = PubnubInstance.transportMiddleware.PreapareTransportRequest(requestParameter: subscribeRequestParameter, operationType: PNOperationType.PNSubscribeOperation);
OngoingSubscriptionCancellationTokenSources[PubnubInstance.InstanceId] = CancellationTokenSource.CreateLinkedTokenSource(transportRequest.CancellationToken);
OngoingSubscriptionCancellationTokenSources[PubnubInstance.InstanceId] =
transportRequest.CancellationTokenSource;
PubnubInstance.transportMiddleware.Send(transportRequest: transportRequest).ContinueWith( t => {
var transportResponse = t.Result;
if (transportResponse.Error == null) {
Expand Down
4 changes: 2 additions & 2 deletions src/Api/PubnubApi/EndPoint/PubSub/SubscribeManager2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public async Task<Tuple<HandshakeResponse, PNStatus>> HandshakeRequest(PNOperati
if (config.MaintainPresenceState) presenceState = BuildJsonUserState(channels, channelGroups, true);
var requestParameter = CreateSubscribeRequestParameter(channels: channels, channelGroups: channelGroups, timetoken: timetoken.GetValueOrDefault(), region: region.GetValueOrDefault(), stateJsonValue: presenceState, initialSubscribeUrlParams: initialSubscribeUrlParams, externalQueryParam: externalQueryParam);
var transportRequest = pubnubInstance.transportMiddleware.PreapareTransportRequest(requestParameter: requestParameter, operationType: PNOperationType.PNSubscribeOperation);
cancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(transportRequest.CancellationToken);
cancellationTokenSource = transportRequest.CancellationTokenSource;
RequestState<HandshakeResponse> pubnubRequestState = new RequestState<HandshakeResponse>
{
Channels = channels,
Expand Down Expand Up @@ -85,7 +85,7 @@ internal async Task<Tuple<ReceivingResponse<object>, PNStatus>> ReceiveRequest<T
string channelsJsonState = BuildJsonUserState(channels, channelGroups, false);
var requestParameter = CreateSubscribeRequestParameter(channels: channels, channelGroups: channelGroups, timetoken: timetoken.GetValueOrDefault(), region: region.GetValueOrDefault(), stateJsonValue: channelsJsonState, initialSubscribeUrlParams: initialSubscribeUrlParams, externalQueryParam: externalQueryParam);
var transportRequest = pubnubInstance.transportMiddleware.PreapareTransportRequest(requestParameter: requestParameter, operationType: PNOperationType.PNSubscribeOperation);
cancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(transportRequest.CancellationToken);
cancellationTokenSource = transportRequest.CancellationTokenSource;
RequestState<ReceivingResponse<object>> pubnubRequestState = new RequestState<ReceivingResponse<object>>
{
Channels = channels,
Expand Down
Loading

0 comments on commit c93c03f

Please sign in to comment.