void MockReadonlyStore::load(PathRef fpath) { FileStream fp(fpath.string().c_str(), "rb"); fp.disbuf(); NativeDataInput<InputBuffer> dio; dio.attach(&fp); uint64_t fixlen, rows, strSize; dio >> fixlen; dio >> rows; dio >> strSize; m_fixedLen = size_t(fixlen); m_rows.strpool.resize_no_init(size_t(strSize)); if (0 == m_fixedLen) { m_rows.offsets.resize_no_init(size_t(rows + 1)); dio.ensureRead(m_rows.offsets.data(), m_rows.offsets.used_mem_size()); #if !defined(NDEBUG) assert(m_rows.strpool.size() == m_rows.offsets.back()); for (size_t i = 0; i < rows; ++i) { assert(m_rows.offsets[i] < m_rows.offsets[i+1]); } #endif } else { assert(m_rows.strpool.size() % m_fixedLen == 0); assert(m_rows.strpool.size() / m_fixedLen == rows); } dio.ensureRead(m_rows.strpool.data(), m_rows.strpool.used_mem_size()); }
DFA_Interface* DFA_Interface::load_from(FILE* fp) { using namespace febird; FileStream file; file.attach(fp); file.disbuf(); std::string className; try { NativeDataInput<InputBuffer> dio; dio.attach(&file); dio >> className; #define ON_CLASS_IO(Class) \ if (BOOST_STRINGIZE(Class) == className) { \ std::auto_ptr<Class> au(new Class); \ dio >> *au; \ file.detach(); \ return au.release(); \ } #include "dfa_class_io.hpp" } catch (...) { file.detach(); throw; } file.detach(); string_appender<> msg; msg << BOOST_CURRENT_FUNCTION << ": unknown Automata class: " << className; throw std::invalid_argument(msg); }
void MockWritableSegment::loadRecordStore(PathRef dir) { fs::path fpath = dir / "rows"; FileStream fp(fpath.string().c_str(), "rb"); fp.disbuf(); NativeDataInput<InputBuffer> dio; dio.attach(&fp); dio >> m_rows; }
Logged(Tab* tab, const std::string& dir) { assert(NULL != tab); this->tab = tab; fmain = dir + "/main"; flog = dir + "/log"; FileStream file; if (file.xopen(fmain.c_str(), "rb")) { NativeDataInput<InputBuffer> dio; dio.attach(&file); dio >> *tab; // load the check point file.close(); }
void MockReadonlyIndex::load(PathRef fpath) { FileStream fp(fpath.string().c_str(), "rb"); fp.disbuf(); NativeDataInput<InputBuffer> dio; dio.attach(&fp); uint64_t fixlen, rows, keylen; dio >> fixlen; dio >> rows; dio >> keylen; m_ids.resize_no_init(size_t(rows)); dio.ensureRead(m_ids.data(), m_ids.used_mem_size()); if (0 == fixlen) { m_keys.offsets.resize_no_init(size_t(rows + 1)); dio.ensureRead(m_keys.offsets.data(), m_keys.offsets.used_mem_size()); } else { assert(fixlen * rows == keylen); } m_keys.strpool.resize_no_init(size_t(keylen)); dio.ensureRead(m_keys.strpool.data(), size_t(keylen)); m_fixedLen = size_t(fixlen); }
void MockWritableIndex<Key>::load(PathRef fpath) { FileStream fp(fpath.string().c_str(), "rb"); fp.disbuf(); NativeDataInput<InputBuffer> dio; dio.attach(&fp); dio >> m_kv; }