52 lines
1.6 KiB
C
52 lines
1.6 KiB
C
/*
|
|
* 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 _TD_TSDB_BUFFER_H_
|
|
#define _TD_TSDB_BUFFER_H_
|
|
|
|
typedef struct {
|
|
int64_t blockId;
|
|
int offset;
|
|
int remain;
|
|
char data[];
|
|
} STsdbBufBlock;
|
|
|
|
typedef struct {
|
|
pthread_cond_t poolNotEmpty;
|
|
int bufBlockSize;
|
|
int tBufBlocks;
|
|
int nBufBlocks;
|
|
int nRecycleBlocks;
|
|
int nElasticBlocks;
|
|
int64_t index;
|
|
SList* bufBlockList;
|
|
} STsdbBufPool;
|
|
|
|
#define TSDB_BUFFER_RESERVE 1024 // Reseve 1K as commit threshold
|
|
|
|
STsdbBufPool* tsdbNewBufPool();
|
|
void tsdbFreeBufPool(STsdbBufPool* pBufPool);
|
|
int tsdbOpenBufPool(STsdb* pRepo);
|
|
void tsdbCloseBufPool(STsdb* pRepo);
|
|
SListNode* tsdbAllocBufBlockFromPool(STsdb* pRepo);
|
|
int tsdbExpandPool(STsdb* pRepo, int32_t oldTotalBlocks);
|
|
void tsdbRecycleBufferBlock(STsdbBufPool* pPool, SListNode *pNode, bool bELastic);
|
|
|
|
// health cite
|
|
STsdbBufBlock *tsdbNewBufBlock(int bufBlockSize);
|
|
void tsdbFreeBufBlock(STsdbBufBlock *pBufBlock);
|
|
|
|
#endif /* _TD_TSDB_BUFFER_H_ */
|