2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
43#include "core/SNodeC.h"
44#include "core/timer/Timer.h"
45#include "database/mariadb/MariaDBClient.h"
46#include "database/mariadb/MariaDBCommandSequence.h"
47#include "utils/Config.h"
49#ifndef DOXYGEN_SHOULD_SKIP_THIS
51#include "log/Logger.h"
60int main(
int argc,
char* argv[]) {
61 utils::Config::addStringOption(
"--db-host",
"Hostname of IP-Address of Server",
"[hostname|IP-address]",
"localhost",
true);
63 core::SNodeC::init(argc, argv);
66 .hostname = utils::Config::getStringOptionValue(
"--db-host"),
68 .password =
"pentium5",
71 .socket =
"/run/mysqld/mysqld.sock",
87 "DELETE FROM `snodec`",
88 [&db1](
void) ->
void {
89 VLOG(0) <<
"********** OnQuery 0;";
91 [](my_ulonglong affectedRows) ->
void {
92 VLOG(0) <<
"********** AffectedRows 1: " << affectedRows;
94 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
95 VLOG(0) <<
"Error 1: " << errorString <<
" : " << errorNumber;
98 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
99 VLOG(0) <<
"********** Error 0: " << errorString <<
" : " << errorNumber;
103 "INSERT INTO `snodec`(`username`, `password`) VALUES ('Annett','Hallo')",
104 [&db1](
void) ->
void {
105 VLOG(0) <<
"********** OnQuery 1: ";
107 [](my_ulonglong affectedRows) ->
void {
108 VLOG(0) <<
"********** AffectedRows 2: " << affectedRows;
110 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
111 VLOG(0) <<
"********** Error 2: " << errorString <<
" : " << errorNumber;
114 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
115 VLOG(0) <<
"********** Error 1: " << errorString <<
" : " << errorNumber;
118 "SELECT * FROM snodec",
119 [&r](
const MYSQL_ROW row) ->
void {
120 if (row !=
nullptr) {
121 VLOG(0) <<
"********** Row Result 2: " << row[0] <<
" : " << row[1];
124 VLOG(0) <<
"********** Row Result 2: " << r;
127 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
128 VLOG(0) <<
"********** Error 2: " << errorString <<
" : " << errorNumber;
131 "SELECT * FROM snodec",
132 [&r](
const MYSQL_ROW row) ->
void {
133 if (row !=
nullptr) {
134 VLOG(0) <<
"********** Row Result 2: " << row[0] <<
" : " << row[1];
137 VLOG(0) <<
"********** Row Result 2: " << r;
140 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
141 VLOG(0) <<
"********** Error 2: " << errorString <<
" : " << errorNumber;
147 "SELECT * FROM snodec",
148 [](
const MYSQL_ROW row) ->
void {
149 if (row !=
nullptr) {
150 VLOG(0) <<
"Row Result 3: " << row[0] <<
" : " << row[1];
152 VLOG(0) <<
"Row Result 3:";
155 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
156 VLOG(0) <<
"Error 3: " << errorString <<
" : " << errorNumber;
163 "SELECT * FROM snodec",
164 [&db2, &r1, &r2](
const MYSQL_ROW row) ->
void {
165 if (row !=
nullptr) {
166 VLOG(0) <<
"Row Result 4: " << row[0] <<
" : " << row[1];
168 VLOG(0) <<
"Row Result 4:";
171 "SELECT * FROM snodec",
172 [&db2, &r1, &r2](
const MYSQL_ROW row) ->
void {
173 if (row !=
nullptr) {
174 VLOG(0) <<
"Row Result 5: " << row[0] <<
" : " << row[1];
176 VLOG(0) <<
"Row Result 5:";
178 core::timer::Timer dbTimer1 = core::timer::Timer::intervalTimer(
179 [&db2, &r1](
const std::function<
void()>& stop) ->
void {
181 VLOG(0) <<
"Tick 2: " << i++;
185 "SELECT * FROM snodec",
186 [&r1](
const MYSQL_ROW row) ->
void {
187 if (row !=
nullptr) {
188 VLOG(0) <<
"Row Result 6: " << row[0] <<
" : " << row[1];
191 VLOG(0) <<
"Row Result 6: " << r1;
194 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
195 VLOG(0) <<
"Error 6: " << errorString <<
" : " << errorNumber;
201 core::timer::Timer dbTimer2 = core::timer::Timer::intervalTimer(
202 [&db2, &r2](
const std::function<
void()>& stop) ->
void {
204 VLOG(0) <<
"Tick 0.7: " << i++;
208 "SELECT * FROM snodec",
209 [&db2, &r2](
const MYSQL_ROW row) ->
void {
210 if (row !=
nullptr) {
211 VLOG(0) <<
"Row Result 7: " << row[0] <<
" : " << row[1];
214 VLOG(0) <<
"Row Result 7: " << r2;
216 [](
unsigned int fieldCount) ->
void {
217 VLOG(0) <<
"************ FieldCount ************ = " << fieldCount;
219 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
220 VLOG(0) <<
"Error 7: " << errorString <<
" : " << errorNumber;
224 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
225 VLOG(0) <<
"Error 7: " << errorString <<
" : " << errorNumber;
229 [](
unsigned int fieldCount) ->
void {
230 VLOG(0) <<
"************ FieldCount ************ = " << fieldCount;
232 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
233 VLOG(0) <<
"Error 7: " << errorString <<
" : " << errorNumber;
239 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
240 VLOG(0) <<
"Error 5: " << errorString <<
" : " << errorNumber;
244 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
245 VLOG(0) <<
"Error 4: " << errorString <<
" : " << errorNumber;
248 core::timer::Timer dbTimer = core::timer::Timer::intervalTimer(
249 [&db2](
const std::function<
void()>& stop) ->
void {
251 VLOG(0) <<
"Tick 0.1: " << i++;
254 VLOG(0) <<
"Stop Stop";
259 db2.startTransactions(
261 VLOG(0) <<
"Transactions activated 10:";
263 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
264 VLOG(0) <<
"Error 8: " << errorString <<
" : " << errorNumber;
267 "INSERT INTO `snodec`(`username`, `password`) VALUES ('Annett','Hallo')",
268 [&db2, j](
void) ->
void {
269 VLOG(0) <<
"Inserted 10: " << j;
271 [](my_ulonglong affectedRows) ->
void {
272 VLOG(0) <<
"AffectedRows 11: " << affectedRows;
274 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
275 VLOG(0) <<
"Error 11: " << errorString <<
" : " << errorNumber;
278 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
279 VLOG(0) <<
"Error 10: " << errorString <<
" : " << errorNumber;
284 VLOG(0) <<
"Rollback success 11";
286 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
287 VLOG(0) <<
"Error 12: " << errorString <<
" : " << errorNumber;
291 "INSERT INTO `snodec`(`username`, `password`) VALUES ('Annett','Hallo')",
292 [&db2, j](
void) ->
void {
293 VLOG(0) <<
"Inserted 13: " << j;
295 [](my_ulonglong affectedRows) ->
void {
296 VLOG(0) <<
"AffectedRows 14: " << affectedRows;
298 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
299 VLOG(0) <<
"Error 14: " << errorString <<
" : " << errorNumber;
302 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
303 VLOG(0) <<
"Error 13: " << errorString <<
" : " << errorNumber;
308 VLOG(0) <<
"Commit success 15";
310 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
311 VLOG(0) <<
"Error 15: " << errorString <<
" : " << errorNumber;
315 "SELECT COUNT(*) FROM snodec",
316 [&db2, j, stop](
const MYSQL_ROW row) ->
void {
317 if (row !=
nullptr) {
318 VLOG(0) <<
"Row Result count(*) 16: " << row[0];
319 if (std::atoi(row[0]) != j + 1) {
320 VLOG(0) <<
"Wrong number of rows 16: " << std::atoi(row[0]) <<
" != " << j + 1;
324 VLOG(0) <<
"Row Result count(*) 16: no result:";
326 [](
unsigned int fieldCount) ->
void {
327 VLOG(0) <<
"************ FieldCount ************ = " << fieldCount;
329 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
330 VLOG(0) <<
"Error 7: " << errorString <<
" : " << errorNumber;
334 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
335 VLOG(0) <<
"Error 16: " << errorString <<
" : " << errorNumber;
340 VLOG(0) <<
"Transactions deactivated 17";
342 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
343 VLOG(0) <<
"Error 17: " << errorString <<
" : " << errorNumber;
350 return core::SNodeC::start();
MariaDBClient(const MariaDBConnectionDetails &details)
int main(int argc, char *argv[])