8 #pragma once // NOLINT(build/header_guard)
9 #include "AgoraRefPtr.h"
10 #include "AgoraBase.h"
12 #include <api/aosl_ref.h>
17 enum SyncClientError {
20 kConnectSyncFailed = -2,
21 kConnectDatabaseFailed = -3,
22 kDisconnectDatabaseFailed = -4,
23 kDatabaseNotConnected = -5,
24 kCreateCollectionFailed = -6,
25 kCollectionNotCreated = -7,
26 kCollectionExisted = -8,
29 kQueryDocFailed = -11,
33 typedef void(*syncClientCallback)(SyncClientError,
void*);
34 typedef void(*dataBaseOpCallback)(SyncClientError,
const char*,
void*);
35 typedef void(*collectionOpCallback)(SyncClientError,
const char*,
const char*,
void*);
36 typedef void(*queryDocCallback)(SyncClientError error,
const char* resultJson,
size_t count,
bool more,
void* userData);
47 kTransactionBegin = 6,
68 virtual void onCollectionEvent(
const char* previousJson,
const char* curJson,
const char* collection,
const char* docName,
70 virtual void onDatabaseEvent(
const char* databaseName, SyncClientError error) = 0;
71 virtual void onDataException(
const char* databaseName,
const char* collectionName) = 0;
81 uint32_t shakehand_interval;
83 uint32_t connection_timeout;
85 uint32_t compact_interval;
86 SyncConfig() : appId(NULL), shakehand_interval(1), connection_timeout(10), compact_interval(3600 * 1000) {}
97 virtual int32_t login(
const char* token,
const char* channelName, user_id_t userId, syncClientCallback callback,
void* userData, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
98 virtual int32_t queryDoc(
const char* database,
const char* coll,
const char* range_start,
const char* range_end, int64_t limits,
bool doc_only,
bool count_only, queryDocCallback callback,
void* userData, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
99 virtual int32_t logout(aosl_ref_t ares = AOSL_REF_INVALID) = 0;
100 virtual int32_t renewToken(
const char* token, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
103 virtual int32_t connectDatabase(
const char* database, dataBaseOpCallback callback,
void* userData, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
104 virtual int32_t disconnectDatabase(
const char* database,
105 dataBaseOpCallback callback,
void* userData, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
106 virtual int32_t createCollection(
const char* database,
const char* collection,
107 const char** readable,
int readSize,
108 collectionOpCallback callback,
void* userData, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
109 virtual int32_t deleteCollection(
const char* database,
const char* collection,
110 collectionOpCallback callback,
void* userData, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
113 virtual int32_t subscribe(
const char* database,
const char* collection,
115 virtual int32_t unsubscribe(
const char* database,
const char* collection, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
116 virtual int32_t addReadable(
const char* database,
const char* coll,
const char* readable, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
117 virtual int32_t removeReadable(
const char* database,
const char* coll,
const char* readable, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
118 virtual int32_t putDoc(
const char* database,
const char* collection,
119 const char* docName, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
120 virtual int32_t deleteDoc(
const char* database,
const char* collection,
121 const char* docName, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
122 virtual int32_t getDocs(
const char* database,
const char* collection,
126 virtual int32_t putDocValue(
const char* database,
const char* collection,
127 const char* docName,
const char* jsonValue, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
128 virtual int32_t updateDocValue(
const char* database,
const char* collection,
129 const char* docName,
const char* path,
130 const char* jsonValue, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
131 virtual int32_t deleteDocValue(
const char* database,
const char* collection,
132 const char* docName,
const char* path, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
133 virtual int32_t deleteDocValues(
const char* database,
const char* collection,
const char* docName,
134 const char** path, uint32_t pathSize,
135 aosl_ref_t ares = AOSL_REF_INVALID) = 0;
136 virtual int32_t getDocValue(
const char* database,
const char* collection,
138 virtual int32_t hasPath(
const char* database,
const char* collection,
139 const char* docName,
const char* path,
bool& result) = 0;
140 virtual int32_t keepAliveDoc(
const char* database,
const char* collection,
141 const char* docName, uint32_t ttl, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
142 virtual bool isOpPermission(
const char* database,
const char* collection,
143 const char* docName, OP_Privilege op) = 0;
146 virtual int32_t shakehand(aosl_ref_t ares = AOSL_REF_INVALID) = 0;