-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathline_sender_cpp_example_auth_tls.cpp
90 lines (77 loc) · 2.7 KB
/
line_sender_cpp_example_auth_tls.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
#include <questdb/ingress/line_sender.hpp>
#include <iostream>
using namespace std::literals::string_view_literals;
using namespace questdb::ingress::literals;
static bool example(
std::string_view host,
std::string_view port)
{
try
{
auto sender = questdb::ingress::line_sender::from_conf(
"tcps::addr=" + std::string{host} + ":" + std::string{port} + ";"
"username=admin;"
"token=5UjEMuA0Pj5pjK8a-fa24dyIf-Es5mYny3oE_Wmus48;"
"token_x=fLKYEaoEb9lrn3nkwLDA-M_xnuFOdSt9y0Z7_vWSHLU;"
"token_y=Dt5tbS1dEDMSYfym3fgMv0B99szno-dFc1rYF9t0aac;");
// We prepare all our table names and column names in advance.
// If we're inserting multiple rows, this allows us to avoid
// re-validating the same strings over and over again.
const auto table_name = "cpp_trades_auth_tls"_tn;
const auto symbol_name = "symbol"_cn;
const auto side_name = "side"_cn;
const auto price_name = "price"_cn;
const auto amount_name = "amount"_cn;
questdb::ingress::line_sender_buffer buffer;
buffer
.table(table_name)
.symbol(symbol_name, "ETH-USD"_utf8)
.symbol(side_name, "sell"_utf8)
.column(price_name, 2615.54)
.column(amount_name, 0.00044)
.at(questdb::ingress::timestamp_nanos::now());
// To insert more records, call `buffer.table(..)...` again.
sender.flush(buffer);
// It's recommended to keep a timer and/or maximum buffer size to flush
// the buffer periodically with any accumulated records.
return true;
}
catch (const questdb::ingress::line_sender_error& err)
{
std::cerr
<< "Error running example: "
<< err.what()
<< std::endl;
return false;
}
}
static bool displayed_help(int argc, const char* argv[])
{
for (int index = 1; index < argc; ++index)
{
const std::string_view arg{argv[index]};
if ((arg == "-h"sv) || (arg == "--help"sv))
{
std::cerr
<< "Usage:\n"
<< "line_sender_c_example: CA_PATH [HOST [PORT]]\n"
<< " HOST: ILP host (defaults to \"localhost\").\n"
<< " PORT: ILP port (defaults to \"9009\")."
<< std::endl;
return true;
}
}
return false;
}
int main(int argc, const char* argv[])
{
if (displayed_help(argc, argv))
return 0;
auto host = "localhost"sv;
if (argc >= 2)
host = std::string_view{argv[1]};
auto port = "9009"sv;
if (argc >= 3)
port = std::string_view{argv[2]};
return !example(host, port);
}