Skip to content

Commit 189b2c4

Browse files
committed
CancelReceive and CancelHandshakeReconnect
1 parent 58a295e commit 189b2c4

File tree

4 files changed

+53
-11
lines changed

4 files changed

+53
-11
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public SubscribeOperation2(PNConfiguration pubnubConfig, IJsonPluggableLibrary j
5858
handshakeReconnectEffectHandler.MaxRetries = config.ConnectionMaxRetries;
5959
handshakeReconnectEffectHandler.LogCallback = LogCallback;
6060
handshakeReconnectEffectHandler.HandshakeReconnectRequested += HandshakeReconnectEffect_HandshakeRequested;
61+
handshakeReconnectEffectHandler.CancelHandshakeReconnectRequested += HandshakeReconnectEffect_CancelHandshakeRequested;
6162
handshakeReconnectEffectHandler.AnnounceStatus = Announce;
6263

6364
var handshakeFailedEffectHandler = new HandshakeFailedEffectHandler(eventEmitter);
@@ -67,6 +68,7 @@ public SubscribeOperation2(PNConfiguration pubnubConfig, IJsonPluggableLibrary j
6768
receivingEffectHandler.ReconnectionPolicy = config.ReconnectionPolicy;
6869
receivingEffectHandler.LogCallback = LogCallback;
6970
receivingEffectHandler.ReceiveRequested += ReceivingEffect_ReceiveRequested;
71+
receivingEffectHandler.CancelReceiveRequested += ReceivingEffect_CancelReceiveRequested;
7072
receivingEffectHandler.AnnounceStatus = Announce;
7173
receivingEffectHandler.AnnounceMessage = Announce;
7274

@@ -129,6 +131,14 @@ private void HandshakeEffect_CancelHandshakeRequested(object sender, CancelHands
129131
{
130132
manager.HandshakeRequestCancellation();
131133
}
134+
private void HandshakeReconnectEffect_CancelHandshakeRequested(object sender, CancelHandshakeReconnectRequestEventArgs e)
135+
{
136+
manager.HandshakeRequestCancellation();
137+
}
138+
private void ReceivingEffect_CancelReceiveRequested(object sender, CancelReceiveRequestEventArgs e)
139+
{
140+
manager.ReceiveRequestCancellation();
141+
}
132142

133143
private void JsonCallback(string json, bool zeroTimeTokenRequest, int messageCount)
134144
{

src/Api/PubnubApi/EventEngine/HandshakeEffectHandler.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ public class HandshakeEffectHandler : IEffectInvocationHandler
5050
public Action<PNStatus> AnnounceStatus { get; set; }
5151
private PNStatus pnStatus { get; set; }
5252

53-
public event EventHandler<HandshakeRequestEventArgs>? HandshakeRequested;
54-
public event EventHandler<CancelHandshakeRequestEventArgs>? CancelHandshakeRequested;
53+
public event EventHandler<HandshakeRequestEventArgs> HandshakeRequested;
54+
public event EventHandler<CancelHandshakeRequestEventArgs> CancelHandshakeRequested;
5555
protected virtual void OnHandshakeRequested(HandshakeRequestEventArgs e)
5656
{
5757
EventHandler<HandshakeRequestEventArgs> handler = HandshakeRequested;
@@ -165,7 +165,6 @@ public void Cancel()
165165
LogCallback?.Invoke($"HandshakeEffectHandler - invoking OnCancelHandshakeRequested.");
166166
CancelHandshakeRequestEventArgs args = new CancelHandshakeRequestEventArgs();
167167
OnCancelHandshakeRequested(args);
168-
169168
}
170169
public void Run(ExtendedState context)
171170
{

src/Api/PubnubApi/EventEngine/HandshakeReconnectEffectHandler.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@ public class HandshakeReconnectRequestEventArgs : EventArgs
1616
public ExtendedState ExtendedState { get; set; }
1717
public Action<string> HandshakeReconnectResponseCallback { get; set; }
1818
}
19+
public class CancelHandshakeReconnectRequestEventArgs : EventArgs
20+
{
21+
}
1922
public class HandshakeReconnectEffectHandler : IEffectInvocationHandler
2023
{
2124
EventEmitter emitter;
22-
//public EffectInvocationType InvocationType { get; set; }
2325
private ExtendedState extendedState { get; set;}
2426
public Action<string> LogCallback { get; set; }
2527
public Action<PNStatus> AnnounceStatus { get; set; }
@@ -31,18 +33,27 @@ public class HandshakeReconnectEffectHandler : IEffectInvocationHandler
3133
const int MAXEXPONENTIALBACKOFF = 25;
3234
const int INTERVAL = 3;
3335

34-
public event EventHandler<HandshakeReconnectRequestEventArgs>? HandshakeReconnectRequested;
36+
public event EventHandler<HandshakeReconnectRequestEventArgs> HandshakeReconnectRequested;
37+
public event EventHandler<CancelHandshakeReconnectRequestEventArgs> CancelHandshakeReconnectRequested;
3538
System.Threading.Timer timer;
3639
protected virtual void OnHandshakeReconnectRequested(HandshakeReconnectRequestEventArgs e)
3740
{
38-
EventHandler<HandshakeReconnectRequestEventArgs>? handler = HandshakeReconnectRequested;
41+
EventHandler<HandshakeReconnectRequestEventArgs> handler = HandshakeReconnectRequested;
42+
if (handler != null)
43+
{
44+
handler(this, e);
45+
}
46+
}
47+
protected virtual void OnCancelHandshakeReconnectRequested(CancelHandshakeReconnectRequestEventArgs e)
48+
{
49+
EventHandler<CancelHandshakeReconnectRequestEventArgs> handler = CancelHandshakeReconnectRequested;
3950
if (handler != null)
4051
{
4152
handler(this, e);
4253
}
4354
}
4455

45-
CancellationTokenSource? cancellationTokenSource;
56+
CancellationTokenSource cancellationTokenSource;
4657
public HandshakeReconnectEffectHandler(EventEmitter emitter)
4758
{
4859
this.emitter = emitter;
@@ -242,6 +253,9 @@ public void Cancel()
242253
LogCallback?.Invoke($"HandshakeReconnectEffectHandler - cancellationTokenSource - cancellion attempted.");
243254
cancellationTokenSource.Cancel();
244255
}
256+
LogCallback?.Invoke($"HandshakeReconnectEffectHandler - invoking OnCancelHandshakeReconnectRequested.");
257+
CancelHandshakeReconnectRequestEventArgs args = new CancelHandshakeReconnectRequestEventArgs();
258+
OnCancelHandshakeReconnectRequested(args);
245259
}
246260
public void Run(ExtendedState context)
247261
{

src/Api/PubnubApi/EventEngine/ReceivingEffectHandler.cs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace PubnubApi.PubnubEventEngine
99
public class ReceiveingResponse<T>
1010
{
1111
[JsonProperty("t")]
12-
public Timetoken? Timetoken { get; set; }
12+
public Timetoken Timetoken { get; set; }
1313

1414
[JsonProperty("m")]
1515
public Message<T>[] Messages { get; set; }
@@ -45,6 +45,12 @@ public class ReceiveRequestEventArgs : EventArgs
4545
public ExtendedState ExtendedState { get; set; }
4646
public Action<string> ReceiveResponseCallback { get; set; }
4747
}
48+
49+
public class CancelReceiveRequestEventArgs : EventArgs
50+
{
51+
52+
}
53+
4854
public class ReceivingEffectHandler<T> : IEffectInvocationHandler, IReceiveMessageHandler<T>
4955
{
5056
EventEmitter emitter;
@@ -56,17 +62,27 @@ public class ReceivingEffectHandler<T> : IEffectInvocationHandler, IReceiveMessa
5662
public Action<PNMessageResult<object>> AnnounceMessage { get; set; }
5763
public PNReconnectionPolicy ReconnectionPolicy { get; set; }
5864

59-
public event EventHandler<ReceiveRequestEventArgs>? ReceiveRequested;
65+
public event EventHandler<ReceiveRequestEventArgs> ReceiveRequested;
66+
public event EventHandler<CancelReceiveRequestEventArgs> CancelReceiveRequested;
6067
protected virtual void OnReceiveRequested(ReceiveRequestEventArgs e)
6168
{
62-
EventHandler<ReceiveRequestEventArgs>? handler = ReceiveRequested;
69+
EventHandler<ReceiveRequestEventArgs> handler = ReceiveRequested;
70+
if (handler != null)
71+
{
72+
handler(this, e);
73+
}
74+
}
75+
76+
protected virtual void OnCancelReceiveRequested(CancelReceiveRequestEventArgs e)
77+
{
78+
EventHandler<CancelReceiveRequestEventArgs> handler = CancelReceiveRequested;
6379
if (handler != null)
6480
{
6581
handler(this, e);
6682
}
6783
}
6884

69-
CancellationTokenSource? cancellationTokenSource;
85+
CancellationTokenSource cancellationTokenSource;
7086

7187
public ReceivingEffectHandler(EventEmitter emitter)
7288
{
@@ -164,6 +180,9 @@ public void Cancel()
164180
LogCallback?.Invoke($"ReceivingEffectHandler - Receiving request cancellion attempted.");
165181
cancellationTokenSource.Cancel();
166182
}
183+
LogCallback?.Invoke($"ReceivingEffectHandler - invoking OnCancelReceiveRequested.");
184+
CancelReceiveRequestEventArgs args = new CancelReceiveRequestEventArgs();
185+
OnCancelReceiveRequested(args);
167186
}
168187
public void Run(ExtendedState context)
169188
{

0 commit comments

Comments
 (0)