1- from  typing  import  Union 
1+ from  typing  import  List ,  Union 
22from  pubnub .exceptions  import  PubNubException 
33from  pubnub .enums  import  PNStatusCategory 
4+ from  pubnub .pubnub  import  PubNub 
45
56
67class  PNEffect :
78    pass 
89
910
10- class  HandshakeEffect (PNEffect ):
11-     def  __init__ (self , channels : Union [None , list [str ]], groups : Union [None , list [str ]]) ->  None :
11+ class  PNManageableEffect (PNEffect ):
12+     pass 
13+ 
14+ 
15+ class  PNCancelEffect (PNEffect ):
16+     cancel_effect : str 
17+ 
18+ 
19+ class  HandshakeEffect (PNManageableEffect ):
20+     def  __init__ (self , channels : Union [None , List [str ]] =  None , groups : Union [None , List [str ]] =  None ) ->  None :
1221        super ().__init__ ()
1322        self .channels  =  channels 
1423        self .groups  =  groups 
1524
1625
17- class  CancelHandshakeEffect (PNEffect ):
18-     pass 
26+ class  CancelHandshakeEffect (PNCancelEffect ):
27+     cancel_effect   =   HandshakeEffect . __name__ 
1928
2029
21- class  ReceiveMessagesEffect (PNEffect ):
30+ class  ReceiveMessagesEffect (PNManageableEffect ):
2231    def  __init__ (self ,
23-                  channels : Union [None , list [str ]],
24-                  groups : Union [None , list [str ]],
25-                  timetoken : Union [None , str ],
26-                  region : Union [None , int ]
32+                  channels : Union [None , List [str ]]  =   None ,
33+                  groups : Union [None , List [str ]]  =   None ,
34+                  timetoken : Union [None , str ]  =   None ,
35+                  region : Union [None , int ]  =   None 
2736                 ) ->  None :
2837        super ().__init__ ()
2938        self .channels  =  channels 
@@ -32,51 +41,95 @@ def __init__(self,
3241        self .region  =  region 
3342
3443
35- class  CancelReceiveMessagesEffect (PNEffect ):
36-     pass 
37- 
38- 
39- class  EmitMessagesEffect (PNEffect ):
40-     def  __init__ (self , messages : Union [None , list [str ]]) ->  None :
41-         super ().__init__ ()
42-         self .messages  =  messages 
43- 
44- 
45- class  EmitStatusEffect (PNEffect ):
46-     def  __init__ (self , status : Union [None , PNStatusCategory ]) ->  None :
47-         super ().__init__ ()
48-         self .status  =  status 
44+ class  CancelReceiveMessagesEffect (PNCancelEffect ):
45+     cancel_effect  =  ReceiveMessagesEffect .__name__ 
4946
5047
51- class  HandshakeReconnectEffect (PNEffect ):
48+ class  HandshakeReconnectEffect (PNManageableEffect ):
5249    def  __init__ (self ,
53-                  channels : Union [None , list [str ]],
54-                  groups : Union [None , list [str ]],
55-                  attempts : Union [None , int ],
56-                  reason : Union [None , PubNubException ]
50+                  channels : Union [None , List [str ]]  =   None ,
51+                  groups : Union [None , List [str ]]  =   None ,
52+                  attempts : Union [None , int ]  =   None ,
53+                  reason : Union [None , PubNubException ]  =   None 
5754                 ) ->  None :
5855        self .channels  =  channels 
5956        self .groups  =  groups 
6057        self .attempts  =  attempts 
6158        self .reason  =  reason 
6259
6360
64- class  CancelHandshakeEffect ( PNEffect ):
65-     pass 
61+ class  CancelHandshakeReconnectEffect ( PNCancelEffect ):
62+     cancel_effect   =   HandshakeReconnectEffect . __name__ 
6663
6764
68- class  ReceiveReconnectEffect (PNEffect ):
65+ class  ReceiveReconnectEffect (PNManageableEffect ):
6966    def  __init__ (self ,
70-                  channels : Union [None , list [str ]],
71-                  groups : Union [None , list [str ]],
72-                  timetoken : Union [None , str ],
73-                  region : Union [None , int ],
74-                  attempts : Union [None , int ],
75-                  reason : Union [None , PubNubException ]
67+                  channels : Union [None , List [str ]]  =   None ,
68+                  groups : Union [None , List [str ]]  =   None ,
69+                  timetoken : Union [None , str ]  =   None ,
70+                  region : Union [None , int ]  =   None ,
71+                  attempts : Union [None , int ]  =   None ,
72+                  reason : Union [None , PubNubException ]  =   None 
7673                 ) ->  None :
7774        self .channels  =  channels 
7875        self .groups  =  groups 
7976        self .timetoken  =  timetoken 
8077        self .region  =  region 
8178        self .attempts  =  attempts 
8279        self .reason  =  reason 
80+ 
81+ 
82+ class  CancelReceiveReconnectEffect (PNCancelEffect ):
83+     cancel_effect  =  ReceiveReconnectEffect .__name__ 
84+ 
85+ 
86+ class  PNEmittableEffect (PNEffect ):
87+     pass 
88+ 
89+ 
90+ class  EmitMessagesEffect (PNEmittableEffect ):
91+     def  __init__ (self , messages : Union [None , List [str ]]) ->  None :
92+         super ().__init__ ()
93+         self .messages  =  messages 
94+ 
95+ 
96+ class  EmitStatusEffect (PNEmittableEffect ):
97+     def  __init__ (self , status : Union [None , PNStatusCategory ]) ->  None :
98+         super ().__init__ ()
99+         self .status  =  status 
100+ 
101+ 
102+ class  ManagedEffect :
103+     pubnub : PubNub 
104+     effect : Union [PNManageableEffect , PNCancelEffect ]
105+ 
106+     def  set_pn (pubnub : PubNub ):
107+         pubnub  =  pubnub 
108+ 
109+     def  __init__ (self , effect : Union [PNManageableEffect , PNCancelEffect ]) ->  None :
110+         self .effect  =  effect 
111+ 
112+     def  run (self ):
113+         pass 
114+ 
115+     def  stop (self ):
116+         pass 
117+ 
118+ 
119+ class  EmitEffect :
120+     pubnub : PubNub 
121+ 
122+     def  set_pn (pubnub : PubNub ):
123+         pubnub  =  pubnub 
124+ 
125+     def  emit (self , effect : PNEmittableEffect ):
126+         if  isinstance (effect , EmitMessagesEffect ):
127+             self .emit_message (effect )
128+         if  isinstance (effect , EmitStatusEffect ):
129+             self .emit_status (effect )
130+ 
131+     def  emit_message (self , effect : EmitMessagesEffect ):
132+         pass 
133+ 
134+     def  emit_status (self , effect : EmitStatusEffect ):
135+         pass 
0 commit comments