/* This file is part of cpp-ethereum. cpp-ethereum is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. cpp-ethereum is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with cpp-ethereum. If not, see . */ /** @file WhisperDB.cpp * @author Vladislav Gluhovsky * @date July 2015 */ #include #include #include #include #include #include #include #include #include "WhisperDB.h" using namespace std; using namespace dev; using namespace dev::shh; WhisperDB::WhisperDB() { string path = dev::getDataDir(); boost::filesystem::create_directories(path); ldb::Options op; op.create_if_missing = true; op.max_open_files = 256; ldb::DB::Open(op, path + "/whisper", &m_db); } WhisperDB::~WhisperDB() { delete m_db; } bool WhisperDB::insert(dev::h256 const& _key, string const& _value) { string s = _key.hex(); string cropped = s.substr(s.size() - 8); leveldb::Status status = m_db->Put(m_writeOptions, s, _value); if (status.ok()) cdebug << "Whisper DB put:" << cropped << _value; else cdebug << "Whisper DB put failed:" << status.ToString() << "key:" << cropped; return status.ok(); } string WhisperDB::lookup(dev::h256 const& _key) const { string ret; string s = _key.hex(); string cropped = s.substr(s.size() - 8); leveldb::Status status = m_db->Get(m_readOptions, s, &ret); if (status.ok()) cdebug << "Whisper DB get:" << cropped << ret; else cdebug << "Whisper DB get failed:" << status.ToString() << "key:" << cropped; return ret; } bool WhisperDB::kill(dev::h256 const& _key) { string s = _key.hex(); string cropped = s.substr(s.size() - 8); leveldb::Status status = m_db->Delete(m_writeOptions, s); if (status.ok()) cdebug << "Whisper DB erase:" << cropped; else cdebug << "Whisper DB erase failed:" << status.ToString() << "key:" << cropped; return status.ok(); }