Skip to content

Commit 81e5f0e

Browse files
committed
ReceivingReconnect
1 parent f655009 commit 81e5f0e

File tree

5 files changed

+35
-4
lines changed

5 files changed

+35
-4
lines changed

src/Api/PubnubApi/EndPoint/PubSub/SubscribeManager2.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,32 @@ internal void ReceiveRequestCancellation()
205205
}
206206
else
207207
{
208-
LoggingMethod.WriteToLog(pubnubLog, string.Format(CultureInfo.InvariantCulture, "DateTime {0} SubscribeManager => ReceiveRequestCancellation. No request to cancel.", DateTime.Now.ToString(CultureInfo.InvariantCulture)), config.LogVerbosity);
208+
LoggingMethod.WriteToLog(pubnubLog, string.Format(CultureInfo.InvariantCulture, "DateTime {0} SubscribeManager => RequestCancellation. No request to cancel.", DateTime.Now.ToString(CultureInfo.InvariantCulture)), config.LogVerbosity);
209+
}
210+
}
211+
212+
internal void ReceiveReconnectRequestCancellation()
213+
{
214+
if (httpSubscribe != null)
215+
{
216+
try
217+
{
218+
#if !NET35 && !NET40 && !NET45 && !NET461 && !NET48 && !NETSTANDARD10
219+
httpSubscribe.CancelPendingRequests();
220+
#else
221+
httpSubscribe.Abort();
222+
#endif
223+
httpSubscribe = null;
224+
LoggingMethod.WriteToLog(pubnubLog, string.Format(CultureInfo.InvariantCulture, "DateTime {0} SubscribeManager => ReceiveReconnectRequestCancellation. Done.", DateTime.Now.ToString(CultureInfo.InvariantCulture)), config.LogVerbosity);
225+
}
226+
catch(Exception ex)
227+
{
228+
LoggingMethod.WriteToLog(pubnubLog, string.Format(CultureInfo.InvariantCulture, "DateTime {0} SubscribeManager => ReceiveReconnectRequestCancellation Exception: {1}", DateTime.Now.ToString(CultureInfo.InvariantCulture), ex), config.LogVerbosity);
229+
}
230+
}
231+
else
232+
{
233+
LoggingMethod.WriteToLog(pubnubLog, string.Format(CultureInfo.InvariantCulture, "DateTime {0} SubscribeManager => ReceiveReconnectRequestCancellation. No request to cancel.", DateTime.Now.ToString(CultureInfo.InvariantCulture)), config.LogVerbosity);
209234
}
210235
}
211236

src/Api/PubnubApi/EndPoint/PubSub/SubscribeOperation2.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ private void ReceiveReconnectEffect_ReceiveRequested(object sender, ReceiveRecon
161161
}
162162
private void ReceiveReconnectEffect_CancelReceiveRequested(object sender, CancelReceiveReconnectRequestEventArgs e)
163163
{
164-
manager.ReceiveRequestCancellation();
164+
manager.ReceiveReconnectRequestCancellation();
165165
}
166166

167167
private void JsonCallback(string json, bool zeroTimeTokenRequest, int messageCount)

src/Api/PubnubApi/EventEngine/EventEngine.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,8 @@ public void Setup<T>(PNConfiguration config)
720720
receiveReconnectInvocation.Effectype = EventType.ReceiveReconnect;
721721

722722
EffectInvocation cancelReceiveReconnect = new CancelReceiveReconnect();
723-
cancelReceiveReconnect.Effectype = EventType.CancelReceiveMessages;
723+
cancelReceiveReconnect.Name = "CANCEL_RECEIVE_RECONNECT";
724+
cancelReceiveReconnect.Effectype = EventType.CancelReceiveReconnect;
724725
#endregion
725726
#region StateType.ReceiveReconnecting
726727
CreateState(StateType.ReceiveReconnecting)

src/Api/PubnubApi/EventEngine/ReceiveReconnectingEffectHandler.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ public void OnReceiveReconnectEffectResponseReceived(string json)
115115
{
116116
try
117117
{
118+
pnStatus = null;
118119
LogCallback?.Invoke($"OnReceiveReconnectEffectResponseReceived Json Response = {json}");
119120
var receivedResponse = JsonConvert.DeserializeObject<ReceiveingResponse<object>>(json);
120121
if (receivedResponse != null && receivedResponse.Timetoken != null)
@@ -249,6 +250,10 @@ public void Cancel()
249250
LogCallback?.Invoke($"ReceiveReconnectEffectHandler - cancellationTokenSource - cancellion attempted.");
250251
cancellationTokenSource.Cancel();
251252
}
253+
if (timer != null)
254+
{
255+
timer.Change(Timeout.Infinite, Timeout.Infinite);
256+
}
252257
LogCallback?.Invoke($"ReceiveReconnectEffectHandler - invoking OnCancelReceiveReconnectRequested.");
253258
CancelReceiveReconnectRequestEventArgs args = new CancelReceiveReconnectRequestEventArgs();
254259
OnCancelReceiveReconnectRequested(args);

src/Api/PubnubApi/EventEngine/ReceivingEffectHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Runtime.InteropServices;
32
using System.Threading;
43
using System.Threading.Tasks;
54
using Newtonsoft.Json;
@@ -119,6 +118,7 @@ public void OnReceivingEffectResponseReceived(string json)
119118
{
120119
try
121120
{
121+
pnStatus = null;
122122
var receivedResponse = JsonConvert.DeserializeObject<ReceiveingResponse<object>>(json);
123123
if (receivedResponse != null && receivedResponse.Timetoken != null)
124124
{

0 commit comments

Comments
 (0)