Logo
dfs.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include "model/metadata.hh"
4 #include <iostream>
5 #include <cstdio>
6 #include <string>
7 #include <vector>
8 #include <stdint.h>
9 #include <atomic>
10 #include "../common/context_singleton.hh"
11 #define VELOX_LOGICAL_DISABLE 0
12 #define VELOX_LOGICAL_OUTPUT 1
13 #define VELOX_LOGICAL_NOOP 2
14 #define VELOX_LOGICAL_GENERATE 3
15 
16 namespace velox {
17 
18 using vec_str = std::vector<std::string>;
19 
20 class DFS {
21  public:
22  DFS(string _mr_job_id, int _tmb_id, bool initializer);
23  ~DFS();
34  uint64_t write(std::string& file_name, const char* buf, uint64_t off, uint64_t len);
35  uint64_t write(std::string& file_name, const char* buf, uint64_t off, uint64_t len,
36  uint64_t block_size);
37 
47  uint64_t read(std::string& file_name, char* buf, uint64_t off, uint64_t len);
48 
58  //uint64_t read_physical(std::string& file_name, char* buf, uint64_t off, uint64_t len);
59  //uint64_t read_logical(std::string& file_name, char* buf, uint64_t off, uint64_t len);
60 
65  std::string read_all(std::string file_name);
66 
70  int append(std::string file_name, std::string buf);
71 
79  int upload(std::string file_name, bool is_binary, uint64_t block_size = 0);
80 
83  int upload_by_individual_block(std::string file_name, bool is_binary, uint64_t block_size = 0);
89  int download(std::string file_name);
90 
91  bool exists(std::string);
92 
93  bool touch(std::string);
94 
95  int remove(std::string);
96 
97  bool rename(std::string, std::string);
98 
99  int format();
100 
101  model::metadata get_metadata(std::string& fname);
102 
103  model::metadata get_metadata_optimized(std::string& fname, int type = 0);
104 
105  std::vector<model::metadata> get_metadata_all();
106 
107  void file_metadata_append(std::string, size_t, model::metadata&);
108 
110  std::string dump_metadata(std::string& fname);
111 
113  //uint64_t read_chunk(std::string& fname, std::string host, char* buf, uint32_t buffer_offset, uint64_t off, uint64_t len, int _tmb_id);
114  uint64_t read_chunk(char* buf, uint32_t buffer_offset);
115 
116  uint64_t write_chunk(std::string& file_name, const char* buf, uint64_t off, uint64_t len, uint64_t block_size, uint32_t sblock_seq);
117 
118  int write_file(std::string file_name, bool, const std::string& buf, uint64_t len);
119 
120  int tmg_id;
121  int shmid;
123  std::string mr_job_id;
124  private:
125 
126  uint32_t NUM_NODES;
127  int replica;
128  std::vector<std::string> nodes;
129 
130  int cores; // GET_INT("addons.cores");
131  int shm_buf_depth;
132  int shm_buf_width;
133  int shm_buf_idx;
134  int total_shm_buf_num;
135  char* to_del_buf;
136 
137  uint64_t shm_idx_addr;
138  uint64_t shm_base_chunk_addr;
139  uint64_t shm_status_addr;
140  bool initializer;
141 
142 
143 };
144 
145 }
Definition: dfs.hh:20
int upload(std::string file_name, bool is_binary, uint64_t block_size=0)
Upload a local file to a the veloxdfs intance.
Definition: dfs-modify2.cc:566
void * shared_memory
Definition: dfs.hh:122
uint64_t read(std::string &file_name, char *buf, uint64_t off, uint64_t len)
Download a remote file's section into a buffer.
Definition: dfs-modify2.cc:1641
uint64_t read_chunk(char *buf, uint32_t buffer_offset)
Read a chunk directly.
Definition: dfs-modify2.cc:1878
bool rename(std::string, std::string)
Definition: dfs-modify2.cc:938
int remove(std::string)
Definition: dfs-modify2.cc:899
uint64_t write(std::string &file_name, const char *buf, uint64_t off, uint64_t len)
Write the contents into a remote file.
Definition: dfs-modify2.cc:1409
int shmid
Definition: dfs.hh:121
void file_metadata_append(std::string, size_t, model::metadata &)
Definition: dfs-modify2.cc:1814
int append(std::string file_name, std::string buf)
Append a string to the end of a remote file.
Definition: dfs-modify2.cc:1056
int download(std::string file_name)
Download a remote file to your current local directory.
Definition: dfs-modify2.cc:821
int write_file(std::string file_name, bool, const std::string &buf, uint64_t len)
Definition: dfs-modify2.cc:2071
model::metadata get_metadata(std::string &fname)
Definition: dfs-modify2.cc:1708
std::vector< model::metadata > get_metadata_all()
Definition: dfs-modify2.cc:1793
std::string read_all(std::string file_name)
Read remote logical blocks into a buffer.
Definition: dfs-modify2.cc:872
bool touch(std::string)
Definition: dfs-modify2.cc:1274
uint64_t write_chunk(std::string &file_name, const char *buf, uint64_t off, uint64_t len, uint64_t block_size, uint32_t sblock_seq)
Definition: dfs-modify2.cc:1913
model::metadata get_metadata_optimized(std::string &fname, int type=0)
Definition: dfs-modify2.cc:1720
int tmg_id
Definition: dfs.hh:120
std::string mr_job_id
Definition: dfs.hh:123
DFS(string _mr_job_id, int _tmb_id, bool initializer)
Definition: dfs-modify2.cc:512
std::string dump_metadata(std::string &fname)
Dump all the metadata for the give file.
Definition: dfs-modify2.cc:1847
bool exists(std::string)
}}}
Definition: dfs-modify2.cc:1261
int format()
Definition: dfs-modify2.cc:1038
~DFS()
Definition: dfs-modify2.cc:559
int upload_by_individual_block(std::string file_name, bool is_binary, uint64_t block_size=0)
For the Experiment Upload a local file to the veloxdfs instance by individual file.
Definition: dfs.cc:781
Definition: metadata.hh:12
Definition: dfs-modify2.cc:47
std::vector< std::string > vec_str
Definition: dfs.hh:18