#include <vector> #include <string> #include <map> #include "record.h" class DataManager { public: std::vector<int> file_ptr_; std::vector<uint64_t> file_size_; std::map<size_t, int> file_index_; int MMapFile(size_t file_size, int type, int fd, char *&mapped_buffer); DataManager(std::vector<std::string> &file_list); size_t RunRead(size_t block_num, size_t len, record_t *buffer); void OpenAndMapOutputFile(std::string output_file, size_t file_size); size_t RunWrite(record_t *write_buffer, off_t output_off); size_t MergeRead(record_t *read_buffer, size_t read_buf_rec_off, char *run_file_map, size_t file_off, size_t read_length); size_t MergeWrite(record_t *write_buffer, size_t write_len_recs); size_t MoveRemainingInputToOuputBuff(); void LoadRecordToOutputBuffer(record_t *write_buffer, record_t *read_buffer, std::vector<in_record_t> &keys_idx, size_t key_off); // ~DataManager(); private: int output_fd_ = 0; size_t output_count_ = 0; char *input_mapped_buffer_ = NULL; char *output_mapped_buffer_ = NULL; size_t output_file_off_ = 0; };