Joel Grunbaum
2022-01-20 441abf1e6a15a39f1ef7bf5e4ee2a4a43bff327b
json.hpp
@@ -25,10 +25,11 @@
   BROKER_REQUEST,
   BROKER_ACK,
   BROKER_CONFIRM,
   ERROR,
   NONE
};
enum TradeTypeEnum { BUY_AGGRESSOR, SELL_AGGRESSOR };
enum TradeTypeEnum { BUY_AGGRESSOR, SELL_AGGRESSOR, BROKER_TRADE };
struct Message {
   MessageTypes type;
@@ -36,6 +37,12 @@
   Message(MessageTypes type, std::string product);
   Message();
   virtual ~Message() = default;
};
struct ErrorMessage : public Message {
   std::string message;
   ErrorMessage(std::string message);
   std::string as_string();
};
struct FromExchange : public Message {
@@ -75,6 +82,7 @@
                   std::chrono::nanoseconds expiry, double aggFee,
                   double pasFee, double broFee, uint64_t sequence,
                   double timestamp);
   std::string as_string();
};
struct SettleMessage : public FromExchange {
@@ -84,6 +92,7 @@
   SettleMessage(MessageTypes type, std::string product,
                 std::string stationName, std::chrono::nanoseconds expiry,
                 double price, uint64_t sequence, double timestamp);
   std::string as_string();
};
struct AddMessage : public ToExchange {
@@ -101,9 +110,12 @@
   double price;
   uint64_t filled;
   uint64_t resting;
   std::string owner;
   AddedMessage(MessageTypes type, std::string product, std::string id,
                book::OrderSideEnum side, double price, uint64_t filled,
                uint64_t resting, uint64_t sequence, double timestamp);
                uint64_t resting, std::string owner, uint64_t sequence,
                double timestamp);
   std::string as_string();
};
struct DeleteMessage : public ToExchange {
@@ -118,12 +130,14 @@
   DeletedMessage(MessageTypes type, std::string product, std::string id,
                  book::OrderSideEnum side, uint64_t sequence,
                  double timestamp);
   std::string as_string();
};
struct RejectMessage : public FromExchange {
   std::string error;
   RejectMessage(MessageTypes type, std::string product, std::string error,
                 uint64_t sequence, double timestamp);
   std::string as_string();
};
struct TradeMessage : public FromExchange {
@@ -139,12 +153,14 @@
                TradeTypeEnum tradeType, std::string passiveOrder,
                uint64_t passiveOrderRemaining, uint64_t sequence,
                double timestamp);
   std::string as_string();
};
struct BrokerRequest : public Broker {
   BrokerRequest(MessageTypes type, std::string product, double price,
                 book::OrderSideEnum side, uint64_t volume,
                 std::string counterparty);
   std::string as_string();
};
struct BrokerAck : public Broker {
@@ -155,6 +171,7 @@
             book::OrderSideEnum side, uint64_t volume,
             std::string counterparty, std::string id,
             std::string brokerTradeStatus, std::string owner);
   std::string as_string();
};
struct BrokerConfirm : public Broker {
@@ -162,6 +179,7 @@
   BrokerConfirm(MessageTypes type, std::string product, double price,
                 book::OrderSideEnum side, uint64_t volume,
                 std::string counterparty, std::string id);
   std::string as_string();
};
std::queue<Message*> parse(std::string& str);