blob: 2168a58e76496d8f3824390421e7b19a8c279021 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#pragma once
#include "XQueue.h"
#include "leveldb/db.h"
#include <atomic>
#include <chrono>
namespace vagt
{
namespace queue
{
class XDiskQueue : public XQueue
{
public:
XDiskQueue(const std::string& path);
~XDiskQueue();
virtual bool empty() override;
virtual XErrorCode push(const std::string & val) override;
virtual void pop() override;
virtual std::string front() override;
private:
std::string createKey();
void tryCompact(const std::string& key);
std::atomic<long> keyId_;
char key[32];
std::chrono::system_clock::time_point compactTime_;
leveldb::DB* db_;
leveldb::ReadOptions opt_;
leveldb::Iterator* it_;
};
}
}
|