11import ctypes
2- from collections .abc import Callable
3- from ctypes import c_void_p
2+ from enum import Enum , auto , IntEnum
43
54import objectbox .c as c
65from objectbox import Store
7- from enum import Enum , auto , IntEnum
8-
9- from objectbox .c import OBX_sync_listener_login
106
117
128class SyncCredentials :
@@ -92,6 +88,7 @@ class SyncLoginEvent:
9288 CREDENTIALS_REJECTED = 'credentials_rejected'
9389 UNKNOWN_ERROR = 'unknown_error'
9490
91+
9592class SyncCode (IntEnum ):
9693 OK = 20
9794 REQ_REJECTED = 40
@@ -102,13 +99,15 @@ class SyncCode(IntEnum):
10299 CLIENT_ID_TAKEN = 61
103100 TX_VIOLATED_UNIQUE = 71
104101
102+
105103class SyncChange :
106104 def __init__ (self , entity_id : int , entity : type , puts : list [int ], removals : list [int ]):
107105 self .entity_id = entity_id
108106 self .entity = entity
109107 self .puts = puts
110108 self .removals = removals
111109
110+
112111class SyncLoginListener :
113112
114113 def on_logged_in (self ):
@@ -117,6 +116,7 @@ def on_logged_in(self):
117116 def on_login_failed (self , sync_login_code : SyncCode ):
118117 pass
119118
119+
120120class SyncConnectionListener :
121121
122122 def on_connected (self ):
@@ -125,11 +125,13 @@ def on_connected(self):
125125 def on_disconnected (self ):
126126 pass
127127
128+
128129class SyncErrorListener :
129130
130131 def on_error (self , sync_error_code : int ):
131132 pass
132133
134+
133135class SyncClient :
134136
135137 def __init__ (self , store : Store , server_urls : list [str ],
@@ -151,7 +153,8 @@ def __init__(self, store: Store, server_urls: list[str],
151153 self .__store = store
152154 self .__server_urls = [url .encode ('utf-8' ) for url in server_urls ]
153155
154- self .__c_sync_client_ptr = c .obx_sync_urls (store .c_store (), c .c_array_pointer (self .__server_urls , ctypes .c_char_p ),
156+ self .__c_sync_client_ptr = c .obx_sync_urls (store .c_store (),
157+ c .c_array_pointer (self .__server_urls , ctypes .c_char_p ),
155158 len (self .__server_urls ))
156159
157160 def set_credentials (self , credentials : SyncCredentials ):
@@ -223,7 +226,8 @@ def is_closed(self) -> bool:
223226
224227 def set_login_listener (self , login_listener : SyncLoginListener ):
225228 self .__c_login_listener = c .OBX_sync_listener_login (lambda arg : login_listener .on_logged_in ())
226- self .__c_login_failure_listener = c .OBX_sync_listener_login_failure (lambda arg , sync_login_code : login_listener .on_login_failed (sync_login_code ))
229+ self .__c_login_failure_listener = c .OBX_sync_listener_login_failure (
230+ lambda arg , sync_login_code : login_listener .on_login_failed (sync_login_code ))
227231 c .obx_sync_listener_login (
228232 self .__c_sync_client_ptr ,
229233 self .__c_login_listener ,
@@ -250,12 +254,22 @@ def set_connection_listener(self, connection_listener: SyncConnectionListener):
250254 )
251255
252256 def set_error_listener (self , error_listener : SyncErrorListener ):
253- self .__c_error_listener = c .OBX_sync_listener_error (lambda arg , sync_error_code : error_listener .on_error (sync_error_code ))
257+ self .__c_error_listener = c .OBX_sync_listener_error (
258+ lambda arg , sync_error_code : error_listener .on_error (sync_error_code ))
254259 c .obx_sync_listener_error (
255260 self .__c_sync_client_ptr ,
256261 self .__c_error_listener ,
257262 None
258263 )
259264
260265 def wait_for_logged_in_state (self , timeout_millis : int ):
261- c .obx_sync_wait_for_logged_in_state (self .__c_sync_client_ptr , timeout_millis )
266+ c .obx_sync_wait_for_logged_in_state (self .__c_sync_client_ptr , timeout_millis )
267+
268+ def add_filter_variable (self , name : str , value : str ):
269+ c .obx_sync_filter_variables_put (self .__c_sync_client_ptr , name .encode ('utf-8' ), value .encode ('utf-8' ))
270+
271+ def remove_filter_variable (self , name : str ):
272+ c .obx_sync_filter_variables_remove (self .__c_sync_client_ptr , name .encode ('utf-8' ))
273+
274+ def remove_all_filter_variables (self ):
275+ c .obx_sync_filter_variables_remove_all (self .__c_sync_client_ptr )
0 commit comments