Logo
directory.hh
Go to the documentation of this file.
1 #pragma once
2 #include <string>
3 #include <cstdint>
4 #include <vector>
5 #include "../messages/blockinfo.hh"
6 #include "../messages/fileinfo.hh"
7 #include "blockmetadata.hh"
8 
9 namespace eclipse {
10 using namespace messages;
11 
12 class Directory {
13  public:
14  Directory();
15  void create_tables();
16 
17  void file_table_insert(FileInfo&);
18  void file_table_select(std::string, FileInfo *);
19  void file_table_select_all(std::vector<FileInfo>&);
20  void file_table_update(std::string, uint64_t, uint32_t, uint32_t);
21  void file_table_delete(std::string);
22  bool file_table_exists(std::string);
23  void file_table_confirm_upload (std::string, uint32_t, uint32_t);
24 
25  void block_table_insert(BlockMetadata&);
26  void block_table_insert_all(std::vector<BlockMetadata>&);
27  void block_table_select(std::string, std::vector<BlockMetadata>&);
28  void block_table_select_by_index(std::string, uint32_t, BlockMetadata*);
29  void block_table_select_all(std::vector<BlockMetadata>&);
30  void block_table_update(std::string, uint32_t, uint32_t);
31  void block_table_delete(std::string, uint32_t);
32  void block_table_delete_all(std::string);
33  void select_last_block_metadata(std::string, BlockMetadata*);
34 
35  /* For Small Block */
36  void chunk_table_insert(ChunkMetadata&, std::string file_name);
37  void chunk_table_insert_all(std::vector<ChunkMetadata>&, std::string file_name);
38  void chunk_table_select(std::string, std::vector<ChunkMetadata>&);
39  void chunk_table_select_by_index(std::string, uint32_t, ChunkMetadata*);
40  void chunk_table_select_all(std::vector<ChunkMetadata>&);
41  void chunk_table_update(std::string, uint32_t, uint32_t);
42  void chunk_table_delete(std::string, uint32_t);
43  void chunk_table_delete_all(std::string);
44  void select_last_chunk_metadata(std::string, ChunkMetadata*);
45 
46  protected:
47  bool query_exec_simple(char*, int (*)(void*,int,char**,char**), void*);
48 
49  private:
50  std::string path;
51 };
52 
53 }
Definition: directory.hh:12
Definition: block_node.cc:12
Definition: blockmetadata.hh:18
Definition: blockmetadata.hh:7
Definition: fileinfo.hh:10