tsdbFSet.c 2.6 KB
Newer Older
H
Hongze Cheng 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * 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/>.
 */

H
Hongze Cheng 已提交
16
#include "inc/tsdbFSet.h"
H
Hongze Cheng 已提交
17

H
Hongze Cheng 已提交
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
static int32_t stt_lvl_to_json(const SSttLvl *lvl, cJSON *json) {
  if (cJSON_AddNumberToObject(json, "lvl", lvl->lvl) == NULL) {
    return TSDB_CODE_OUT_OF_MEMORY;
  }

  cJSON *arr = cJSON_AddArrayToObject(json, "stt");
  if (arr == NULL) return TSDB_CODE_OUT_OF_MEMORY;

  // TODO: .stt files
  // STFile *f;
  // LISTD_FOREACH(&lvl->fstt, f, listNode) {
  //   cJSON *item = cJSON_CreateObject();
  //   if (item == NULL) return TSDB_CODE_OUT_OF_MEMORY;

  //   int32_t code = tsdbTFileToJson(f, item);
  //   if (code) return code;

  //   cJSON_AddItemToArray(arr, item);
  // }

  return 0;
}

H
Hongze Cheng 已提交
41
int32_t tsdbFileSetCreate(int32_t fid, struct STFileSet **ppSet) {
H
Hongze Cheng 已提交
42 43
  int32_t code = 0;

H
Hongze Cheng 已提交
44
  ppSet[0] = taosMemoryCalloc(1, sizeof(struct STFileSet));
H
Hongze Cheng 已提交
45 46 47 48 49 50 51 52 53 54 55
  if (ppSet[0] == NULL) {
    code = TSDB_CODE_OUT_OF_MEMORY;
    goto _exit;
  }
  ppSet[0]->fid = fid;
  ppSet[0]->nextid = 1;  // TODO

_exit:
  return code;
}

H
Hongze Cheng 已提交
56
int32_t tsdbFileSetEdit(struct STFileSet *pSet, struct SFileOp *pOp) {
H
Hongze Cheng 已提交
57
  int32_t code = 0;
H
Hongze Cheng 已提交
58
  // TODO
H
Hongze Cheng 已提交
59 60 61
  return code;
}

H
Hongze Cheng 已提交
62
int32_t tsdbFileSetToJson(const STFileSet *fset, cJSON *json) {
H
Hongze Cheng 已提交
63 64
  int32_t code = 0;

H
Hongze Cheng 已提交
65 66 67 68
  // fid
  if (cJSON_AddNumberToObject(json, "fid", fset->fid) == NULL) {
    return TSDB_CODE_OUT_OF_MEMORY;
  }
H
Hongze Cheng 已提交
69

H
Hongze Cheng 已提交
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
  for (int32_t ftype = TSDB_FTYPE_MIN; ftype < TSDB_FTYPE_MAX; ++ftype) {
    if (fset->farr[ftype] == NULL) {
      continue;
    }

    code = tsdbTFileToJson(fset->farr[ftype], json);
    if (code) return code;
  }

  // each level
  cJSON *ajson = cJSON_AddArrayToObject(json, "stt");
  if (ajson == NULL) return TSDB_CODE_OUT_OF_MEMORY;

  SSttLvl *sttLvl;
  LISTD_FOREACH(&fset->lvl0, sttLvl, listNode) {
    cJSON *ljson = cJSON_CreateObject();
    if (ljson == NULL) return TSDB_CODE_OUT_OF_MEMORY;

    code = stt_lvl_to_json(sttLvl, ljson);
    if (code) return code;

    cJSON_AddItemToArray(ajson, ljson);
  }

  return 0;
H
Hongze Cheng 已提交
95 96
}

H
Hongze Cheng 已提交
97
int32_t tsdbEditFileSet(struct STFileSet *pFileSet, const struct SFileOp *pOp) {
H
Hongze Cheng 已提交
98 99 100 101
  int32_t code = 0;
  ASSERTS(0, "TODO: Not implemented yet");
  // TODO
  return code;
H
Hongze Cheng 已提交
102
}