@@ -9,8 +9,10 @@ internal class HandshakingState : Core.State
9
9
{
10
10
public IEnumerable < string > Channels ;
11
11
public IEnumerable < string > ChannelGroups ;
12
+ public PNReconnectionPolicy ReconnectionPolicy ;
13
+ public int MaximumReconnectionRetries ;
12
14
13
- public override IEnumerable < IEffectInvocation > OnEntry => new HandshakeInvocation ( )
15
+ public override IEnumerable < IEffectInvocation > OnEntry => new HandshakeInvocation ( )
14
16
{ Channels = this . Channels , ChannelGroups = this . ChannelGroups } . AsArray ( ) ;
15
17
16
18
public override IEnumerable < IEffectInvocation > OnExit { get ; } = new CancelHandshakeInvocation ( ) . AsArray ( ) ;
@@ -21,30 +23,46 @@ public override TransitionResult Transition(IEvent e)
21
23
{
22
24
Events . SubscriptionChangedEvent subscriptionChanged => new States . HandshakingState ( )
23
25
{
24
- Channels = subscriptionChanged . Channels , ChannelGroups = subscriptionChanged . ChannelGroups
25
- } ,
26
+ Channels = subscriptionChanged . Channels ,
27
+ ChannelGroups = subscriptionChanged . ChannelGroups ,
28
+ MaximumReconnectionRetries = this . MaximumReconnectionRetries ,
29
+ ReconnectionPolicy = this . ReconnectionPolicy
30
+ } ,
26
31
27
32
Events . SubscriptionRestoredEvent subscriptionRestored => new States . ReceivingState ( )
28
33
{
29
34
Channels = subscriptionRestored . Channels ,
30
35
ChannelGroups = subscriptionRestored . ChannelGroups ,
31
- Cursor = subscriptionRestored . Cursor
32
- } ,
36
+ Cursor = subscriptionRestored . Cursor ,
37
+ MaximumReconnectionRetries = this . MaximumReconnectionRetries ,
38
+ ReconnectionPolicy = this . ReconnectionPolicy
39
+ } ,
33
40
34
41
Events . HandshakeFailureEvent handshakeFailure => new States . HandshakeReconnectingState ( )
35
42
{
36
- Channels = this . Channels , ChannelGroups = this . ChannelGroups
37
- } . With ( new EmitStatusInvocation ( handshakeFailure . Status ) ) ,
43
+ Channels = this . Channels ,
44
+ ChannelGroups = this . ChannelGroups ,
45
+ AttemptedRetries = 0 ,
46
+ MaximumReconnectionRetries = this . MaximumReconnectionRetries ,
47
+ ReconnectionPolicy = this . ReconnectionPolicy
48
+ } . With ( new EmitStatusInvocation ( handshakeFailure . Status ) ) ,
38
49
39
50
Events . DisconnectEvent disconnect => new States . HandshakeStoppedState ( )
40
51
{
41
- Channels = disconnect . Channels , ChannelGroups = disconnect . ChannelGroups ,
42
- } . With ( new EmitStatusInvocation ( PNStatusCategory . PNDisconnectedCategory ) ) ,
52
+ Channels = disconnect . Channels ,
53
+ ChannelGroups = disconnect . ChannelGroups ,
54
+ MaximumReconnectionRetries = this . MaximumReconnectionRetries ,
55
+ ReconnectionPolicy = this . ReconnectionPolicy
56
+ } . With ( new EmitStatusInvocation ( PNStatusCategory . PNDisconnectedCategory ) ) ,
43
57
44
58
Events . HandshakeSuccessEvent success => new ReceivingState ( )
45
59
{
46
- Channels = this . Channels , ChannelGroups = this . ChannelGroups , Cursor = success . Cursor
47
- } . With ( new EmitStatusInvocation ( success . Status ) ) ,
60
+ Channels = this . Channels ,
61
+ ChannelGroups = this . ChannelGroups ,
62
+ Cursor = success . Cursor ,
63
+ MaximumReconnectionRetries = this . MaximumReconnectionRetries ,
64
+ ReconnectionPolicy = this . ReconnectionPolicy
65
+ } . With ( new EmitStatusInvocation ( success . Status ) ) ,
48
66
49
67
_ => null
50
68
} ;
0 commit comments