7#ifndef __qdp_map_obj_disk_multiple_h__
8#define __qdp_map_obj_disk_multiple_h__
18 template<
typename K,
typename V>
31 for(
int i=0; i < dbs_.size(); ++i)
36 int getDebug()
const {
return dbs_[0]->getDebug();}
39 void open(
const std::vector<std::string>& files)
41 dbs_.resize(files.size());
43 for(
int i=0; i < dbs_.size(); ++i)
46 dbs_[i]->open(files[i], std::ios_base::in);
52 bool fileExists(
const std::vector<std::string>& files)
const
55 for(
int i=0; i < dbs_.size(); ++i)
57 ret = dbs_[i]->fileExists(files[i]);
69 for(
int i=0; i < dbs_.size(); ++i)
83 int get(
const K& key, V& val)
const
87 for(
int i=0; i < dbs_.size(); ++i)
89 ret = dbs_[i]->get(key, val);
102 void keys(std::vector<K>& keys_)
const {
105 std::unordered_map<std::string,int> unique_it;
107 for(
int i=0; i < dbs_.size(); ++i)
112 for(
typename std::vector<K>::const_iterator k=kk.begin(); k != kk.end(); ++k)
117 unique_it.insert(std::make_pair(bin.
str(),1));
121 for(
typename std::unordered_map<std::string,int>::const_iterator k=unique_it.begin(); k != unique_it.end(); ++k)
126 keys_.push_back(key);
135 for(
int i=0; i < dbs_.size(); ++i)
151 for(
int i=0; i < dbs_.size(); ++i)
153 ret = dbs_[i]->exist(key);
171 if (dbs_.size() == 0)
175 ret = dbs_[0]->getUserdata(user_data);
189 std::vector< MapObjectDisk<K,V>* > dbs_;
Binary buffer input class.
Binary buffer output class.
std::string str() const
Return entire buffer as a string.
Class that holds multiple DBs. Can only be used in a read-only mode.
void open(const std::vector< std::string > &files)
Open files.
bool exist(const K &key) const
int getDebug() const
Get debugging level.
~MapObjectDiskMultiple()
Finalizes object.
void keys(std::vector< K > &keys_) const
int get(const K &key, V &val) const
void setDebug(int level)
Set debugging level.
int getUserdata(std::string &user_data) const
bool fileExists(const std::vector< std::string > &files) const
Check if a DB file exists before opening.
void close()
Close the files.
MapObjectDiskMultiple()
Empty constructor.
void write(BinaryWriter &bin, const std::string &output)
void read(BinaryReader &bin, std::string &input, size_t maxBytes)
Yet another random number generator.
A Map Object that works lazily from Disk.