WiscSort / wiscSort / RSW / header / data_manager.h
data_manager.h
Raw
#include <vector>
#include <map>
// REVIEW: utility_1 (std::Array does not give accurate results)
//#include <utility_2.h> // works fine
#include <utility_3.h>
#include <string>
#include <sys/stat.h>

using std::vector;
using std::map;
using std::string;

class DataManager {
private: 
    vector<int> file_ptr;
    vector<uint64_t> file_size;
    map<size_t, int> file_index;

    uint32_t buf_ptr = 0;
    int output_fd;
    uint64_t output_count = 0;

    char *mmapped_buffer = NULL;
    record_t *output_buf = NULL;

public:
    DataManager(vector<string> &file_list);
    size_t load(size_t block_num, size_t len, record_t *buffer);
    void set_output_fd(int fd);
    void buffer_write(record_t *buffer, in_record_t *keys, int num_block, char *mmapped_buffer);
    void init_output_buffer(size_t size);
    uint64_t get_overall_size();
    ~DataManager();
};