本文整理汇总了C++中leveldb::Status类的典型用法代码示例。如果您正苦于以下问题:C++ Status类的具体用法?C++ Status怎么用?C++ Status使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Status类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: write
bool LevelDBDatabase::write(LevelDBWriteBatch& writeBatch)
{
leveldb::WriteOptions writeOptions;
writeOptions.sync = true;
const leveldb::Status s = m_db->Write(writeOptions, writeBatch.m_writeBatch.get());
if (s.ok())
return true;
LOG_ERROR("LevelDB write failed: %s", s.ToString().c_str());
return false;
}
示例2: HandleError
void HandleError(const leveldb::Status &status) throw(leveldb_error) {
if (status.ok())
return;
if (status.IsCorruption())
throw leveldb_error("Database corrupted");
if (status.IsIOError())
throw leveldb_error("Database I/O error");
if (status.IsNotFound())
throw leveldb_error("Database entry missing");
throw leveldb_error("Unknown database error");
}
示例3: makeSlice
bool LevelDBDatabase::put(const LevelDBSlice& key, const Vector<char>& value)
{
leveldb::WriteOptions writeOptions;
writeOptions.sync = true;
const leveldb::Status s = m_db->Put(writeOptions, makeSlice(key), makeSlice(value));
if (s.ok())
return true;
LOG_ERROR("LevelDB put failed: %s", s.ToString().c_str());
return false;
}
示例4: HandleError
void HandleError(const leveldb::Status &status) noexcept(false) {
if (status.ok())
return;
LogPrintf("%s\n", status.ToString());
if (status.IsCorruption())
throw leveldb_error("Database corrupted");
if (status.IsIOError())
throw leveldb_error("Database I/O error");
if (status.IsNotFound())
throw leveldb_error("Database entry missing");
throw leveldb_error("Unknown database error");
}
示例5: makeSlice
bool LevelDBDatabase::get(const LevelDBSlice& key, Vector<char>& value)
{
std::string result;
leveldb::ReadOptions readOptions;
readOptions.verify_checksums = true; // FIXME: Disable this if the performance impact is too great.
const leveldb::Status s = m_db->Get(readOptions, makeSlice(key), &result);
if (s.ok()) {
value = makeVector(result);
return true;
}
if (s.IsNotFound())
return false;
LOG_ERROR("LevelDB get failed: %s", s.ToString().c_str());
return false;
}
示例6: make_status_tuple
extern ERL_NIF_TERM make_status_tuple(ErlNifEnv* env, leveldb::Status status){
const char* type;
if(status.IsNotFound()){
type = "not_found";
}
else if(status.IsCorruption()){
type = "corruption";
}
else if(status.IsIOError()){
type = "io_error";
}
else{
type = "unspecified";
}
const char* stString = status.ToString().c_str();
return enif_make_tuple2(env, enif_make_atom(env, "error"),
enif_make_atom(env, type));
}
示例7: throw
void LevelDB::checkDbError(leveldb::Status aStatus) throw(DbException) {
if (aStatus.ok())
return;
if (aStatus.IsNotFound())
return;
string ret = Text::toUtf8(aStatus.ToString());
#ifdef _WIN32
if (aStatus.IsCorruption() || aStatus.IsIOError()) {
if (ret.back() != '.')
ret += ".";
ret += " " + STRING_F(DB_ERROR_HINT, STRING(HASHING));
}
#endif
throw DbException(ret);
}
示例8: adoptPtr
PassOwnPtr<LevelDBDatabase> LevelDBDatabase::open(const String& fileName, const LevelDBComparator* comparator)
{
OwnPtr<ComparatorAdapter> comparatorAdapter = adoptPtr(new ComparatorAdapter(comparator));
leveldb::Options options;
options.comparator = comparatorAdapter.get();
options.create_if_missing = true;
options.paranoid_checks = true;
leveldb::DB* db;
const leveldb::Status s = leveldb::DB::Open(options, fileName.utf8().data(), &db);
if (!s.ok()) {
LOG_ERROR("Failed to open LevelDB database from %s: %s", fileName.ascii().data(), s.ToString().c_str());
return nullptr;
}
OwnPtr<LevelDBDatabase> result = adoptPtr(new LevelDBDatabase);
result->m_db = adoptPtr(db);
result->m_comparatorAdapter = comparatorAdapter.release();
result->m_comparator = comparator;
return result.release();
}
示例9: lock
bool KeyValueStorage::process_status(const leveldb::Status & status, bool reopen) {
if (status.ok()) {
return true;
}
std::lock_guard<Mutex> lock(mutex);
error = status.ToString();
if (status.IsCorruption()) {
if (++repairs > 2)
return false;
errorstream << "Trying to repair database [" << db_name << "] try=" << repairs << " [" << error << "]" << std::endl;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status_repair;
try {
status_repair = leveldb::RepairDB(fullpath, options);
} catch (std::exception &e) {
errorstream << "First repair [" << db_name << "] exception [" << e.what() << "]" << std::endl;
auto options_repair = options;
options_repair.paranoid_checks = true;
try {
status_repair = leveldb::RepairDB(fullpath, options_repair);
} catch (std::exception &e) {
errorstream << "Second repair [" << db_name << "] exception [" << e.what() << "]" << std::endl;
}
}
if (!status.ok()) {
error = status.ToString();
errorstream << "Repair [" << db_name << "] fail [" << error << "]" << std::endl;
delete db;
db = nullptr;
return false;
}
if (reopen) {
auto status_open = leveldb::DB::Open(options, fullpath, &db);
if (!status_open.ok()) {
error = status_open.ToString();
errorstream << "Trying to reopen database [" << db_name << "] fail [" << error << "]" << std::endl;
delete db;
db = nullptr;
return false;
}
}
}
return status.ok();
}
示例10: CheckStatus
bool CheckStatus(leveldb::Status& status) {
if (!status.ok()) {
std::cerr << status.ToString() << std::endl;
}
return status.ok();
}