@@ -166,7 +166,12 @@ def close_sync_client():
166166
167167 return close_sync_client
168168
169+ def __check_sync_ptr_not_null (self ):
170+ if self .__c_sync_client_ptr is None :
171+ raise ValueError ('SyncClient already closed' )
172+
169173 def set_credentials (self , credentials : SyncCredentials ):
174+ self .__check_sync_ptr_not_null ()
170175 self .__credentials = credentials
171176 if isinstance (credentials , SyncCredentialsNone ):
172177 c .obx_sync_credentials (self .__c_sync_client_ptr , credentials .type , None , 0 )
@@ -181,6 +186,7 @@ def set_credentials(self, credentials: SyncCredentials):
181186 len (credentials .secret ))
182187
183188 def set_multiple_credentials (self , credentials_list : list [SyncCredentials ]):
189+ self .__check_sync_ptr_not_null ()
184190 if len (credentials_list ) == 0 :
185191 raise ValueError ("Provide at least one credential" )
186192
@@ -207,6 +213,7 @@ def set_multiple_credentials(self, credentials_list: list[SyncCredentials]):
207213
208214
209215 def set_request_updates_mode (self , mode : SyncRequestUpdatesMode ):
216+ self .__check_sync_ptr_not_null ()
210217 if mode == SyncRequestUpdatesMode .MANUAL :
211218 c_mode = c .RequestUpdatesMode .MANUAL
212219 elif mode == SyncRequestUpdatesMode .AUTO :
@@ -218,6 +225,7 @@ def set_request_updates_mode(self, mode: SyncRequestUpdatesMode):
218225 c .obx_sync_request_updates_mode (self .__c_sync_client_ptr , c_mode )
219226
220227 def get_sync_state (self ) -> SyncState :
228+ self .__check_sync_ptr_not_null ()
221229 c_state = c .obx_sync_state (self .__c_sync_client_ptr )
222230 if c_state == c .SyncState .CREATED :
223231 return SyncState .CREATED
@@ -237,18 +245,23 @@ def get_sync_state(self) -> SyncState:
237245 return SyncState .UNKNOWN
238246
239247 def start (self ):
248+ self .__check_sync_ptr_not_null ()
240249 c .obx_sync_start (self .__c_sync_client_ptr )
241250
242251 def stop (self ):
252+ self .__check_sync_ptr_not_null ()
243253 c .obx_sync_stop (self .__c_sync_client_ptr )
244254
245255 def trigger_reconnect (self ) -> bool :
256+ self .__check_sync_ptr_not_null ()
246257 return c .check_obx_success (c .obx_sync_trigger_reconnect (self .__c_sync_client_ptr ))
247258
248259 def request_updates (self , subscribe_for_future_pushes : bool ) -> bool :
260+ self .__check_sync_ptr_not_null ()
249261 return c .check_obx_success (c .obx_sync_updates_request (self .__c_sync_client_ptr , subscribe_for_future_pushes ))
250262
251263 def cancel_updates (self ) -> bool :
264+ self .__check_sync_ptr_not_null ()
252265 return c .check_obx_success (c .obx_sync_updates_cancel (self .__c_sync_client_ptr ))
253266
254267 @staticmethod
@@ -266,6 +279,7 @@ def is_closed(self) -> bool:
266279 return self .__c_sync_client_ptr is None
267280
268281 def set_login_listener (self , login_listener : SyncLoginListener ):
282+ self .__check_sync_ptr_not_null ()
269283 self .__c_login_listener = c .OBX_sync_listener_login (lambda arg : login_listener .on_logged_in ())
270284 self .__c_login_failure_listener = c .OBX_sync_listener_login_failure (
271285 lambda arg , sync_login_code : login_listener .on_login_failed (sync_login_code ))
@@ -281,6 +295,7 @@ def set_login_listener(self, login_listener: SyncLoginListener):
281295 )
282296
283297 def set_connection_listener (self , connection_listener : SyncConnectionListener ):
298+ self .__check_sync_ptr_not_null ()
284299 self .__c_connect_listener = c .OBX_sync_listener_connect (lambda arg : connection_listener .on_connected ())
285300 self .__c_disconnect_listener = c .OBX_sync_listener_disconnect (lambda arg : connection_listener .on_disconnected ())
286301 c .obx_sync_listener_connect (
@@ -295,6 +310,7 @@ def set_connection_listener(self, connection_listener: SyncConnectionListener):
295310 )
296311
297312 def set_error_listener (self , error_listener : SyncErrorListener ):
313+ self .__check_sync_ptr_not_null ()
298314 self .__c_error_listener = c .OBX_sync_listener_error (
299315 lambda arg , sync_error_code : error_listener .on_error (sync_error_code ))
300316 c .obx_sync_listener_error (
@@ -304,18 +320,23 @@ def set_error_listener(self, error_listener: SyncErrorListener):
304320 )
305321
306322 def wait_for_logged_in_state (self , timeout_millis : int ):
323+ self .__check_sync_ptr_not_null ()
307324 c .obx_sync_wait_for_logged_in_state (self .__c_sync_client_ptr , timeout_millis )
308325
309326 def add_filter_variable (self , name : str , value : str ):
327+ self .__check_sync_ptr_not_null ()
310328 c .obx_sync_filter_variables_put (self .__c_sync_client_ptr , name .encode ('utf-8' ), value .encode ('utf-8' ))
311329
312330 def remove_filter_variable (self , name : str ):
331+ self .__check_sync_ptr_not_null ()
313332 c .obx_sync_filter_variables_remove (self .__c_sync_client_ptr , name .encode ('utf-8' ))
314333
315334 def remove_all_filter_variables (self ):
335+ self .__check_sync_ptr_not_null ()
316336 c .obx_sync_filter_variables_remove_all (self .__c_sync_client_ptr )
317337
318338 def get_outgoing_message_count (self , limit : int = 0 ) -> int :
339+ self .__check_sync_ptr_not_null ()
319340 outgoing_message_count = ctypes .c_uint64 (0 )
320341 c .obx_sync_outgoing_message_count (self .__c_sync_client_ptr , limit , ctypes .byref (outgoing_message_count ))
321342 return outgoing_message_count .value
0 commit comments