From 370d83cf59388a1b4199df288138051468f13349 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Mon, 23 Oct 2023 17:15:12 +0000 Subject: [PATCH 1/3] dev: small fixes --- include/ccapi_cpp/ccapi_macro.h | 3 +++ include/ccapi_cpp/ccapi_util_private.h | 13 +++++++++++++ .../service/ccapi_execution_management_service.h | 10 +++++++--- ...i_execution_management_service_binance_base.h | 16 ++++++++++++++-- ...management_service_binance_derivatives_base.h | 1 + ...pi_execution_management_service_kucoin_base.h | 1 - .../src/common/util/ccapi_util_test.cpp | 5 +++++ .../binance_usds_futures/test.cpp | 3 +++ 8 files changed, 46 insertions(+), 6 deletions(-) diff --git a/include/ccapi_cpp/ccapi_macro.h b/include/ccapi_cpp/ccapi_macro.h index 2cfcdcdb..384e36f6 100644 --- a/include/ccapi_cpp/ccapi_macro.h +++ b/include/ccapi_cpp/ccapi_macro.h @@ -244,6 +244,9 @@ #ifndef CCAPI_END_TIME_SECONDS #define CCAPI_END_TIME_SECONDS "END_TIME_SECONDS" #endif +#ifndef CCAPI_LAST_UPDATED_TIME_SECONDS +#define CCAPI_LAST_UPDATED_TIME_SECONDS "LAST_UPDATED_TIME_SECONDS" +#endif #ifndef CCAPI_BASE_ASSET #define CCAPI_BASE_ASSET "BASE_ASSET" #endif diff --git a/include/ccapi_cpp/ccapi_util_private.h b/include/ccapi_cpp/ccapi_util_private.h index aea41bbc..1f7d88e2 100644 --- a/include/ccapi_cpp/ccapi_util_private.h +++ b/include/ccapi_cpp/ccapi_util_private.h @@ -403,6 +403,19 @@ class UtilTime CCAPI_FINAL { return std::make_pair(std::stoll(milliseconds), 0); } } + static std::string convertMillisecondsStrToSecondsStr(const std::string& milliseconds) { + std::string output; + if (milliseconds.length() >= 4) { + output = milliseconds; + output.insert(milliseconds.length() - 3, 1, '.'); + } else { + output = "0."; + output += std::string(3 - milliseconds.length(), '0'); + output += milliseconds; + output = UtilString::normalizeDecimalString(output); + } + return output; + } static std::pair divideNanoWhole(const std::string& nanoseconds) { return std::make_pair(std::stoll(nanoseconds.substr(0, nanoseconds.length() - 9)), std::stoll(nanoseconds.substr(nanoseconds.length() - 9))); } diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service.h b/include/ccapi_cpp/service/ccapi_execution_management_service.h index 2342d989..308e261c 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service.h @@ -164,8 +164,8 @@ class ExecutionManagementService : public Service { this->eventHandler(event, eventQueuePtr); } } - virtual void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) { + virtual void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) { for (const auto& y : extractionFieldNameMap) { auto it = x.FindMember(y.second.first.c_str()); if (it != x.MemberEnd() && !it->value.IsNull()) { @@ -176,6 +176,10 @@ class ExecutionManagementService : public Service { if (y.first == CCAPI_EM_ORDER_SIDE) { value = UtilString::toLower(value).rfind("buy", 0) == 0 ? CCAPI_EM_ORDER_SIDE_BUY : CCAPI_EM_ORDER_SIDE_SELL; } + auto it2 = conversionMap.find(y.first); + if (it2 != conversionMap.end()) { + value = it2->second(value); + } element.insert(y.first, value); } } @@ -393,7 +397,7 @@ class ExecutionManagementService : public Service { #ifdef CCAPI_LEGACY_USE_WEBSOCKETPP std::map wsConnectionByCorrelationIdMap; #else - std::map > + std::map> wsConnectionByCorrelationIdMap; // TODO(cryptochassis): for consistency, to be renamed to wsConnectionPtrByCorrelationIdMap #endif std::map wsRequestIdByConnectionIdMap; diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_binance_base.h b/include/ccapi_cpp/service/ccapi_execution_management_service_binance_base.h index d4254938..bcc8bc82 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_binance_base.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_binance_base.h @@ -446,6 +446,7 @@ class ExecutionManagementServiceBinanceBase : public ExecutionManagementService {CCAPI_EM_ORDER_CUMULATIVE_FILLED_PRICE_TIMES_QUANTITY, std::make_pair(this->isDerivatives ? "cumQuote" : "cummulativeQuoteQty", JsonDataType::STRING)}, {CCAPI_EM_ORDER_STATUS, std::make_pair("status", JsonDataType::STRING)}, {CCAPI_EM_ORDER_INSTRUMENT, std::make_pair("symbol", JsonDataType::STRING)}, + {CCAPI_LAST_UPDATED_TIME_SECONDS, std::make_pair("updateTime", JsonDataType::STRING)}, }; if (operation == Request::Operation::CANCEL_ORDER || operation == Request::Operation::CANCEL_OPEN_ORDERS) { extractionFieldNameMap.insert({CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("origClientOrderId", JsonDataType::STRING)}); @@ -454,12 +455,20 @@ class ExecutionManagementServiceBinanceBase : public ExecutionManagementService } if (document.IsObject()) { Element element; - this->extractOrderInfo(element, document, extractionFieldNameMap); + this->extractOrderInfo( + element, document, extractionFieldNameMap, + { + {CCAPI_LAST_UPDATED_TIME_SECONDS, [](const std::string& input) { return UtilTime::convertMillisecondsStrToSecondsStr(input); }}, + }); elementList.emplace_back(std::move(element)); } else { for (const auto& x : document.GetArray()) { Element element; - this->extractOrderInfo(element, x, extractionFieldNameMap); + this->extractOrderInfo( + element, x, extractionFieldNameMap, + { + {CCAPI_LAST_UPDATED_TIME_SECONDS, [](const std::string& input) { return UtilTime::convertMillisecondsStrToSecondsStr(input); }}, + }); elementList.emplace_back(std::move(element)); } } @@ -475,6 +484,9 @@ class ExecutionManagementServiceBinanceBase : public ExecutionManagementService element.insert(CCAPI_EM_ASSET, x["asset"].GetString()); element.insert(CCAPI_EM_QUANTITY_TOTAL, x["walletBalance"].GetString()); element.insert(CCAPI_EM_QUANTITY_AVAILABLE_FOR_TRADING, x["availableBalance"].GetString()); + if (this->isDerivatives) { + element.insert(CCAPI_LAST_UPDATED_TIME_SECONDS, UtilTime::convertMillisecondsStrToSecondsStr(x["updateTime"].GetString())); + } elementList.emplace_back(std::move(element)); } } else { diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_binance_derivatives_base.h b/include/ccapi_cpp/service/ccapi_execution_management_service_binance_derivatives_base.h index eb8a30f2..894e3d7b 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_binance_derivatives_base.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_binance_derivatives_base.h @@ -46,6 +46,7 @@ class ExecutionManagementServiceBinanceDerivativesBase : public ExecutionManagem element.insert(CCAPI_EM_POSITION_ENTRY_PRICE, x["entryPrice"].GetString()); element.insert(CCAPI_EM_POSITION_LEVERAGE, x["leverage"].GetString()); element.insert(CCAPI_EM_UNREALIZED_PNL, x["unRealizedProfit"].GetString()); + element.insert(CCAPI_LAST_UPDATED_TIME_SECONDS, UtilTime::convertMillisecondsStrToSecondsStr(x["updateTime"].GetString())); elementList.emplace_back(std::move(element)); } } break; diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_kucoin_base.h b/include/ccapi_cpp/service/ccapi_execution_management_service_kucoin_base.h index 34d39009..96a9c77e 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_kucoin_base.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_kucoin_base.h @@ -106,7 +106,6 @@ class ExecutionManagementServiceKucoinBase : public ExecutionManagementService { urlWebsocketBase += "?token="; urlWebsocketBase += std::string(document["data"]["token"].GetString()); wsConnectionPtr->setUrl(urlWebsocketBase); - std::cout << wsConnectionPtr->toString() << std::endl; that->connect(wsConnectionPtr); that->extraPropertyByConnectionIdMap[wsConnectionPtr->id].insert({ {"pingInterval", std::string(instanceServer["pingInterval"].GetString())}, diff --git a/test/test_unit/src/common/util/ccapi_util_test.cpp b/test/test_unit/src/common/util/ccapi_util_test.cpp index 47e8b334..0c1de478 100644 --- a/test/test_unit/src/common/util/ccapi_util_test.cpp +++ b/test/test_unit/src/common/util/ccapi_util_test.cpp @@ -29,6 +29,11 @@ TEST(UtilAlgorithmTest, base64FromBase64Url) { auto result = UtilAlgorithm::base64FromBase64Url(original); EXPECT_EQ(result, "TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ="); } +TEST(UtilStringTest, convertMillisecondsStrToSecondsStr) { + EXPECT_EQ("169782573039", "169782573.039"); + EXPECT_EQ("169782573030", "169782573.03"); + EXPECT_EQ("0", "0"); +} TEST(UtilStringTest, roundInputBySignificantFigure) { EXPECT_EQ(UtilString::roundInputBySignificantFigure(12345.01, 5, 1), "12346"); EXPECT_EQ(UtilString::roundInputBySignificantFigure(12345.01, 5, -1), "12345"); diff --git a/test/test_unit/src/execution_management/binance_usds_futures/test.cpp b/test/test_unit/src/execution_management/binance_usds_futures/test.cpp index a62ff040..f87dff35 100644 --- a/test/test_unit/src/execution_management/binance_usds_futures/test.cpp +++ b/test/test_unit/src/execution_management/binance_usds_futures/test.cpp @@ -71,6 +71,7 @@ TEST_F(ExecutionManagementServiceBinanceUsdsFuturesTest, convertTextMessageToMes EXPECT_EQ(elementList.size(), 1); Element element = elementList.at(0); EXPECT_EQ(element.getValue(CCAPI_EM_ORDER_CUMULATIVE_FILLED_PRICE_TIMES_QUANTITY), "0.01"); + EXPECT_EQ(element.getValue(LAST_UPDATED_TIME_SECONDS), "1579276756075"); } TEST_F(ExecutionManagementServiceBinanceUsdsFuturesTest, createEventExecutionTypeTrade) { @@ -300,6 +301,7 @@ TEST_F(ExecutionManagementServiceBinanceUsdsFuturesTest, convertTextMessageToMes Element element = elementList.at(0); EXPECT_EQ(element.getValue(CCAPI_EM_ASSET), "USDT"); EXPECT_EQ(element.getValue(CCAPI_EM_QUANTITY_AVAILABLE_FOR_TRADING), "23.72469206"); + EXPECT_EQ(element.getValue(CCAPI_LAST_UPDATED_TIME_SECONDS), "1625474304.765"); } TEST_F(ExecutionManagementServiceBinanceUsdsFuturesTest, convertRequestGetAccountPositions) { @@ -349,6 +351,7 @@ TEST_F(ExecutionManagementServiceBinanceUsdsFuturesTest, convertTextMessageToMes EXPECT_EQ(element.getValue(CCAPI_EM_POSITION_QUANTITY), "0"); EXPECT_DOUBLE_EQ(std::stod(element.getValue(CCAPI_EM_POSITION_ENTRY_PRICE)), 0); EXPECT_EQ(element.getValue(CCAPI_EM_POSITION_LEVERAGE), "100"); + EXPECT_EQ(element.getValue(CCAPI_LAST_UPDATED_TIME_SECONDS), "0"); } } /* namespace ccapi */ #endif From a75b2fbc08790dabdb2bce089542aecc0465281b Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Mon, 23 Oct 2023 18:54:39 +0000 Subject: [PATCH 2/3] ci: fix unit tests --- ...agement_service_binance_derivatives_base.h | 15 ++++++- .../src/common/util/ccapi_util_test.cpp | 10 ++--- .../binance_usds_futures/test.cpp | 39 ++++++++++--------- 3 files changed, 40 insertions(+), 24 deletions(-) diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_binance_derivatives_base.h b/include/ccapi_cpp/service/ccapi_execution_management_service_binance_derivatives_base.h index 894e3d7b..3e429046 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_binance_derivatives_base.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_binance_derivatives_base.h @@ -34,19 +34,32 @@ class ExecutionManagementServiceBinanceDerivativesBase : public ExecutionManagem for (const auto& x : document.GetArray()) { Element element; element.insert(CCAPI_INSTRUMENT, x["symbol"].GetString()); + std::cout << __LINE__ << std::endl; element.insert(CCAPI_EM_POSITION_SIDE, x["positionSide"].GetString()); + std::cout << __LINE__ << std::endl; std::string positionAmt; + std::cout << __LINE__ << std::endl; auto it = x.FindMember("positionAmt"); + std::cout << __LINE__ << std::endl; if (it != x.MemberEnd()) { + std::cout << __LINE__ << std::endl; positionAmt = it->value.GetString(); + std::cout << __LINE__ << std::endl; } else { + std::cout << __LINE__ << std::endl; positionAmt = x["maxQty"].GetString(); + std::cout << __LINE__ << std::endl; } element.insert(CCAPI_EM_POSITION_QUANTITY, positionAmt); + std::cout << __LINE__ << std::endl; element.insert(CCAPI_EM_POSITION_ENTRY_PRICE, x["entryPrice"].GetString()); + std::cout << __LINE__ << std::endl; element.insert(CCAPI_EM_POSITION_LEVERAGE, x["leverage"].GetString()); - element.insert(CCAPI_EM_UNREALIZED_PNL, x["unRealizedProfit"].GetString()); + std::cout << __LINE__ << std::endl; + element.insert(CCAPI_EM_UNREALIZED_PNL, x["unrealizedProfit"].GetString()); + std::cout << __LINE__ << std::endl; element.insert(CCAPI_LAST_UPDATED_TIME_SECONDS, UtilTime::convertMillisecondsStrToSecondsStr(x["updateTime"].GetString())); + std::cout << __LINE__ << std::endl; elementList.emplace_back(std::move(element)); } } break; diff --git a/test/test_unit/src/common/util/ccapi_util_test.cpp b/test/test_unit/src/common/util/ccapi_util_test.cpp index 0c1de478..ad991edf 100644 --- a/test/test_unit/src/common/util/ccapi_util_test.cpp +++ b/test/test_unit/src/common/util/ccapi_util_test.cpp @@ -29,11 +29,6 @@ TEST(UtilAlgorithmTest, base64FromBase64Url) { auto result = UtilAlgorithm::base64FromBase64Url(original); EXPECT_EQ(result, "TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ="); } -TEST(UtilStringTest, convertMillisecondsStrToSecondsStr) { - EXPECT_EQ("169782573039", "169782573.039"); - EXPECT_EQ("169782573030", "169782573.03"); - EXPECT_EQ("0", "0"); -} TEST(UtilStringTest, roundInputBySignificantFigure) { EXPECT_EQ(UtilString::roundInputBySignificantFigure(12345.01, 5, 1), "12346"); EXPECT_EQ(UtilString::roundInputBySignificantFigure(12345.01, 5, -1), "12345"); @@ -205,4 +200,9 @@ TEST(UtilTimeTest, getISOTimestamp_11) { std::string str("2019-11-21T01:38:23Z"); EXPECT_EQ(UtilTime::getISOTimestamp(UtilTime::parse(str)), "2019-11-21T01:38:23.000Z"); } +TEST(UtilTimeTest, convertMillisecondsStrToSecondsStr) { + EXPECT_EQ(UtilTime::convertMillisecondsStrToSecondsStr("169782573039"), "169782573.039"); + EXPECT_EQ(UtilTime::convertMillisecondsStrToSecondsStr("169782573030"), "169782573.030"); + EXPECT_EQ(UtilTime::convertMillisecondsStrToSecondsStr("0"), "0"); +} } /* namespace ccapi */ diff --git a/test/test_unit/src/execution_management/binance_usds_futures/test.cpp b/test/test_unit/src/execution_management/binance_usds_futures/test.cpp index f87dff35..35825a55 100644 --- a/test/test_unit/src/execution_management/binance_usds_futures/test.cpp +++ b/test/test_unit/src/execution_management/binance_usds_futures/test.cpp @@ -71,7 +71,7 @@ TEST_F(ExecutionManagementServiceBinanceUsdsFuturesTest, convertTextMessageToMes EXPECT_EQ(elementList.size(), 1); Element element = elementList.at(0); EXPECT_EQ(element.getValue(CCAPI_EM_ORDER_CUMULATIVE_FILLED_PRICE_TIMES_QUANTITY), "0.01"); - EXPECT_EQ(element.getValue(LAST_UPDATED_TIME_SECONDS), "1579276756075"); + EXPECT_EQ(element.getValue(CCAPI_LAST_UPDATED_TIME_SECONDS), "1579276756.075"); } TEST_F(ExecutionManagementServiceBinanceUsdsFuturesTest, createEventExecutionTypeTrade) { @@ -321,21 +321,24 @@ TEST_F(ExecutionManagementServiceBinanceUsdsFuturesTest, convertTextMessageToMes std::string textMessage = R"( [ - { - "symbol": "BTCUSDT", - "initialMargin": "0", - "maintMargin": "0", - "unrealizedProfit": "0.00000000", - "positionInitialMargin": "0", - "openOrderInitialMargin": "0", - "leverage": "100", - "isolated": true, - "entryPrice": "0.00000", - "maxNotional": "250000", - "positionSide": "BOTH", - "positionAmt": "0", - "updateTime": 0 - } + { + "entryPrice": "0.00000", + "breakEvenPrice": "0.0", + "marginType": "isolated", + "isAutoAddMargin": "false", + "isolatedMargin": "0.00000000", + "leverage": "10", + "liquidationPrice": "0", + "markPrice": "6679.50671178", + "maxNotionalValue": "20000000", + "positionAmt": "0.000", + "notional": "0", + "isolatedWallet": "0", + "symbol": "BTCUSDT", + "unrealizedProfit": "0.00000000", + "positionSide": "BOTH", + "updateTime": 0 + } ] )"; auto messageList = this->service->convertTextMessageToMessageRest(request, textMessage, this->now); @@ -348,9 +351,9 @@ TEST_F(ExecutionManagementServiceBinanceUsdsFuturesTest, convertTextMessageToMes Element element = elementList.at(0); EXPECT_EQ(element.getValue(CCAPI_INSTRUMENT), "BTCUSDT"); EXPECT_EQ(element.getValue(CCAPI_EM_POSITION_SIDE), "BOTH"); - EXPECT_EQ(element.getValue(CCAPI_EM_POSITION_QUANTITY), "0"); + EXPECT_EQ(element.getValue(CCAPI_EM_POSITION_QUANTITY), "0.000"); EXPECT_DOUBLE_EQ(std::stod(element.getValue(CCAPI_EM_POSITION_ENTRY_PRICE)), 0); - EXPECT_EQ(element.getValue(CCAPI_EM_POSITION_LEVERAGE), "100"); + EXPECT_EQ(element.getValue(CCAPI_EM_POSITION_LEVERAGE), "10"); EXPECT_EQ(element.getValue(CCAPI_LAST_UPDATED_TIME_SECONDS), "0"); } } /* namespace ccapi */ From 45f9f75c4ec5a925230e5a19062ac8a7a4638839 Mon Sep 17 00:00:00 2001 From: Crypto Chassis Date: Mon, 23 Oct 2023 12:03:29 -0700 Subject: [PATCH 3/3] ci: fix unit tests --- .../service/ccapi_execution_management_service_ascendex.h | 8 ++++---- .../service/ccapi_execution_management_service_bitget.h | 8 ++++---- .../ccapi_execution_management_service_bitget_futures.h | 8 ++++---- .../service/ccapi_execution_management_service_bitmex.h | 8 ++++---- .../service/ccapi_execution_management_service_bitstamp.h | 4 ++-- .../service/ccapi_execution_management_service_deribit.h | 4 ++-- .../service/ccapi_execution_management_service_erisx.h | 6 +++--- .../service/ccapi_execution_management_service_ftx_base.h | 8 ++++---- .../service/ccapi_execution_management_service_gemini.h | 8 ++++---- ..._execution_management_service_huobi_derivatives_base.h | 8 ++++---- .../ccapi_execution_management_service_kucoin_base.h | 8 ++++---- .../ccapi_execution_management_service_mexc_futures.h | 4 ++-- .../service/ccapi_execution_management_service_okx.h | 8 ++++---- 13 files changed, 45 insertions(+), 45 deletions(-) diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_ascendex.h b/include/ccapi_cpp/service/ccapi_execution_management_service_ascendex.h index 85ee65cf..0b781c2b 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_ascendex.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_ascendex.h @@ -288,7 +288,7 @@ class ExecutionManagementServiceAscendex : public ExecutionManagementService { this->extractOrderInfoFromRequest(elementList, document); } void extractOrderInfoFromRequest(std::vector& elementList, const rj::Value& value) { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("orderId", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("id", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, @@ -337,8 +337,8 @@ class ExecutionManagementServiceAscendex : public ExecutionManagementService { CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("cumFilledQty"); @@ -477,7 +477,7 @@ class ExecutionManagementServiceAscendex : public ExecutionManagementService { message.setTime(TimePoint(std::chrono::milliseconds(std::stoll(data["t"].GetString())))); if (fieldSet.find(CCAPI_EM_ORDER_UPDATE) != fieldSet.end()) { message.setType(Message::Type::EXECUTION_MANAGEMENT_EVENTS_ORDER_UPDATE); - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("orderId", JsonDataType::INTEGER)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("sd", JsonDataType::STRING)}, {CCAPI_EM_ORDER_LIMIT_PRICE, std::make_pair("p", JsonDataType::STRING)}, diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_bitget.h b/include/ccapi_cpp/service/ccapi_execution_management_service_bitget.h index bc4e3ef4..82d168ff 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_bitget.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_bitget.h @@ -167,7 +167,7 @@ class ExecutionManagementServiceBitget : public ExecutionManagementServiceBitget } void extractOrderInfoFromRequest(std::vector& elementList, const Request& request, const Request::Operation operation, const rj::Document& document) override { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("orderId", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clientOrderId", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, @@ -211,8 +211,8 @@ class ExecutionManagementServiceBitget : public ExecutionManagementServiceBitget CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("accFillSz"); @@ -365,7 +365,7 @@ Event createEvent(const Subscription& subscription, const std::string& textMessa message.setCorrelationIdList({subscription.getCorrelationId()}); message.setTime(UtilTime::makeTimePointFromMilliseconds(std::stoll(std::string(x["uTime"].GetString())))); message.setType(Message::Type::EXECUTION_MANAGEMENT_EVENTS_ORDER_UPDATE); - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("ordId", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clOrdId", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_bitget_futures.h b/include/ccapi_cpp/service/ccapi_execution_management_service_bitget_futures.h index 2c32d0c6..c76d39e4 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_bitget_futures.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_bitget_futures.h @@ -213,7 +213,7 @@ class ExecutionManagementServiceBitgetFutures : public ExecutionManagementServic } void extractOrderInfoFromRequest(std::vector& elementList, const Request& request, const Request::Operation operation, const rj::Document& document) override { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("orderId", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clientOid", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, @@ -266,8 +266,8 @@ class ExecutionManagementServiceBitgetFutures : public ExecutionManagementServic CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("accFillSz"); @@ -429,7 +429,7 @@ class ExecutionManagementServiceBitgetFutures : public ExecutionManagementServic message.setCorrelationIdList({subscription.getCorrelationId()}); message.setTime(UtilTime::makeTimePointFromMilliseconds(std::stoll(std::string(x["uTime"].GetString())))); message.setType(Message::Type::EXECUTION_MANAGEMENT_EVENTS_ORDER_UPDATE); - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("ordId", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clOrdId", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_bitmex.h b/include/ccapi_cpp/service/ccapi_execution_management_service_bitmex.h index b15e5ba2..c78ff3ca 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_bitmex.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_bitmex.h @@ -224,7 +224,7 @@ class ExecutionManagementServiceBitmex : public ExecutionManagementService { } void extractOrderInfoFromRequest(std::vector& elementList, const Request& request, const Request::Operation operation, const rj::Document& document) override { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("orderID", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clOrdID", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, @@ -272,8 +272,8 @@ class ExecutionManagementServiceBitmex : public ExecutionManagementService { CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("cumQty"); @@ -448,7 +448,7 @@ class ExecutionManagementServiceBitmex : public ExecutionManagementService { } } else if (table == "order" && fieldSet.find(CCAPI_EM_ORDER_UPDATE) != fieldSet.end()) { message.setType(Message::Type::EXECUTION_MANAGEMENT_EVENTS_ORDER_UPDATE); - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("orderID", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clOrdID", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_bitstamp.h b/include/ccapi_cpp/service/ccapi_execution_management_service_bitstamp.h index 2eb98e34..9379c6aa 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_bitstamp.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_bitstamp.h @@ -204,8 +204,8 @@ class ExecutionManagementServiceBitstamp : public ExecutionManagementService { this->convertRequestForRestCustom(req, request, now, symbolId, credential); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map>& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("type"); diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_deribit.h b/include/ccapi_cpp/service/ccapi_execution_management_service_deribit.h index 1863bd5e..a6fc265e 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_deribit.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_deribit.h @@ -315,8 +315,8 @@ class ExecutionManagementServiceDeribit : public ExecutionManagementService { CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map>& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("filled_amount"); diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_erisx.h b/include/ccapi_cpp/service/ccapi_execution_management_service_erisx.h index 76fc2456..4cf8d1ef 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_erisx.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_erisx.h @@ -192,7 +192,7 @@ class ExecutionManagementServiceErisx : public ExecutionManagementService { } void extractOrderInfoFromRequest(std::vector& elementList, const Request& request, const Request::Operation operation, const rj::Document& document) override { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("orderID", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clOrdID", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, @@ -221,8 +221,8 @@ class ExecutionManagementServiceErisx : public ExecutionManagementService { } void extractAccountInfoFromRequest(std::vector& elementList, const Request& request, const Request::Operation operation, const rj::Document& document) override {} - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("cumQty"); diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_ftx_base.h b/include/ccapi_cpp/service/ccapi_execution_management_service_ftx_base.h index 4d0f93df..2d71943d 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_ftx_base.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_ftx_base.h @@ -213,7 +213,7 @@ class ExecutionManagementServiceFtxBase : public ExecutionManagementService { } void extractOrderInfoFromRequest(std::vector& elementList, const Request& request, const Request::Operation operation, const rj::Document& document) override { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("id", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clientId", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, @@ -259,8 +259,8 @@ class ExecutionManagementServiceFtxBase : public ExecutionManagementService { CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("filledSize"); @@ -376,7 +376,7 @@ class ExecutionManagementServiceFtxBase : public ExecutionManagementService { } else if (channel == "orders" && fieldSet.find(CCAPI_EM_ORDER_UPDATE) != fieldSet.end()) { message.setTime(timeReceived); message.setType(Message::Type::EXECUTION_MANAGEMENT_EVENTS_ORDER_UPDATE); - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("id", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clientId", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_gemini.h b/include/ccapi_cpp/service/ccapi_execution_management_service_gemini.h index d1dc5710..2ea0e40d 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_gemini.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_gemini.h @@ -200,7 +200,7 @@ class ExecutionManagementServiceGemini : public ExecutionManagementService { } void extractOrderInfoFromRequest(std::vector& elementList, const Request& request, const Request::Operation operation, const rj::Document& document) override { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("order_id", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("client_order_id", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, @@ -249,8 +249,8 @@ class ExecutionManagementServiceGemini : public ExecutionManagementService { CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("executed_amount"); @@ -419,7 +419,7 @@ class ExecutionManagementServiceGemini : public ExecutionManagementService { } if (fieldSet.find(CCAPI_EM_ORDER_UPDATE) != fieldSet.end()) { message.setType(Message::Type::EXECUTION_MANAGEMENT_EVENTS_ORDER_UPDATE); - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("order_id", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("client_order_id", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_huobi_derivatives_base.h b/include/ccapi_cpp/service/ccapi_execution_management_service_huobi_derivatives_base.h index 5894c70e..5deb7d1b 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_huobi_derivatives_base.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_huobi_derivatives_base.h @@ -142,7 +142,7 @@ class ExecutionManagementServiceHuobiDerivativesBase : public ExecutionManagemen } void extractOrderInfoFromRequest(std::vector& elementList, const Request& request, const Request::Operation operation, const rj::Document& document) override { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("order_id", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("client_order_id", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("direction", JsonDataType::STRING)}, @@ -202,8 +202,8 @@ class ExecutionManagementServiceHuobiDerivativesBase : public ExecutionManagemen CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("trade_volume"); @@ -336,7 +336,7 @@ class ExecutionManagementServiceHuobiDerivativesBase : public ExecutionManagemen if (instrumentSet.empty() || instrumentSet.find(instrument) != instrumentSet.end()) { message.setTime(UtilTime::makeTimePointFromMilliseconds(std::stoll(document["ts"].GetString()))); message.setType(Message::Type::EXECUTION_MANAGEMENT_EVENTS_ORDER_UPDATE); - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("order_id", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("client_order_id", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("direction", JsonDataType::STRING)}, diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_kucoin_base.h b/include/ccapi_cpp/service/ccapi_execution_management_service_kucoin_base.h index 96a9c77e..222157b2 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_kucoin_base.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_kucoin_base.h @@ -332,7 +332,7 @@ class ExecutionManagementServiceKucoinBase : public ExecutionManagementService { } void extractOrderInfoFromRequest(std::vector& elementList, const Request& request, const Request::Operation operation, const rj::Document& document) override { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("id", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clientOid", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, @@ -371,8 +371,8 @@ class ExecutionManagementServiceKucoinBase : public ExecutionManagementService { elementList.emplace_back(std::move(element)); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it = x.FindMember("isActive"); @@ -483,7 +483,7 @@ class ExecutionManagementServiceKucoinBase : public ExecutionManagementService { message.setCorrelationIdList({subscription.getCorrelationId()}); message.setTime(time); message.setType(Message::Type::EXECUTION_MANAGEMENT_EVENTS_ORDER_UPDATE); - std::map > extractionFieldNameMap = { + std::map> extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("orderId", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clientOid", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_mexc_futures.h b/include/ccapi_cpp/service/ccapi_execution_management_service_mexc_futures.h index 0421b13f..34ed932e 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_mexc_futures.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_mexc_futures.h @@ -319,8 +319,8 @@ class ExecutionManagementServiceMexcFutures : public ExecutionManagementService // CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); // } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { // ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); // { // auto it1 = x.FindMember("accFillSz"); diff --git a/include/ccapi_cpp/service/ccapi_execution_management_service_okx.h b/include/ccapi_cpp/service/ccapi_execution_management_service_okx.h index f056fc4a..008455e6 100644 --- a/include/ccapi_cpp/service/ccapi_execution_management_service_okx.h +++ b/include/ccapi_cpp/service/ccapi_execution_management_service_okx.h @@ -274,7 +274,7 @@ class ExecutionManagementServiceOkx : public ExecutionManagementService { this->extractOrderInfoFromRequest(elementList, document); } void extractOrderInfoFromRequest(std::vector& elementList, const rj::Document& document) { - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("ordId", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clOrdId", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)}, @@ -326,8 +326,8 @@ class ExecutionManagementServiceOkx : public ExecutionManagementService { CCAPI_LOGGER_FATAL(CCAPI_UNSUPPORTED_VALUE); } } - void extractOrderInfo(Element& element, const rj::Value& x, - const std::map >& extractionFieldNameMap) override { + void extractOrderInfo(Element& element, const rj::Value& x, const std::map>& extractionFieldNameMap, + const std::map> conversionMap = {}) override { ExecutionManagementService::extractOrderInfo(element, x, extractionFieldNameMap); { auto it1 = x.FindMember("accFillSz"); @@ -513,7 +513,7 @@ class ExecutionManagementServiceOkx : public ExecutionManagementService { message.setCorrelationIdList({subscription.getCorrelationId()}); message.setTime(UtilTime::makeTimePointFromMilliseconds(std::stoll(std::string(x["uTime"].GetString())))); message.setType(Message::Type::EXECUTION_MANAGEMENT_EVENTS_ORDER_UPDATE); - const std::map >& extractionFieldNameMap = { + const std::map>& extractionFieldNameMap = { {CCAPI_EM_ORDER_ID, std::make_pair("ordId", JsonDataType::STRING)}, {CCAPI_EM_CLIENT_ORDER_ID, std::make_pair("clOrdId", JsonDataType::STRING)}, {CCAPI_EM_ORDER_SIDE, std::make_pair("side", JsonDataType::STRING)},