コード例 #1
0
ファイル: lmdb_engine.cpp プロジェクト: yuanshankongmeng/ardb
	int LMDBEngine::CommitBatchWrite()
	{
		BatchHolder& holder = m_batch_local.GetValue();
		holder.ReleaseRef();
		if (holder.EmptyRef())
		{
			return FlushWriteBatch(holder);
		}
		return 0;
	}
コード例 #2
0
ファイル: leveldb_engine.cpp プロジェクト: neoecos/ardb
 int LevelDBEngine::CommitBatchWrite()
 {
     ContextHolder& holder = m_context.GetValue();
     holder.ReleaseRef();
     if (holder.EmptyRef())
     {
         return FlushWriteBatch(holder);
     }
     return 0;
 }
コード例 #3
0
ファイル: leveldb_engine.cpp プロジェクト: neoecos/ardb
 int LevelDBEngine::Del(const Slice& key)
 {
     leveldb::Status s = leveldb::Status::OK();
     ContextHolder& holder = m_context.GetValue();
     if (!holder.EmptyRef())
     {
         holder.Del(key);
         if (holder.count >= (uint32) m_cfg.batch_commit_watermark)
         {
             FlushWriteBatch(holder);
         }
     }
     else
     {
         s = m_db->Delete(leveldb::WriteOptions(), LEVELDB_SLICE(key));
     }
     return s.ok() ? 0 : -1;
 }
コード例 #4
0
ファイル: leveldb_engine.cpp プロジェクト: neoecos/ardb
 int LevelDBEngine::Put(const Slice& key, const Slice& value)
 {
     leveldb::Status s = leveldb::Status::OK();
     ContextHolder& holder = m_context.GetValue();
     int ret = 0;
     if (!holder.EmptyRef())
     {
         holder.Put(key, value);
         if (holder.count >= (uint32) m_cfg.batch_commit_watermark)
         {
             FlushWriteBatch(holder);
         }
     }
     else
     {
         s = m_db->Put(leveldb::WriteOptions(), LEVELDB_SLICE(key), LEVELDB_SLICE(value));
         if (!s.ok())
         {
             WARN_LOG("Failed to write data for reason:%s", s.ToString().c_str());
             ret = -1;
         }
     }
     return ret;
 }