30 #define USE_PTHREADS 1
35 size_t chunk_write_data(
void *buffer,
size_t size,
size_t nmemb,
void *data);
45 std::string d_data_url;
46 std::string d_query_marker;
47 unsigned long long d_size;
48 unsigned long long d_offset;
50 std::vector<unsigned int> d_chunk_position_in_array;
55 unsigned long long d_bytes_read;
57 unsigned long long d_read_buffer_size;
61 static const std::string tracking_context;
63 friend class ChunkTest;
64 friend class DmrppCommonTest;
68 void _duplicate(
const Chunk &bs)
73 d_read_buffer_size = 0;
75 d_is_inflated =
false;
78 d_offset = bs.d_offset;
79 d_data_url = bs.d_data_url;
80 d_query_marker = bs.d_query_marker;
81 d_chunk_position_in_array = bs.d_chunk_position_in_array;
96 d_data_url(
""), d_query_marker(
""), d_size(0), d_offset(0), d_bytes_read(0), d_read_buffer(0),
97 d_read_buffer_size(0), d_is_read(false), d_is_inflated(false)
110 Chunk(
const std::string &data_url,
unsigned long long size,
unsigned long long offset, std::string pia_str =
"") :
111 d_data_url(data_url), d_query_marker(
""), d_size(size), d_offset(offset), d_bytes_read(0), d_read_buffer(0),
112 d_read_buffer_size(0), d_is_read(false), d_is_inflated(false)
127 Chunk(
const std::string &data_url,
unsigned long long size,
unsigned long long offset,
const std::vector<unsigned int> &pia_vec) :
128 d_data_url(data_url), d_query_marker(
""), d_size(size), d_offset(offset), d_bytes_read(0), d_read_buffer(0),
129 d_read_buffer_size(0), d_is_read(false), d_is_inflated(false)
142 delete[] d_read_buffer;
151 if (
this == &rhs)
return *
this;
182 if (!d_query_marker.empty()) {
183 return d_data_url + d_query_marker;
194 d_data_url = data_url;
211 d_bytes_read = bytes_read;
224 delete[] d_read_buffer;
226 d_read_buffer =
new char[d_size];
227 d_read_buffer_size = d_size;
237 return d_read_buffer;
251 virtual void set_rbuf(
char *buf,
unsigned int size)
253 delete[] d_read_buffer;
256 d_read_buffer_size = size;
266 return d_read_buffer_size;
274 return d_chunk_position_in_array;
284 virtual void inflate_chunk(
bool deflate,
bool shuffle,
unsigned int chunk_size,
unsigned int elem_width);
286 virtual void set_is_read(
bool state) { d_is_read = state; }
288 virtual bool get_is_inflated()
const {
return d_is_inflated; }
289 virtual void set_is_inflated(
bool state) { d_is_inflated = state; }
293 virtual void dump(std::ostream & strm)
const;
295 virtual std::string to_string()
const;
299 struct inflate_chunk_args {
304 unsigned int chunk_size;
305 unsigned int elem_width;
307 inflate_chunk_args(Chunk *c,
bool d,
bool s,
unsigned int c_size,
unsigned int e_size):
308 chunk(c), deflate(d), shuffle(s), chunk_size(c_size), elem_width(e_size) {}
311 void *inflate_chunk(
void *args);