@@ -311,3 +311,58 @@ def get_outgoing_message_count(self, limit: int = 0) -> int:
311311 outgoing_message_count = ctypes .c_uint64 (0 )
312312 c .obx_sync_outgoing_message_count (self .__c_sync_client_ptr , limit , ctypes .byref (outgoing_message_count ))
313313 return outgoing_message_count .value
314+
315+
316+ class Sync :
317+ __sync_clients : dict [Store , SyncClient ] = {}
318+
319+ @staticmethod
320+ def is_available () -> bool :
321+ return c .obx_has_feature (c .Feature .Sync )
322+
323+ @staticmethod
324+ def client (
325+ store : Store ,
326+ server_url : str ,
327+ credential : SyncCredentials ,
328+ filter_variables : dict [str , str ] | None = None
329+ ) -> SyncClient :
330+ client = SyncClient (store , [server_url ], filter_variables )
331+ client .set_credentials (credential )
332+ return client
333+
334+ @staticmethod
335+ def client_multi_creds (
336+ store : Store ,
337+ server_url : str ,
338+ credentials_list : list [SyncCredentials ],
339+ filter_variables : dict [str , str ] | None = None
340+ ) -> SyncClient :
341+ client = SyncClient (store , [server_url ], filter_variables )
342+ client .set_multiple_credentials (credentials_list )
343+ return client
344+
345+ @staticmethod
346+ def client_multi_urls (
347+ store : Store ,
348+ server_urls : list [str ],
349+ credential : SyncCredentials ,
350+ filter_variables : dict [str , str ] | None = None
351+ ) -> SyncClient :
352+ client = SyncClient (store , server_urls , filter_variables )
353+ client .set_credentials (credential )
354+ return client
355+
356+ @staticmethod
357+ def client_multi_creds_multi_urls (
358+ store : Store ,
359+ server_urls : list [str ],
360+ credentials_list : list [SyncCredentials ],
361+ filter_variables : dict [str , str ] | None = None
362+ ) -> SyncClient :
363+ if store in Sync .__sync_clients :
364+ raise ValueError ('Only one sync client can be active for a store' )
365+ client = SyncClient (store , server_urls , filter_variables )
366+ client .set_multiple_credentials (credentials_list )
367+ Sync .__sync_clients [store ] = client
368+ return client
0 commit comments