From d2cfd3eeeb8b6af3b7ccda01e6c1ac581a2df398 Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Thu, 13 Jan 2022 06:54:09 +0000 Subject: [PATCH] Added time parsing --- json.cpp | 24 ++++++++++++++++++------ 1 files changed, 18 insertions(+), 6 deletions(-) diff --git a/json.cpp b/json.cpp index ea1016a..a1b0a7a 100644 --- a/json.cpp +++ b/json.cpp @@ -48,7 +48,8 @@ mapOrder = {{"BUY", book::Buy}, {"SELL", book::Sell}}; mapTrade = {{"BUY_AGGRESSOR", BUY_AGGRESSOR}, - {"SELL_AGGRESSOR", SELL_AGGRESSOR}}; + {"SELL_AGGRESSOR", SELL_AGGRESSOR}, + {"BROKER_TRADE", BROKER_TRADE}}; mapOrderSide = {{book::Buy, "BUY"}, {book::Sell, "SELL"}}; } @@ -64,6 +65,8 @@ BrokerAck* brokerAck(rapidjson::Value& d); BrokerConfirm* brokerCon(rapidjson::Value& d); ErrorMessage* error(rapidjson::Value& d); + +std::chrono::seconds parseTime(std::string& s); std::queue<Message*> parse(std::string& str) { @@ -125,12 +128,21 @@ return out; } +std::chrono::seconds parseTime(std::string& s) +{ + return std::chrono::hours{std::stoi(s.substr(0, 4)) * 24 * 30 * 12} + + std::chrono::hours{std::stoi(s.substr(5, 2)) * 24 * 30} + + std::chrono::hours{std::stoi(s.substr(8, 2)) * 24} + + std::chrono::hours{std::stoi(s.substr(11, 2))} + + std::chrono::minutes{std::stoi(s.substr(14, 2))} + + std::chrono::hours{std::stoi(s.substr(16, 5))}; +} + AnnounceMessage* announce(rapidjson::Value& d) { - // std::stringstream expiryStream(d["expiry"].GetString()); + std::string es = d["expiry"].GetString(); std::chrono::nanoseconds exp_time(0); - // expiryStream >> - // date::parse("%Y-%m-%f %H:%M%z", exp_time); // Parsing is broken + exp_time = parseTime(es); return new AnnounceMessage( mapTypes[d["type"].GetString()], d["product"].GetString(), d["stationId"].GetInt(), d["stationName"].GetString(), @@ -141,9 +153,9 @@ SettleMessage* settle(rapidjson::Value& d) { - // std::stringstream expiryStream(d["expiry"].GetString()); std::chrono::nanoseconds exp_time(0); - // expiryStream >> date::parse("%Y-%m-%d %H:%M%z", exp_time); + std::string es = d["expiry"].GetString(); + exp_time = parseTime(es); return new SettleMessage( mapTypes[d["type"].GetString()], d["product"].GetString(), d["stationName"].GetString(), exp_time, d["price"].GetDouble(), -- Gitblit v1.9.3