• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef GRD_TYPE_EXPORT_H
17 #define GRD_TYPE_EXPORT_H
18 
19 #include "stdint.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #ifdef _WIN32
26 #ifdef GRD_DLL_EXPORT
27 #define GRD_API __declspec(dllexport)
28 #else
29 #define GRD_API
30 #endif
31 #else
32 #define GRD_API __attribute__((visibility("default")))
33 #endif
34 
35 #define GRD_SYMBOL GRD_API
36 
37 typedef struct GRD_DB GRD_DB;
38 
39 /**
40  * @brief Open database config.
41  */
42 #define GRD_DB_OPEN_ONLY 0x00    // open database if exists, return error if database not exists
43 #define GRD_DB_OPEN_CREATE 0x01  // open database if exists, create database and open if database not exists
44 #define GRD_DB_OPEN_CHECK_FOR_ABNORMAL \
45     0x02                        // check data in database if close abnormally last time,
46                                 // if data is corrupted, rebuild the database
47 #define GRD_DB_OPEN_CHECK 0x04  // check data in database when open database, if data is corrupted, rebuild the database
48 #define GRD_DB_OPEN_SHARED_READ_ONLY 0x08  // open database in as read-only mode when sharedModeEnable = 1
49 
50 /**
51  * @brief close database config.
52  */
53 #define GRD_DB_CLOSE 0x00
54 #define GRD_DB_CLOSE_IGNORE_ERROR 0x01
55 
56 /**
57  * @brief flush database config.
58  */
59 #define GRD_DB_FLUSH_ASYNC 0x00
60 #define GRD_DB_FLUSH_SYNC 0x01
61 
62 #define GRD_DOC_ID_DISPLAY 0x01
63 
64 /**
65  * @brief meaning attr is an asset.
66  */
67 #define GRD_DOC_ASSET_FLAG 0x01
68 
69 typedef struct Query {
70     const char *filter;
71     const char *projection;
72 } Query;
73 
74 typedef struct GRD_KVItem {
75     void *data;
76     uint32_t dataLen;
77 } GRD_KVItemT;
78 
79 typedef struct GRD_ElementId {
80     const char *equipId;
81     uint64_t incrClock;
82 } GRD_ElementIdT;
83 
84 typedef struct GRD_XmlOpPosition {
85     const char *tableName;
86     GRD_ElementIdT *elementId;
87 } GRD_XmlOpPositionT;
88 
89 typedef struct GRD_UndoParam {
90     uint64_t captureTimeout;
91 } GRD_UndoParamT;
92 
93 typedef enum GRD_EncodingCalMode {
94     UTF16 = 0,
95     UTF8,
96     ENCODE_BUTT,
97 } GRD_EncodingCalModeE;
98 
99 typedef enum GRD_DocNodeType {
100     GRD_TEXT_TYPE = 0,
101     GRD_ARRAY_TYPE,
102     GRD_MAP_TYPE,
103     GRD_XML_TEXT_TYPE,
104     GRD_XML_ELEMENT_TYPE,
105     GRD_XML_FRAGMENT_TYPE,
106 } GRD_DocNodeTypeE;
107 
108 typedef struct GRD_DocNodeInfo {
109     GRD_DocNodeTypeE type;
110     const char *content;
111 } GRD_DocNodeInfoT;
112 
113 typedef enum GRD_SyncMode {
114     GRD_SYNC_MODE_UPLOAD = 0,
115     GRD_SYNC_MODE_DOWNLOAD,
116     GRD_SYNC_MODE_UP_DOWN,
117     GRD_SYNC_MODE_DOWNLOAD_LOG,
118     GRD_SYNC_MODE_UP_DOWN_LOG,
119     GRD_SYNC_MODE_INVALID,
120 } GRD_SyncModeE;
121 
122 typedef enum GRD_SyncProcessStatus {
123     GRD_SYNC_PROCESS_PREPARED = 0,
124     GRD_SYNC_PROCESS_PROCESSING,
125     GRD_SYNC_PROCESS_FINISHED,
126 } GRD_SyncProcessStatusE;
127 
128 typedef struct GRD_SyncProcess {
129     GRD_SyncProcessStatusE status;
130     int32_t errCode;
131     GRD_SyncModeE mode;
132     void *cloudDB;
133     uint64_t syncId;
134 } GRD_SyncProcessT;
135 
136 typedef void (*GRD_SyncTaskCallbackFuncT)(GRD_SyncProcessT *syncProcess);
137 
138 typedef struct GRD_SyncConfig {
139     GRD_SyncModeE mode;
140     char **equipIds;
141     uint8_t size; // equipId size
142     GRD_SyncTaskCallbackFuncT callbackFunc;
143     uint64_t timeout;
144     uint64_t syncId;
145 } GRD_SyncConfigT;
146 
147 typedef void (*GRD_ScheduleFunc)(void *func, void *param);
148 
149 typedef struct GRD_ThreadPool {
150     GRD_ScheduleFunc schedule;
151 } GRD_ThreadPoolT;
152 
153 typedef const char *(*GrdEquipIdGetFuncT)(void);
154 
155 typedef enum GRD_QueryConditionType {
156     GRD_QUERY_CONDITION_TYPE_NOT_USE = 0,
157     GRD_QUERY_CONDITION_TYPE_EQUAL_TO,
158     GRD_QUERY_CONDITION_TYPE_NOT_EQUAL_TO,
159     GRD_QUERY_CONDITION_TYPE_GREATER_THAN,
160     GRD_QUERY_CONDITION_TYPE_LESS_THAN,
161     GRD_QUERY_CONDITION_TYPE_GREATER_THAN_OR_EQUAL_TO,
162     GRD_QUERY_CONDITION_TYPE_LESS_THAN_OR_EQUAL_TO,
163 } GRD_QueryConditionTypeE;
164 
165 typedef enum GRD_CloudFieldType {
166     GRD_CLOUD_FIELD_TYPE_INT = 0,
167     GRD_CLOUD_FIELD_TYPE_DOUBLE,
168     GRD_CLOUD_FIELD_TYPE_STRING,
169     GRD_CLOUD_FIELD_TYPE_BOOL,
170     GRD_CLOUD_FIELD_TYPE_BYTES,
171 } GRD_CloudFieldTypeE;
172 
173 typedef enum CloudErrorCode {
174     E_CLOUD_OK = 0,
175     E_CLOUD_ERROR,
176     E_QUERY_END,
177 } CloudErrorCodeE;
178 
179 typedef struct GRD_CloudField {
180     GRD_CloudFieldTypeE type;           // field type
181     char *key;                          // field name
182     uint32_t valueLen;                  // value length
183     void *value;                        // value
184     GRD_QueryConditionTypeE condition;  // query condition
185 } GRD_CloudFieldT;
186 
187 typedef struct GRD_CloudRecord {
188     GRD_CloudFieldT *fields;  // fields list
189     uint8_t fieldSize;
190 } GRD_CloudRecordT;
191 
192 typedef struct GRD_CloudParams {
193     const char *tableName;
194     GRD_CloudRecordT *records;
195     uint32_t recordSize;
196     GRD_CloudRecordT **extends;
197     uint32_t *extendSize;
198 } GRD_CloudParamsT;
199 
200 typedef struct AssetLoader {
201     int32_t (*downloadAsset)(void *cloudDB, const char *equipId, char *path);
202     int32_t (*uploadAsset)(void *cloudDB, char *path);
203     int32_t (*deleteAsset)(void *cloudDB, char *path);
204     int32_t (*deleteLocalAsset)(void *cloudDB, char *path);
205 } AssetLoaderT;
206 
207 typedef struct GRD_ICloudDB {
208     void *cloudDB;
209     AssetLoaderT *assetLoader;
210     int32_t (*batchInsert)(void *cloudDB, GRD_CloudParamsT *cloudParams);
211     int32_t (*query)(void *cloudDB, GRD_CloudParamsT *cloudParams);
212     int32_t (*sendAwarenessData)(void *cloudDB, const uint8_t *data, uint32_t dataSize);
213     int32_t (*lock)(void *cloudDB, uint32_t *lockTimeMs);
214     int32_t (*unLock)(void *cloudDB);
215     int32_t (*heartBeat)(void *cloudDB);
216     int32_t (*close)(void *cloudDB);
217 } GRD_ICloudDBT;
218 #ifdef __cplusplus
219 }
220 #endif /* __cplusplus */
221 
222 #endif  // GRD_TYPE_EXPORT_H
223