-
Notifications
You must be signed in to change notification settings - Fork 0
/
api_example.cpp
93 lines (83 loc) · 2.02 KB
/
api_example.cpp
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "memcx.h"
#include <chrono>
#include <future>
#include <iostream>
using namespace std;
int KEYS = 10;
void SetSync() {
cout << "SetSync: ";
try {
memcx::SetSync("asdf", "hello");
for (int i = 0; i < KEYS; ++i) {
string kv = to_string(i);
memcx::SetSync(kv, kv);
}
cout << "set " << KEYS << " keys\n";
} catch(exception& e) {
cout << "SetSync failed: " << e.what() << endl;
}
}
void SetAsync() {
cout << "SetAsync: ";
promise<void> set_promise;
auto set_future = set_promise.get_future();
memcx::SetAsync("aysnc", "value",
[&set_promise](const std::string err) {
if (err.empty()) {
set_promise.set_value();
} else {
set_promise.set_exception(make_exception_ptr(runtime_error(err)));
}
});
try {
set_future.get();
cout << "returned\n";
} catch(exception& e) {
cout << "failed: " << e.what() << endl;
}
}
void GetSync() {
cout << "GetSync:\n";
try {
string asdf = memcx::GetSync("asdf");
cout << "asdf=" << asdf << endl;
for (int i = 0; i < KEYS; ++i) {
string kv = to_string(i);
cout << kv << "=" << memcx::GetSync(kv) << endl;
}
} catch(exception& e) {
cout << "failed: " << e.what() << endl;
}
}
void GetAsync() {
cout << "GetAync: ";
promise<string> get_promise;
auto get_future = get_promise.get_future();
memcx::GetAsync("aysnc",
[&get_promise](const std::string& value, const std::string err) {
if (err.empty()) {
get_promise.set_value(value);
} else {
get_promise.set_exception(make_exception_ptr(runtime_error(err)));
}
});
try {
cout << "async=" << get_future.get() << endl;
} catch(exception& e) {
cout << "failed: " << e.what() << endl;
}
}
int main(const int argc, const char* argv[]) {
try {
memcx::Init("127.0.0.1");
SetSync();
SetAsync();
GetSync();
GetAsync();
cout << "success\n";
} catch(exception& e) {
cout << "exception: " << e.what() << endl;
}
memcx::Shutdown();
return 0;
}