resolve warning
This commit is contained in:
parent
5ba5fb73f1
commit
ef084468f8
|
@ -23,8 +23,6 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef int32_t file_id_t;
|
||||
|
||||
typedef enum {
|
||||
TSDB_FILE_TYPE_HEAD, // .head file type
|
||||
TSDB_FILE_TYPE_DATA, // .data file type
|
||||
|
@ -40,19 +38,33 @@ typedef struct {
|
|||
} SFileInfo;
|
||||
|
||||
typedef struct {
|
||||
char * fname;
|
||||
SFileInfo fInfo;
|
||||
} SFILE;
|
||||
int fd;
|
||||
int64_t size; // total size of the file
|
||||
int64_t tombSize; // unused file size
|
||||
} SFile;
|
||||
|
||||
// typedef struct {
|
||||
// int64_t offset;
|
||||
// int64_t skey;
|
||||
// int64_t ekey;
|
||||
// int16_t numOfBlocks;
|
||||
// } SDataBlock;
|
||||
typedef struct {
|
||||
int32_t fileId;
|
||||
SFile fhead;
|
||||
SFile fdata;
|
||||
SFile flast;
|
||||
} SFileGroup;
|
||||
|
||||
// TSDB file handle
|
||||
typedef struct {
|
||||
int32_t daysPerFile;
|
||||
int32_t keep;
|
||||
int32_t minRowPerFBlock;
|
||||
int32_t maxRowsPerFBlock;
|
||||
SFileGroup fGroup[];
|
||||
} STsdbFileH;
|
||||
|
||||
#define IS_VALID_TSDB_FILE_TYPE(type) ((type) >= TSDB_FILE_TYPE_HEAD && (type) <= TSDB_FILE_TYPE_META)
|
||||
|
||||
STsdbFileH *tsdbInitFile(char *dataDir, int32_t daysPerFile, int32_t keep, int32_t minRowsPerFBlock,
|
||||
int32_t maxRowsPerFBlock);
|
||||
void tsdbCloseFile(STsdbFileH *pFileH);
|
||||
|
||||
char *tsdbGetFileName(char *dirName, char *fname, TSDB_FILE_TYPE type);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -14,9 +14,21 @@
|
|||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <dirent.h>
|
||||
|
||||
#include "tsdbFile.h"
|
||||
#include "tglobalcfg.h"
|
||||
|
||||
// int64_t tsMsPerDay[] = {
|
||||
// 86400000L, // TSDB_PRECISION_MILLI
|
||||
// 86400000000L, // TSDB_PRECISION_MICRO
|
||||
// 86400000000000L // TSDB_PRECISION_NANO
|
||||
// };
|
||||
|
||||
#define tsdbGetKeyFileId(key, daysPerFile, precision) ((key) / tsMsPerDay[(precision)] / (daysPerFile))
|
||||
#define tsdbGetMaxNumOfFiles(keep, daysPerFile) ((keep) / (daysPerFile) + 3)
|
||||
|
||||
typedef struct {
|
||||
int64_t offset;
|
||||
|
@ -71,6 +83,55 @@ const char *tsdbFileSuffix[] = {
|
|||
".meta" // TSDB_FILE_TYPE_META
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize the TSDB file handle
|
||||
*/
|
||||
STsdbFileH *tsdbInitFile(char *dataDir, int32_t daysPerFile, int32_t keep, int32_t minRowsPerFBlock,
|
||||
int32_t maxRowsPerFBlock) {
|
||||
STsdbFileH *pTsdbFileH =
|
||||
(STsdbFileH *)calloc(1, sizeof(STsdbFileH) + sizeof(SFileGroup) * tsdbGetMaxNumOfFiles(keep, daysPerFile));
|
||||
if (pTsdbFileH == NULL) return NULL;
|
||||
|
||||
pTsdbFileH->daysPerFile = daysPerFile;
|
||||
pTsdbFileH->keep = keep;
|
||||
pTsdbFileH->minRowPerFBlock = minRowsPerFBlock;
|
||||
pTsdbFileH->maxRowsPerFBlock = maxRowsPerFBlock;
|
||||
|
||||
// Open the directory to read information of each file
|
||||
DIR *dir = opendir(dataDir);
|
||||
if (dir == NULL) {
|
||||
free(pTsdbFileH);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct dirent *dp;
|
||||
char fname[256];
|
||||
while ((dp = readdir(dir)) != NULL) {
|
||||
if (strncmp(dp->d_name, ".", 1) == 0 || strncmp(dp->d_name, "..", 2) == 0) continue;
|
||||
if (true /* check if the file is the .head file */) {
|
||||
int fileId = 0;
|
||||
int vgId = 0;
|
||||
sscanf(dp->d_name, "v%df%d.head", &vgId, &fileId);
|
||||
// TODO
|
||||
|
||||
// Open head file
|
||||
|
||||
// Open data file
|
||||
|
||||
// Open last file
|
||||
}
|
||||
}
|
||||
|
||||
return pTsdbFileH;
|
||||
}
|
||||
|
||||
/**
|
||||
* Closet the file handle
|
||||
*/
|
||||
void tsdbCloseFile(STsdbFileH *pFileH) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
char *tsdbGetFileName(char *dirName, char *fname, TSDB_FILE_TYPE type) {
|
||||
if (!IS_VALID_TSDB_FILE_TYPE(type)) return NULL;
|
||||
|
||||
|
@ -79,4 +140,10 @@ char *tsdbGetFileName(char *dirName, char *fname, TSDB_FILE_TYPE type) {
|
|||
|
||||
sprintf(fileName, "%s/%s%s", dirName, fname, tsdbFileSuffix[type]);
|
||||
return fileName;
|
||||
}
|
||||
|
||||
static void tsdbGetKeyRangeOfFileId(int32_t daysPerFile, int8_t precision, int32_t fileId, TSKEY *minKey,
|
||||
TSKEY *maxKey) {
|
||||
*minKey = fileId * daysPerFile * tsMsPerDay[precision];
|
||||
*maxKey = *minKey + daysPerFile * tsMsPerDay[precision] - 1;
|
||||
}
|
|
@ -83,7 +83,7 @@ int32_t tsdbInsertMetaRecord(SMetaFile *mfh, int64_t uid, void *cont, int32_t co
|
|||
}
|
||||
|
||||
// TODO: make below a function to implement
|
||||
if (fseek(mfh->fd, info.offset, SEEK_CUR) < 0) {
|
||||
if (lseek(mfh->fd, info.offset, SEEK_CUR) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -114,7 +114,7 @@ int32_t tsdbDeleteMetaRecord(SMetaFile *mfh, int64_t uid) {
|
|||
// Remove record from file
|
||||
|
||||
info.offset = -info.offset;
|
||||
if (fseek(mfh->fd, -info.offset, SEEK_CUR) < 0) {
|
||||
if (lseek(mfh->fd, -info.offset, SEEK_CUR) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -149,7 +149,7 @@ int32_t tsdbUpdateMetaRecord(SMetaFile *mfh, int64_t uid, void *cont, int32_t co
|
|||
|
||||
mfh->size += contLen;
|
||||
}
|
||||
if (fseek(mfh->fd, -info.offset, SEEK_CUR) < 0) {
|
||||
if (lseek(mfh->fd, -info.offset, SEEK_CUR) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -212,7 +212,7 @@ static int tsdbRestoreFromMetaFile(char *fname, SMetaFile *mfh) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (fseek(fd, TSDB_META_FILE_HEADER_SIZE, SEEK_SET) < 0) {
|
||||
if (lseek(fd, TSDB_META_FILE_HEADER_SIZE, SEEK_SET) < 0) {
|
||||
// TODO: deal with the error
|
||||
close(fd);
|
||||
return -1;
|
||||
|
|
Loading…
Reference in New Issue