Skip to content

Commit 758cb3a

Browse files
committed
Added Abseil lib.
Replaced all chrono time with absl.
1 parent 2928279 commit 758cb3a

21 files changed

+73
-96
lines changed

.clangd

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
---
2-
32
Diagnostics:
4-
UnusedIncludes: Strict
3+
UnusedIncludes: Strict

conanfile.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
[requires]
2+
abseil/20220623.0
23
aws-sdk-cpp/1.9.234
34
cli11/2.2.0
45
cpprestsdk/2.10.18
@@ -19,10 +20,11 @@ openssl/1.1.1q
1920
zlib/1.2.12
2021

2122
[options]
22-
aws-sdk-cpp:dynamodb=True
23+
absl:shared=False
2324

2425
aws-sdk-cpp:access-management=False
2526
aws-sdk-cpp:cognito-identity=False
27+
aws-sdk-cpp:dynamodb=True
2628
aws-sdk-cpp:iam=False
2729
aws-sdk-cpp:identity-management=False
2830
aws-sdk-cpp:kms=False

include/app/docker_test/common/app_dt_json_user_conversions.h

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#ifndef STONKS_APP_DOCKER_TEST_COMMON_APP_DT_JSON_USER_CONVERSIONS_H_
22
#define STONKS_APP_DOCKER_TEST_COMMON_APP_DT_JSON_USER_CONVERSIONS_H_
33

4+
#include <absl/time/time.h>
5+
46
#include "app_dt_types.h"
57
#include "cpp_polymorphic_value.h"
68
#include "network_i_json.h"
@@ -9,6 +11,10 @@ namespace stonks::network {
911
template <typename T>
1012
[[nodiscard]] auto ParseFromJson(const IJson &json) -> T;
1113

14+
template <>
15+
[[nodiscard]] auto ParseFromJson(const IJson &json) -> absl::Time;
16+
[[nodiscard]] auto ConvertToJson(absl::Time value) -> cpp::Pv<IJson>;
17+
1218
template <>
1319
[[nodiscard]] auto ParseFromJson(const IJson &json)
1420
-> app::dt::SymbolPriceRecord;

include/app/docker_test/common/app_dt_types.h

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
#ifndef STONKS_APP_DOCKER_TEST_COMMON_APP_DT_TYPES_H_
22
#define STONKS_APP_DOCKER_TEST_COMMON_APP_DT_TYPES_H_
33

4-
#include <chrono>
4+
#include <absl/time/time.h>
55

6-
#include "cpp_chrono.h"
76
#include "cpp_typed_struct.h"
87

98
namespace stonks::app::dt {
@@ -12,7 +11,7 @@ struct Symbol : public cpp::TypedStruct<std::string> {};
1211
struct Price : public cpp::TypedStruct<double> {};
1312

1413
struct SymbolPriceRecord {
15-
cpp::TimePoint time{};
14+
absl::Time time{};
1615
Symbol symbol{};
1716
Price price{};
1817
};

include/cpp/aliases/cpp_chrono.h

-22
This file was deleted.

include/network/network_json_common_conversions.h

-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include <optional>
99
#include <vector>
1010

11-
#include "cpp_chrono.h"
1211
#include "cpp_concepts.h" // IWYU pragma: keep
1312
#include "cpp_message_exception.h"
1413
#include "cpp_optional.h"
@@ -28,10 +27,6 @@ template <>
2827
[[nodiscard]] auto ParseFromJson(const IJson &json) -> cpp::MessageException;
2928
[[nodiscard]] auto ConvertToJson(const std::exception &value) -> cpp::Pv<IJson>;
3029

31-
template <>
32-
[[nodiscard]] auto ParseFromJson(const IJson &json) -> cpp::TimePoint;
33-
[[nodiscard]] auto ConvertToJson(cpp::TimePoint value) -> cpp::Pv<IJson>;
34-
3530
template <cpp::IsTypedStruct T>
3631
requires Parsable<typename T::ValueType>
3732
[[nodiscard]] auto ParseFromJson(const IJson &json) -> T {

include/stonks/stonks_types.h

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
#ifndef STONKS_STONKS_STONKS_TYPES_H_
22
#define STONKS_STONKS_STONKS_TYPES_H_
33

4-
#include <chrono>
4+
#include <absl/time/time.h>
5+
56
#include <string>
67

78
#include "cpp_optional.h"
@@ -28,7 +29,7 @@ struct SymbolInfo {
2829

2930
struct SymbolPriceTick {
3031
SymbolName symbol{};
31-
std::chrono::milliseconds time{};
32+
absl::Time time{};
3233
double buy_price{};
3334
double sell_price{};
3435

@@ -42,8 +43,8 @@ struct SymbolPriceTick {
4243
};
4344

4445
struct Period {
45-
cpp::Opt<std::chrono::milliseconds> start_time{};
46-
cpp::Opt<std::chrono::milliseconds> end_time{};
46+
cpp::Opt<absl::Time> start_time{};
47+
cpp::Opt<absl::Time> end_time{};
4748
};
4849
} // namespace stonks
4950

src/app/docker_test/common/CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
find_package(absl REQUIRED)
2+
13
add_library(libdockertestcommon
24
app_dt_json_user_conversions.cc
35
app_dt_pds_app_endpoints.cc
@@ -12,6 +14,8 @@ target_include_directories(libdockertestcommon
1214
)
1315

1416
target_link_libraries(libdockertestcommon
17+
PUBLIC absl::absl
18+
1519
PRIVATE libapp
1620
PRIVATE libnetwork
1721
)

src/app/docker_test/common/app_dt_json_user_conversions.cc

+12
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
#include "app_dt_json_user_conversions.h"
22

3+
#include <cstdint>
4+
5+
#include "network_json_basic_conversions.h"
36
#include "network_json_conversions_facades.h"
47

58
namespace stonks::network {
9+
template <>
10+
auto ParseFromJson(const IJson &json) -> absl::Time {
11+
return absl::FromUnixMillis(ParseFromJson<int64_t>(json));
12+
}
13+
14+
auto ConvertToJson(absl::Time value) -> cpp::Pv<IJson> {
15+
return ConvertToJson(absl::ToUnixMillis(value));
16+
}
17+
618
template <>
719
auto ParseFromJson(const IJson &json) -> app::dt::SymbolPriceRecord {
820
return MakeFromJson<app::dt::SymbolPriceRecord>(json, "time", "symbol",

src/app/docker_test/persistent_db_server/app_dt_pds_db.cc

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#include "app_dt_pds_db.h"
22

3+
#include <absl/time/time.h>
4+
35
#include <memory>
46

57
#include "app_dt_pds_tables.h"
6-
#include "cpp_chrono.h"
78
#include "not_null.hpp"
89
#include "sqldb_as_values.h"
910
#include "sqldb_qbf_insert_query_builder.h"
@@ -27,7 +28,7 @@ Db::Db(sqldb::IDb &db, const cpp::NnSp<sqldb::IQueryBuilder> &query_builder)
2728
}()} {}
2829

2930
void Db::InsertSymbolPriceRecord(const SymbolPriceRecord &record) {
30-
insert_symbol_price_record_statement_->Execute(
31-
sqldb::AsValues(record.time.count(), record.symbol, record.price));
31+
insert_symbol_price_record_statement_->Execute(sqldb::AsValues(
32+
absl::ToUnixMillis(record.time), record.symbol, record.price));
3233
}
3334
} // namespace stonks::app::dt::pds

src/app/docker_test/server_to_external_client/app_dt_stec_app.cc

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#include "app_dt_stec_app.h"
22

3+
#include <absl/time/clock.h>
4+
35
#include <utility>
46

57
#include "app_dt_stec_binance_types.h"
6-
#include "cpp_chrono.h"
78

89
namespace stonks::app::dt::stec {
910
App::App(binance::Client binance_client, PdsAppClient pds_app_client)
@@ -13,9 +14,8 @@ App::App(binance::Client binance_client, PdsAppClient pds_app_client)
1314
auto App::GetAveragePrice(Symbol symbol) const -> Price {
1415
auto price = Price{binance_client_.GetCurrentAveragePrice(symbol).price};
1516

16-
pds_app_client_.RecordSymbolPrice({.time = cpp::GetCurrentTime(),
17-
.symbol = std::move(symbol),
18-
.price = price});
17+
pds_app_client_.RecordSymbolPrice(
18+
{.time = absl::Now(), .symbol = std::move(symbol), .price = price});
1919

2020
return price;
2121
}

src/cli/cli_run_scope.cc

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@
1212

1313
namespace stonks::cli {
1414
RunScope::RunScope(cpp::NnSp<CLI::App> app) : app_{std::move(app)} {
15-
fmt::print(R"(Started: {}
15+
fmt::print(R"(Starting: {}
1616
)",
1717
app_->get_name());
1818
}
1919

2020
RunScope::~RunScope() {
21+
fmt::print(R"(Started. Waiting for interrupt.
22+
)");
2123
WaitForInterrupt();
2224
fmt::print(R"(Stopped: {}
2325
)",

src/cpp/CMakeLists.txt

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ find_package(Microsoft.GSL REQUIRED)
22
find_package(polymorphic_value REQUIRED)
33

44
add_library(libcpp
5-
aliases/cpp_chrono.cc
65
cpp_message_exception.cc
76
)
87

src/cpp/aliases/cpp_chrono.cc

-8
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
#include "network_json_common_conversions.h"
22

3-
#include <cstdint>
43
#include <string>
54
#include <string_view>
65

7-
#include "cpp_chrono.h"
86
#include "network_json_basic_conversions.h"
97
#include "network_json_conversions_facades.h"
108

@@ -22,13 +20,4 @@ auto ParseFromJson(const IJson &json) -> cpp::MessageException {
2220
auto ConvertToJson(const std::exception &value) -> cpp::Pv<IJson> {
2321
return BuildJsonFrom("message", value.what());
2422
}
25-
26-
template <>
27-
auto ParseFromJson(const IJson &json) -> cpp::TimePoint {
28-
return cpp::TimePoint{ParseFromJson<int64_t>(json)};
29-
}
30-
31-
auto ConvertToJson(cpp::TimePoint value) -> cpp::Pv<IJson> {
32-
return ConvertToJson(value.count());
33-
}
3423
} // namespace stonks::network

src/network/network_rest_client_request_builder.cc

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#include "network_rest_client_request_builder.h"
22

3-
#include <polymorphic_value.h>
4-
53
#include <gsl/assert>
64
#include <string>
75
#include <tuple>
6+
#include <type_traits>
87
#include <utility>
98

109
#include "cpp_move_if.h"

src/stonks/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
find_package(absl REQUIRED)
12
find_package(range-v3 REQUIRED)
23

34
add_library(libstonks
@@ -19,5 +20,6 @@ target_include_directories(libstonks
1920
target_link_libraries(libstonks
2021
PRIVATE librestsdk
2122
PRIVATE libsqlite
23+
PRIVATE absl::absl
2224
PRIVATE range-v3::range-v3
2325
)

src/stonks/db/stonks_db.cc

+10-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "stonks_db.h"
22

3-
#include <chrono>
3+
#include <absl/time/time.h>
4+
45
#include <compare>
56
#include <limits>
67
#include <memory>
@@ -33,22 +34,20 @@
3334

3435
namespace stonks {
3536
namespace {
36-
[[nodiscard]] auto GetStartTime(const Period *period)
37-
-> std::chrono::milliseconds {
37+
[[nodiscard]] auto GetStartTime(const Period *period) -> absl::Time {
3838
if ((period != nullptr) && period->start_time.has_value()) {
3939
return *period->start_time;
4040
}
4141

42-
return std::chrono::milliseconds::min();
42+
return absl::InfinitePast();
4343
}
4444

45-
[[nodiscard]] auto GetEndTime(const Period *period)
46-
-> std::chrono::milliseconds {
45+
[[nodiscard]] auto GetEndTime(const Period *period) -> absl::Time {
4746
if ((period != nullptr) && period->end_time.has_value()) {
4847
return *period->end_time;
4948
}
5049

51-
return std::chrono::milliseconds::max();
50+
return absl::InfiniteFuture();
5251
}
5352

5453
[[nodiscard]] auto SymbolLess(const SymbolInfo &left, const SymbolInfo &right)
@@ -185,8 +184,8 @@ auto Db::SelectSymbolPriceTicks(const SymbolName *symbol, const Period *period,
185184
? &prepared_statements_->SelectSymbolPriceTicks()
186185
: &prepared_statements_->SelectPriceTicks();
187186
auto values = [this, symbol, period, limit]() {
188-
auto values = sqldb::AsValues(GetStartTime(period).count(),
189-
GetEndTime(period).count());
187+
auto values = sqldb::AsValues(absl::ToUnixMillis(GetStartTime(period)),
188+
absl::ToUnixMillis(GetEndTime(period)));
190189

191190
if (symbol != nullptr) {
192191
values.emplace_back(cache_.GetSymbolIdBySymbol(*symbol));
@@ -212,7 +211,7 @@ auto Db::SelectSymbolPriceTicks(const SymbolName *symbol, const Period *period,
212211
for (auto i = 0; i < num_rows; ++i) {
213212
price_ticks.emplace_back(SymbolPriceTick{
214213
.symbol = cache_.GetSymbolBySymbolId(symbol_id[i].GetInt64()),
215-
.time = std::chrono::milliseconds{time[i].GetInt64()},
214+
.time = absl::FromUnixMillis(time[i].GetInt64()),
216215
.buy_price = buy_price[i].GetDouble(),
217216
.sell_price = sell_price[i].GetDouble()});
218217
}
@@ -223,7 +222,7 @@ auto Db::SelectSymbolPriceTicks(const SymbolName *symbol, const Period *period,
223222
void Db::InsertSymbolPriceTick(const SymbolPriceTick &symbol_price_tick) {
224223
prepared_statements_->InsertPriceTick().Execute(sqldb::AsValues(
225224
cache_.GetSymbolIdBySymbol(symbol_price_tick.symbol),
226-
symbol_price_tick.time.count(), symbol_price_tick.buy_price,
225+
absl::ToUnixMillis(symbol_price_tick.time), symbol_price_tick.buy_price,
227226
symbol_price_tick.sell_price));
228227
}
229228

test/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
find_package(absl REQUIRED)
12
find_package(fmt REQUIRED)
23
find_package(function2 REQUIRED)
34
find_package(GTest REQUIRED)
@@ -46,6 +47,7 @@ target_link_libraries(unittests
4647
PRIVATE libspdlog
4748
PRIVATE libsqlite
4849
PRIVATE libstonks
50+
PRIVATE absl::absl
4951
PRIVATE fmt::fmt
5052
PRIVATE function2::function2
5153
PRIVATE magic_enum::magic_enum

0 commit comments

Comments
 (0)