sdb.h 2.8 KB
Newer Older
H
hzcheng 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
/*
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 *
 * This program is free software: you can use, redistribute, and/or modify
 * it under the terms of the GNU Affero General Public License, version 3
 * or later ("AGPL"), as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef TDENGINE_SDB_H
#define TDENGINE_SDB_H

#ifdef __cplusplus
extern "C" {
#endif

#include "taosmsg.h"
#include "tsdb.h"

extern int      sdbDebugFlag;
extern short    sdbPeerPort;
extern short    sdbSyncPort;
extern int      sdbMaxNodes;
extern int      sdbHbTimer;  // seconds
extern char     sdbZone[];
extern char     sdbMasterIp[];
extern char     sdbPrivateIp[];
extern char *   sdbStatusStr[];
extern char *   sdbRoleStr[];
extern void *   mnodeSdb;
extern int      sdbExtConns;
extern int      sdbMaster;
extern uint32_t sdbPublicIp;
extern uint32_t sdbMasterStartTime;
extern SIpList *pSdbIpList;
extern SIpList *pSdbPublicIpList;

extern void (*sdbWorkAsMasterCallback)();  // this function pointer will be set by taosd

enum _keytype {
  SDB_KEYTYPE_STRING, SDB_KEYTYPE_UINT32, SDB_KEYTYPE_AUTO, SDB_KEYTYPE_RECYCLE, SDB_KEYTYPE_MAX
};

#define SDB_ROLE_UNAPPROVED 0
#define SDB_ROLE_UNDECIDED  1
#define SDB_ROLE_MASTER     2
#define SDB_ROLE_SLAVE      3

#define SDB_STATUS_OFFLINE  0
#define SDB_STATUS_UNSYNCED 1
#define SDB_STATUS_SYNCING  2
#define SDB_STATUS_SERVING  3
#define SDB_STATUS_DELETED  4

enum _sdbaction {
  SDB_TYPE_INSERT,
  SDB_TYPE_DELETE,
  SDB_TYPE_UPDATE,
  SDB_TYPE_DECODE,
  SDB_TYPE_ENCODE,
  SDB_TYPE_BEFORE_BATCH_UPDATE,
  SDB_TYPE_BATCH_UPDATE,
  SDB_TYPE_AFTER_BATCH_UPDATE,
  SDB_TYPE_RESET,
  SDB_TYPE_DESTROY,
  SDB_MAX_ACTION_TYPES
};

void *sdbOpenTable(int maxRows, int32_t maxRowSize, char *name, char keyType, char *directory,
                   void *(*appTool)(char, void *, char *, int, int *));

void *sdbGetRow(void *handle, void *key);

int64_t sdbInsertRow(void *handle, void *row, int rowSize);

int sdbDeleteRow(void *handle, void *key);

int sdbUpdateRow(void *handle, void *row, int updateSize, char isUpdated);

void *sdbFetchRow(void *handle, void *pNode, void **ppRow);

int sdbBatchUpdateRow(void *handle, void *row, int rowSize);

int64_t sdbGetId(void *handle);

int64_t sdbGetNumOfRows(void *handle);

void sdbSaveSnapShot(void *handle);

void sdbCloseTable(void *handle);

int sdbRemovePeerByIp(uint32_t ip);

int sdbInitPeers(char *directory);

void sdbCleanUpPeers();

int sdbCfgNode(char *cont);

#ifdef __cplusplus
}
#endif

#endif  // TDENGINE_SDB_H