From 2c515f0de70ad675b5f5d25b6a496d67d8dc0463 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Mon, 10 Jan 2022 02:48:19 +0000
Subject: [PATCH] Fixed indentation

---
 .clang-format |    4 
 book.hpp      |   63 +-
 json.cpp      |  288 +++++++-------
 protocol.cpp  |  205 +++++-----
 /dev/null     |   15 
 strat.cpp     |    3 
 click.cpp     |  102 ++--
 test.cpp      |   14 
 book.cpp      |  226 +++++-----
 json.hpp      |  206 +++++-----
 strat.hpp     |    5 
 secrets.hpp   |   12 
 bot.cpp       |    5 
 13 files changed, 571 insertions(+), 577 deletions(-)

diff --git a/.clang-format b/.clang-format
index 68225bd..4ae268e 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,12 +1,12 @@
 ---
 BasedOnStyle: LLVM
 IndentWidth: 4
+TabWidth: 4
 UseTab: AlignWithSpaces
 AllowShortIfStatementsOnASingleLine: true
 BreakBeforeBraces: Linux
-IndentCaseLabels: false
 PointerAlignment: Left
 AllowShortIfStatementsOnASingleLine: true
 IndentCaseBlocks: true
 IndentCaseLabels: false
-SortUsingDeclarations: true
\ No newline at end of file
+SortUsingDeclarations: true
diff --git a/book.cpp b/book.cpp
index 381a7a2..4473e8c 100644
--- a/book.cpp
+++ b/book.cpp
@@ -8,167 +8,175 @@
 {
 Order::Order(double price, OrderSideEnum side, int volume, double timestamp,
              std::string id)
-    : price{price}, side{side}, remaining_volume{volume},
-      filled_volume(0), timestamp{timestamp}, id{id}
+	: price{price}, side{side}, remaining_volume{volume},
+	  filled_volume(0), timestamp{timestamp}, id{id}
 {
 }
 
 Level::Level(Order& order)
-    : price{order.price}, volume(order.remaining_volume), side{order.side},
-      timestamp{order.timestamp}, id{order.id}
+	: price{order.price}, volume(order.remaining_volume), side{order.side},
+	  timestamp{order.timestamp}, id{order.id}
 {
 }
 
 bool operator<(const Level& a, const Level& b)
 {
-    if (a.price < b.price)
-	return true;
-    else if (a.price == b.price && (a.timestamp > b.timestamp))
-	return true;
-    else
-	return false;
+	if (a.price < b.price)
+		return true;
+	else if (a.price == b.price && (a.timestamp > b.timestamp))
+		return true;
+	else
+		return false;
 }
 
 bool operator>(const Level& a, const Level& b)
 {
-    if (a.price > b.price)
-	return true;
-    else if (a.price == b.price && (a.timestamp > b.timestamp))
-	return true;
-    else
-	return false;
+	if (a.price > b.price)
+		return true;
+	else if (a.price == b.price && (a.timestamp > b.timestamp))
+		return true;
+	else
+		return false;
 }
 
 bool operator<=(const Level& a, const Level& b)
 {
-    if (a.price <= b.price)
-	return true;
-    else if (a.price == b.price && (a.timestamp >= b.timestamp))
-	return true;
-    else
-	return false;
+	if (a.price <= b.price)
+		return true;
+	else if (a.price == b.price && (a.timestamp >= b.timestamp))
+		return true;
+	else
+		return false;
 }
 
 bool operator>=(const Level& a, const Level& b)
 {
-    if (a.price >= b.price)
-	return true;
-    else if (a.price == b.price && (a.timestamp >= b.timestamp))
-	return true;
-    else
-	return false;
+	if (a.price >= b.price)
+		return true;
+	else if (a.price == b.price && (a.timestamp >= b.timestamp))
+		return true;
+	else
+		return false;
 }
 
 bool operator==(const Level& a, const Level& b)
 {
-    if (a.price == b.price && (a.timestamp == b.timestamp))
-	return true;
-    else
-	return false;
+	if (a.price == b.price && (a.timestamp == b.timestamp))
+		return true;
+	else
+		return false;
 }
 
 std::ostream& operator<<(std::ostream& out, const Level& a)
 {
-    return out << "Price: " << a.price << ", volume: " << a.volume
-               << ", time: " << a.timestamp << ", id: " << a.id;
+	return out << "Price: " << a.price << ", volume: " << a.volume
+	           << ", time: " << a.timestamp << ", id: " << a.id;
 }
 
 Book::Book()
-    : bidSide(), askSide(), productType(TEST), product("a"), stationId(7),
-      unit("c"), expiry(std::chrono::nanoseconds(0)), aggFee(1), pasFee(-1),
-      broFee(2)
+	: bidSide(), askSide(), productType(TEST), product("a"), stationId(7),
+	  unit("c"), expiry(std::chrono::nanoseconds(0)), aggFee(1), pasFee(-1),
+	  broFee(2)
 {
 }
 
-Book::Book(ProductTypeEnum productType, std::string product,
-           int stationId, std::string unit,
-           std::chrono::nanoseconds expiry, double aggFee, double pasFee,
-           double broFee)
-    : bidSide{}, askSide{}, productType{productType}, product(product),
-      stationId(stationId), unit(unit), expiry(expiry), aggFee(aggFee),
-      pasFee(pasFee), broFee(broFee)
+Book::Book(ProductTypeEnum productType, std::string product, int stationId,
+           std::string unit, std::chrono::nanoseconds expiry, double aggFee,
+           double pasFee, double broFee)
+	: bidSide{}, askSide{}, productType{productType}, product(product),
+	  stationId(stationId), unit(unit), expiry(expiry), aggFee(aggFee),
+	  pasFee(pasFee), broFee(broFee)
 {
 }
 
 void Book::ask(Order& order)
 {
-    while (this->bidSide.size() && this->bidSide[0].price >= order.price) {
-	if (this->bidSide[0].volume > order.remaining_volume) {
-	    int temp = this->bidSide[0].volume;
-	    order.filled_volume += temp;
-	    this->bidSide.front().volume -= order.remaining_volume;
-	    order.remaining_volume -= temp;
-	    break;
-	} else {
-	    order.remaining_volume -= this->bidSide[0].volume;
-	    order.filled_volume += this->bidSide[0].volume;
-	    this->bidSide.erase(this->bidSide.begin());
-	    std::make_heap(this->bidSide.begin(), this->bidSide.end(),
-	                   std::less<Level>());
+	while (this->bidSide.size() && this->bidSide[0].price >= order.price) {
+		if (this->bidSide[0].volume > order.remaining_volume) {
+			int temp = this->bidSide[0].volume;
+			order.filled_volume += temp;
+			this->bidSide.front().volume -= order.remaining_volume;
+			order.remaining_volume -= temp;
+			break;
+		} else {
+			order.remaining_volume -= this->bidSide[0].volume;
+			order.filled_volume += this->bidSide[0].volume;
+			this->bidSide.erase(this->bidSide.begin());
+			std::make_heap(this->bidSide.begin(), this->bidSide.end(),
+			               std::less<Level>());
+		}
 	}
-    }
-    if (order.remaining_volume > 0) {
-	this->askSide.emplace(this->askSide.begin(), order);
-	std::make_heap(this->askSide.begin(), this->askSide.end(),
-	               std::greater<Level>());
-    }
+	if (order.remaining_volume > 0) {
+		this->askSide.emplace_back(order);
+		std::make_heap(this->askSide.begin(), this->askSide.end(),
+		               std::greater<Level>());
+	}
 }
 
 void Book::bid(Order& order)
 {
-    while (this->askSide.size() && this->askSide[0].price <= order.price) {
-	if (this->askSide[0].volume > order.remaining_volume) {
-	    int temp = this->askSide.front().volume;
-	    order.filled_volume += temp;
-	    this->askSide.front().volume -= order.remaining_volume;
-	    order.remaining_volume -= temp;
-	    break;
-	} else {
-	    order.remaining_volume -= this->askSide[0].volume;
-	    order.filled_volume += this->askSide[0].volume;
-	    this->askSide.erase(this->askSide.begin());
-	    std::make_heap(this->askSide.begin(), this->askSide.end(),
-	                   std::greater<Level>());
+	while (this->askSide.size() && this->askSide[0].price <= order.price) {
+		if (this->askSide[0].volume > order.remaining_volume) {
+			int temp = this->askSide.front().volume;
+			order.filled_volume += temp;
+			this->askSide.front().volume -= order.remaining_volume;
+			order.remaining_volume -= temp;
+			break;
+		} else {
+			order.remaining_volume -= this->askSide[0].volume;
+			order.filled_volume += this->askSide[0].volume;
+			this->askSide.erase(this->askSide.begin());
+			std::make_heap(this->askSide.begin(), this->askSide.end(),
+			               std::greater<Level>());
+		}
 	}
-    }
-    if (order.remaining_volume > 0) {
-	this->bidSide.emplace(this->bidSide.begin(), order);
-	std::make_heap(this->bidSide.begin(), this->bidSide.end(),
-	               std::less<Level>());
-    }
+	if (order.remaining_volume > 0) {
+		this->bidSide.emplace_back(order);
+		std::make_heap(this->bidSide.begin(), this->bidSide.end(),
+		               std::less<Level>());
+	}
 }
 
 void Book::printBook(std::size_t numOrders)
 {
-    std::cout << "Sell side: " << this->askSide.size() << std::endl;
-    std::vector<Level> askCopy(this->askSide);
-    std::size_t count = 0;
-    std::sort(askCopy.begin(), askCopy.end());
-    for (auto i = askCopy.rbegin(); i != askCopy.rend() && count < numOrders; i++, count++) {
-        std::cout << *i << std::endl;
-    }
-    std::cout << "Buy side: " << this->bidSide.size() << std::endl;
-    std::vector<Level> bidCopy(this->bidSide);
-    count = 0;
-    std::sort(bidCopy.begin(), bidCopy.end());
-    for (auto i = bidCopy.rbegin(); i != bidCopy.rend() && count < numOrders; i++, count++) {
-        std::cout << *i << std::endl;
-    }
-    }
+	std::cout << "Sell side: " << this->askSide.size() << std::endl;
+	std::vector<Level> askCopy(this->askSide);
+	std::size_t count = 0;
+	std::sort(askCopy.begin(), askCopy.end());
+	std::reverse(askCopy.begin(), askCopy.end());
+	uint64_t volume = 0;
+	double price = askCopy.front().price;
+	for (auto i : askCopy) {
+		std::cout << i << std::endl;
+		count++;
+		if (count > numOrders) break;
+	}
+	std::cout << "Buy side: " << this->bidSide.size() << std::endl;
+	std::vector<Level> bidCopy(this->bidSide);
+	count = 0;
+	std::sort(bidCopy.begin(), bidCopy.end());
+	std::reverse(bidCopy.begin(), bidCopy.end());
+	price = bidCopy.front().price;
+	for (auto i : bidCopy) {
+		std::cout << i << std::endl;
+		count++;
+		if (count > numOrders) break;
+	}
+}
 
 Book testBook(int orders, bool printBook)
 {
-    Book b = Book();
-    double time(1);
-    for (int i = 1; i < orders; i++) {
-	Order t(i, Buy, 10, time++, "a");
-	b.bid(t);
-    }
-    for (int i = orders + 1; i < 2 * orders; i++) {
-	Order t(i, Sell, 10, time++, "b");
-	b.ask(t);
-    }
-    if (printBook) b.printBook(orders - 1);
-    return b;
+	Book b = Book();
+	double time(1);
+	for (int i = 1; i < orders; i++) {
+		Order t(i, Buy, 10, time++, "a");
+		b.bid(t);
+	}
+	for (int i = orders + 1; i < 2 * orders; i++) {
+		Order t(i, Sell, 10, time++, "b");
+		b.ask(t);
+	}
+	if (printBook) b.printBook(orders - 1);
+	return b;
 }
 } // namespace book
diff --git a/book.hpp b/book.hpp
index 455506b..ae89819 100644
--- a/book.hpp
+++ b/book.hpp
@@ -14,24 +14,24 @@
 enum ProductTypeEnum { TEST, FUTURE, SPREAD, CALL, PUT };
 
 struct Order {
-    double price;
-    OrderSideEnum side;
-    int remaining_volume;
-    int filled_volume;
-    double timestamp;
-    std::string id;
-    Order(double price, OrderSideEnum side, int volume, double timestamp,
-          std::string id);
+	double price;
+	OrderSideEnum side;
+	int remaining_volume;
+	int filled_volume;
+	double timestamp;
+	std::string id;
+	Order(double price, OrderSideEnum side, int volume, double timestamp,
+	      std::string id);
 };
 
 struct Level {
-    double price;
-    int volume;
-    OrderSideEnum side;
-    double timestamp;
-    std::string id;
+	double price;
+	int volume;
+	OrderSideEnum side;
+	double timestamp;
+	std::string id;
 
-    Level(Order& order);
+	Level(Order& order);
 };
 
 bool operator>(const Level& a, const Level& b);
@@ -42,25 +42,24 @@
 std::ostream& operator<<(std::ostream& out, const Level& a);
 
 struct Book {
-    std::vector<Level> bidSide;
-    std::vector<Level> askSide;
-    ProductTypeEnum productType;
-    std::string product;
-    int stationId;
-    std::string unit;
-    std::chrono::nanoseconds expiry;
-    double aggFee;
-    double pasFee;
-    double broFee;
+	std::vector<Level> bidSide;
+	std::vector<Level> askSide;
+	ProductTypeEnum productType;
+	std::string product;
+	int stationId;
+	std::string unit;
+	std::chrono::nanoseconds expiry;
+	double aggFee;
+	double pasFee;
+	double broFee;
 
-    Book();
-    Book(ProductTypeEnum productType, std::string product,
-         int stationId, std::string unit,
-         std::chrono::nanoseconds expiry, double aggFee, double pasFee,
-         double broFee);
-    void ask(Order& order);
-    void bid(Order& order);
-    void printBook(std::size_t numOrders = 10);
+	Book();
+	Book(ProductTypeEnum productType, std::string product, int stationId,
+	     std::string unit, std::chrono::nanoseconds expiry, double aggFee,
+	     double pasFee, double broFee);
+	void ask(Order& order);
+	void bid(Order& order);
+	void printBook(std::size_t numOrders = 10);
 };
 
 Book testBook(int orders = 10, bool printBook = true);
diff --git a/bot.cpp b/bot.cpp
index 3e80bf5..2b2d6f7 100644
--- a/bot.cpp
+++ b/bot.cpp
@@ -1,6 +1,3 @@
 #include "strat.hpp"
 
-int main(void)
-{
-    
-}
+int main(void) {}
diff --git a/click.cpp b/click.cpp
index 31529e9..f373fce 100644
--- a/click.cpp
+++ b/click.cpp
@@ -13,64 +13,64 @@
 
 void initialise()
 {
-    mapClick = {{"BUY", Buy}, {"SELL", Sell}, {"FLASH", Flash},
-                {"b", Buy},   {"s", Sell},    {"f", Flash},
-                {"B", Buy},   {"S", Sell},    {"F", Flash}};
+	mapClick = {{"BUY", Buy}, {"SELL", Sell}, {"FLASH", Flash},
+	            {"b", Buy},   {"s", Sell},    {"f", Flash},
+	            {"B", Buy},   {"S", Sell},    {"F", Flash}};
 }
 
 void usage()
 {
-    std::cout << "DESCRIPTION" << std::endl
-	      << "Click trader using same algs" << std::endl
-	      << std::endl
-	      << "USAGE" << std::endl
-	      << "\t-a product" << std::endl
-	      << "\t-t click type (buy, sell, flash)" << std::endl
-	      << "\t-p price" << std::endl
-	      << "\t-v volume" << std::endl
-	      << "\t-i id" << std::endl
-	      << "Always need product, need side, price and volume for "
-		 "adding/flash, need id for deleting"
-	      << std::endl;
+	std::cout << "DESCRIPTION" << std::endl
+			  << "Click trader using same algs" << std::endl
+			  << std::endl
+			  << "USAGE" << std::endl
+			  << "\t-a product" << std::endl
+			  << "\t-t click type (buy, sell, flash)" << std::endl
+			  << "\t-p price" << std::endl
+			  << "\t-v volume" << std::endl
+			  << "\t-i id" << std::endl
+			  << "Always need product, need side, price and volume for "
+				 "adding/flash, need id for deleting"
+			  << std::endl;
 }
 
 int main(int argc, char** argv)
 {
-    int c;
-    std::string product, id;
-    double price;
-    clickType click;
-    uint64_t volume;
-    initialise();
-    if (argc == 1) {
-	usage(), exit(0);
-    }
-    while ((c = getopt(argc, argv, "a::t::p::v::i::")) != -1) {
-	switch (c) {
-	case 'a':
-	    product = std::string(optarg);
-	    break;
-	case 's':
-	    click = mapClick[optarg];
-	    break;
-	case 'p':
-	    price = std::stod(optarg);
-	    break;
-	case 'v':
-	    volume = std::stoll(optarg);
-	    break;
-	case 'i':
-	    id = std::string(optarg);
-	    break;
-	case '?':
-	default:
-	    usage();
-	    exit(0);
+	int c;
+	std::string product, id;
+	double price;
+	clickType click;
+	uint64_t volume;
+	initialise();
+	if (argc == 1) {
+		usage(), exit(0);
 	}
-    }
-    switch (click) {
-    case Buy:
-    case Sell:
-    case Flash:;
-    }
+	while ((c = getopt(argc, argv, "a::t::p::v::i::")) != -1) {
+		switch (c) {
+		case 'a':
+			product = std::string(optarg);
+			break;
+		case 's':
+			click = mapClick[optarg];
+			break;
+		case 'p':
+			price = std::stod(optarg);
+			break;
+		case 'v':
+			volume = std::stoll(optarg);
+			break;
+		case 'i':
+			id = std::string(optarg);
+			break;
+		case '?':
+		default:
+			usage();
+			exit(0);
+		}
+	}
+	switch (click) {
+	case Buy:
+	case Sell:
+	case Flash:;
+	}
 }
diff --git a/json.cpp b/json.cpp
index 5fbc996..5d8e340 100644
--- a/json.cpp
+++ b/json.cpp
@@ -28,29 +28,29 @@
 
 void initialise()
 {
-    mapTypes = {{"FUTURE", FUTURE_TYPE},
-                {"SPREAD", SPREAD_TYPE},
-                {"CALL", CALL_TYPE},
-                {"PUT", PUT_TYPE},
-                {"SETTLEMENT", SETTLEMENT},
-                {"ADDED", ADDED},
-                {"DELETED", DELETED},
-                {"TRADE", TRADE},
-                {"BROKER_REQUEST", BROKER_REQUEST},
-                {"BROKER_ACK", BROKER_ACK},
-                {"BROKER_CONFIRM", BROKER_CONFIRM}};
+	mapTypes = {{"FUTURE", FUTURE_TYPE},
+	            {"SPREAD", SPREAD_TYPE},
+	            {"CALL", CALL_TYPE},
+	            {"PUT", PUT_TYPE},
+	            {"SETTLEMENT", SETTLEMENT},
+	            {"ADDED", ADDED},
+	            {"DELETED", DELETED},
+	            {"TRADE", TRADE},
+	            {"BROKER_REQUEST", BROKER_REQUEST},
+	            {"BROKER_ACK", BROKER_ACK},
+	            {"BROKER_CONFIRM", BROKER_CONFIRM}};
 
-    mapAnnounce = {{FUTURE_TYPE, book::FUTURE},
-                   {SPREAD_TYPE, book::SPREAD},
-                   {CALL_TYPE, book::CALL},
-                   {PUT_TYPE, book::PUT}};
+	mapAnnounce = {{FUTURE_TYPE, book::FUTURE},
+	               {SPREAD_TYPE, book::SPREAD},
+	               {CALL_TYPE, book::CALL},
+	               {PUT_TYPE, book::PUT}};
 
-    mapOrder = {{"BUY", book::Buy}, {"SELL", book::Sell}};
+	mapOrder = {{"BUY", book::Buy}, {"SELL", book::Sell}};
 
-    mapTrade = {{"BUY_AGGRESSOR", BUY_AGGRESSOR},
-                {"SELL_AGGRESSOR", SELL_AGGRESSOR}};
+	mapTrade = {{"BUY_AGGRESSOR", BUY_AGGRESSOR},
+	            {"SELL_AGGRESSOR", SELL_AGGRESSOR}};
 
-    mapOrderSide = {{book::Buy, "BUY"}, {book::Sell, "SELL"}};
+	mapOrderSide = {{book::Buy, "BUY"}, {book::Sell, "SELL"}};
 }
 
 Message* parseSingle(rapidjson::Value& d);
@@ -65,159 +65,159 @@
 
 std::queue<Message*> parse(std::string& str)
 {
-    std::queue<Message*> out;
-    rapidjson::Document d;
-    d.Parse(str.c_str());
-    if (d.IsArray()) {
-	for (rapidjson::SizeType i = 0; i < d.Size(); i++) {
-	    out.push(parseSingle(d[i]));
+	std::queue<Message*> out;
+	rapidjson::Document d;
+	d.Parse(str.c_str());
+	if (d.IsArray()) {
+		for (rapidjson::SizeType i = 0; i < d.Size(); i++) {
+			out.push(parseSingle(d[i]));
+		}
+	} else {
+		out.push(parseSingle(d));
 	}
-    } else {
-	out.push(parseSingle(d));
-    }
-    return out;
+	return out;
 }
 
 Message* parseSingle(rapidjson::Value& d)
 {
-    if (mapTypes.empty()) {
-	initialise();
-    }
-    Message* out;
-    switch (mapTypes[d["type"].GetString()]) {
-    case FUTURE_TYPE:
-    case SPREAD_TYPE:
-    case CALL_TYPE:
-    case PUT_TYPE:
-	out = announce(d);
-	break;
-    case SETTLEMENT:
-	out = settle(d);
-	break;
-    case ADDED:
-	out = added(d);
-	break;
-    case DELETED:
-	out = deleted(d);
-	break;
-    case TRADE:
-	out = trade(d);
-	break;
-    case BROKER_REQUEST:
-	out = brokerReq(d);
-	break;
-    case BROKER_ACK:
-	out = brokerAck(d);
-	break;
-    case BROKER_CONFIRM:
-	out = brokerCon(d);
-	break;
-    default:
-	out = new Message(NONE, "");
-	break;
-    }
-    return out;
+	if (mapTypes.empty()) {
+		initialise();
+	}
+	Message* out;
+	switch (mapTypes[d["type"].GetString()]) {
+	case FUTURE_TYPE:
+	case SPREAD_TYPE:
+	case CALL_TYPE:
+	case PUT_TYPE:
+		out = announce(d);
+		break;
+	case SETTLEMENT:
+		out = settle(d);
+		break;
+	case ADDED:
+		out = added(d);
+		break;
+	case DELETED:
+		out = deleted(d);
+		break;
+	case TRADE:
+		out = trade(d);
+		break;
+	case BROKER_REQUEST:
+		out = brokerReq(d);
+		break;
+	case BROKER_ACK:
+		out = brokerAck(d);
+		break;
+	case BROKER_CONFIRM:
+		out = brokerCon(d);
+		break;
+	default:
+		out = new Message(NONE, "");
+		break;
+	}
+	return out;
 }
 
 AnnounceMessage* announce(rapidjson::Value& d)
 {
-    // std::stringstream expiryStream(d["expiry"].GetString());
-    std::chrono::nanoseconds exp_time(0);
-    // expiryStream >>
-    // date::parse("%Y-%m-%f %H:%M%z", exp_time); // Parsing is broken
-    return new AnnounceMessage(
-	mapTypes[d["type"].GetString()], d["product"].GetString(),
-	d["stationId"].GetInt(), d["stationName"].GetString(),
-	d["unit"].GetString(), exp_time, d["aggressiveFee"].GetDouble(),
-	d["passiveFee"].GetDouble(), d["brokerFee"].GetDouble(),
-	d["sequence"].GetInt(), d["timestamp"].GetDouble());
+	// std::stringstream expiryStream(d["expiry"].GetString());
+	std::chrono::nanoseconds exp_time(0);
+	// expiryStream >>
+	// date::parse("%Y-%m-%f %H:%M%z", exp_time); // Parsing is broken
+	return new AnnounceMessage(
+		mapTypes[d["type"].GetString()], d["product"].GetString(),
+		d["stationId"].GetInt(), d["stationName"].GetString(),
+		d["unit"].GetString(), exp_time, d["aggressiveFee"].GetDouble(),
+		d["passiveFee"].GetDouble(), d["brokerFee"].GetDouble(),
+		d["sequence"].GetInt(), d["timestamp"].GetDouble());
 }
 
 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);
-    return new SettleMessage(
-	mapTypes[d["type"].GetString()], d["product"].GetString(),
-	d["stationName"].GetString(), exp_time, d["price"].GetDouble(),
-	d["sequence"].GetInt(), d["timestamp"].GetDouble());
+	// std::stringstream expiryStream(d["expiry"].GetString());
+	std::chrono::nanoseconds exp_time(0);
+	// expiryStream >> date::parse("%Y-%m-%d %H:%M%z", exp_time);
+	return new SettleMessage(
+		mapTypes[d["type"].GetString()], d["product"].GetString(),
+		d["stationName"].GetString(), exp_time, d["price"].GetDouble(),
+		d["sequence"].GetInt(), d["timestamp"].GetDouble());
 }
 
 AddedMessage* added(rapidjson::Value& d)
 {
-    return new AddedMessage(
-	mapTypes[d["type"].GetString()], d["product"].GetString(),
-	d["id"].GetString(), mapOrder[d["side"].GetString()],
-	d["price"].GetDouble(), d["filled"].GetInt(), d["resting"].GetInt(),
-	d["sequence"].GetInt(), d["timestamp"].GetDouble());
+	return new AddedMessage(
+		mapTypes[d["type"].GetString()], d["product"].GetString(),
+		d["id"].GetString(), mapOrder[d["side"].GetString()],
+		d["price"].GetDouble(), d["filled"].GetInt(), d["resting"].GetInt(),
+		d["sequence"].GetInt(), d["timestamp"].GetDouble());
 }
 
 DeletedMessage* deleted(rapidjson::Value& d)
 {
-    return new DeletedMessage(
-	mapTypes[d["type"].GetString()], d["product"].GetString(),
-	d["id"].GetString(), mapOrder[d["side"].GetString()],
-	d["sequence"].GetInt(), d["timestamp"].GetDouble());
+	return new DeletedMessage(
+		mapTypes[d["type"].GetString()], d["product"].GetString(),
+		d["id"].GetString(), mapOrder[d["side"].GetString()],
+		d["sequence"].GetInt(), d["timestamp"].GetDouble());
 }
 
 TradeMessage* trade(rapidjson::Value& d)
 {
-    return new TradeMessage(
-	mapTypes[d["type"].GetString()], d["product"].GetString(),
-	d["price"].GetDouble(), d["volume"].GetInt(), d["buyer"].GetString(),
-	d["seller"].GetString(), mapTrade[d["tradeType"].GetString()],
-	d["passiveOrder"].GetString(), d["passiveOrderRemaining"].GetInt(),
-	d["sequence"].GetInt(), d["timestamp"].GetDouble());
+	return new TradeMessage(
+		mapTypes[d["type"].GetString()], d["product"].GetString(),
+		d["price"].GetDouble(), d["volume"].GetInt(), d["buyer"].GetString(),
+		d["seller"].GetString(), mapTrade[d["tradeType"].GetString()],
+		d["passiveOrder"].GetString(), d["passiveOrderRemaining"].GetInt(),
+		d["sequence"].GetInt(), d["timestamp"].GetDouble());
 }
 
 BrokerRequest* brokerReq(rapidjson::Value& d)
 {
-    return new BrokerRequest(
-	mapTypes[d["type"].GetString()], d["product"].GetString(),
-	d["price"].GetDouble(), mapOrder[d["side"].GetString()],
-	d["volume"].GetInt(), d["counterparty"].GetString());
+	return new BrokerRequest(
+		mapTypes[d["type"].GetString()], d["product"].GetString(),
+		d["price"].GetDouble(), mapOrder[d["side"].GetString()],
+		d["volume"].GetInt(), d["counterparty"].GetString());
 }
 
 BrokerAck* brokerAck(rapidjson::Value& d)
 {
-    return new BrokerAck(mapTypes[d["type"].GetString()],
-                         d["product"].GetString(), d["price"].GetDouble(),
-                         mapOrder[d["side"].GetString()], d["volume"].GetInt(),
-                         d["counterparty"].GetString(), d["id"].GetString(),
-                         d["brokerTradeStatus"].GetString(),
-                         d["owner"].GetString());
+	return new BrokerAck(mapTypes[d["type"].GetString()],
+	                     d["product"].GetString(), d["price"].GetDouble(),
+	                     mapOrder[d["side"].GetString()], d["volume"].GetInt(),
+	                     d["counterparty"].GetString(), d["id"].GetString(),
+	                     d["brokerTradeStatus"].GetString(),
+	                     d["owner"].GetString());
 }
 BrokerConfirm* brokerCon(rapidjson::Value& d)
 {
-    return new BrokerConfirm(
-	mapTypes[d["type"].GetString()], d["product"].GetString(),
-	d["price"].GetDouble(), mapOrder[d["side"].GetString()],
-	d["volume"].GetInt(), d["counterparty"].GetString(),
-	d["id"].GetString());
+	return new BrokerConfirm(
+		mapTypes[d["type"].GetString()], d["product"].GetString(),
+		d["price"].GetDouble(), mapOrder[d["side"].GetString()],
+		d["volume"].GetInt(), d["counterparty"].GetString(),
+		d["id"].GetString());
 }
 
 Message::Message() : type(NONE), product("error") {}
 
 Message::Message(MessageTypes types, std::string product)
-    : type(types), product(product)
+	: type(types), product(product)
 {
 }
 
 FromExchange::FromExchange(MessageTypes type, std::string product,
                            uint64_t sequence, double timestamp)
-    : Message(type, product), sequence(sequence), timestamp(timestamp)
+	: Message(type, product), sequence(sequence), timestamp(timestamp)
 {
 }
 
 ToExchange::ToExchange(MessageTypes type, std::string product)
-    : Message(type, product){};
+	: Message(type, product){};
 
 Broker::Broker(MessageTypes type, std::string product, double price,
                book::OrderSideEnum side, uint64_t volume,
                std::string counterparty)
-    : Message(type, product), price(price), side(side), volume(volume),
-      counterparty(counterparty)
+	: Message(type, product), price(price), side(side), volume(volume),
+	  counterparty(counterparty)
 {
 }
 
@@ -227,9 +227,9 @@
                                  std::chrono::nanoseconds expiry, double aggFee,
                                  double pasFee, double broFee,
                                  uint64_t sequence, double timestamp)
-    : FromExchange(type, product, sequence, timestamp), stationId(stationId),
-      stationName(stationName), unit(unit), expiry(expiry), aggFee(aggFee),
-      pasFee(pasFee), broFee(broFee)
+	: FromExchange(type, product, sequence, timestamp), stationId(stationId),
+	  stationName(stationName), unit(unit), expiry(expiry), aggFee(aggFee),
+	  pasFee(pasFee), broFee(broFee)
 {
 }
 
@@ -237,59 +237,59 @@
                              std::string stationName,
                              std::chrono::nanoseconds expiry, double price,
                              uint64_t sequence, double timestamp)
-    : FromExchange(type, product, sequence, timestamp),
-      stationName(stationName), expiry(expiry), price(price)
+	: FromExchange(type, product, sequence, timestamp),
+	  stationName(stationName), expiry(expiry), price(price)
 {
 }
 
 AddMessage::AddMessage(MessageTypes type, std::string product, double price,
                        book::OrderSideEnum side, uint64_t volume)
-    : ToExchange(type, product), price(price), side(side), volume(volume)
+	: ToExchange(type, product), price(price), side(side), volume(volume)
 {
 }
 
 std::string AddMessage::as_string()
 {
-    if (mapOrderSide.empty()) initialise();
-    return "{\"type\": \"ADD\", \"product\": \"" + this->product +
-           "\", \"price\": " + std::to_string(this->price) + ", \"side\": \"" +
-           mapOrderSide[this->side] +
-           "\", \"volume\": " + std::to_string(this->volume) + "}";
+	if (mapOrderSide.empty()) initialise();
+	return "{\"type\": \"ADD\", \"product\": \"" + this->product +
+	       "\", \"price\": " + std::to_string(this->price) + ", \"side\": \"" +
+	       mapOrderSide[this->side] +
+	       "\", \"volume\": " + std::to_string(this->volume) + "}";
 }
 
 AddedMessage::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)
-    : FromExchange(type, product, sequence, timestamp), id(id), side(side),
-      price(price), filled(filled), resting(resting)
+	: FromExchange(type, product, sequence, timestamp), id(id), side(side),
+	  price(price), filled(filled), resting(resting)
 {
 }
 
 DeleteMessage::DeleteMessage(MessageTypes type, std::string product,
                              std::string id)
-    : ToExchange(type, product), id(id)
+	: ToExchange(type, product), id(id)
 {
 }
 
 std::string DeleteMessage::as_string()
 {
-    if (mapOrderSide.empty()) initialise();
-    return "{\"type\": \"DELETE\", \"product\": \"" + this->product +
-           "\", \"id\": \"" + this->id + "\"}";
+	if (mapOrderSide.empty()) initialise();
+	return "{\"type\": \"DELETE\", \"product\": \"" + this->product +
+	       "\", \"id\": \"" + this->id + "\"}";
 }
 
 DeletedMessage::DeletedMessage(MessageTypes type, std::string product,
                                std::string id, book::OrderSideEnum side,
                                uint64_t sequence, double timestamp)
-    : FromExchange(type, product, sequence, timestamp), id(id), side(side)
+	: FromExchange(type, product, sequence, timestamp), id(id), side(side)
 {
 }
 
 RejectMessage::RejectMessage(MessageTypes type, std::string product,
                              std::string error, uint64_t sequence,
                              double timestamp)
-    : FromExchange(type, product, sequence, timestamp), error(error)
+	: FromExchange(type, product, sequence, timestamp), error(error)
 {
 }
 
@@ -299,16 +299,16 @@
                            std::string passiveOrder,
                            uint64_t passiveOrderRemaining, uint64_t sequence,
                            double timestamp)
-    : FromExchange(type, product, sequence, timestamp), price(price),
-      volume(volume), buyer(buyer), seller(seller), tradeType(tradeType),
-      passiveOrder(passiveOrder), passiveOrderRemaining(passiveOrderRemaining)
+	: FromExchange(type, product, sequence, timestamp), price(price),
+	  volume(volume), buyer(buyer), seller(seller), tradeType(tradeType),
+	  passiveOrder(passiveOrder), passiveOrderRemaining(passiveOrderRemaining)
 {
 }
 
 BrokerRequest::BrokerRequest(MessageTypes type, std::string product,
                              double price, book::OrderSideEnum side,
                              uint64_t volume, std::string counterparty)
-    : Broker(type, product, price, side, volume, counterparty)
+	: Broker(type, product, price, side, volume, counterparty)
 {
 }
 
@@ -316,8 +316,8 @@
                      book::OrderSideEnum side, uint64_t volume,
                      std::string counterparty, std::string id,
                      std::string brokerTradeStatus, std::string owner)
-    : Broker(type, product, price, side, volume, counterparty), id(id),
-      brokerTradeStatus(brokerTradeStatus), owner(owner)
+	: Broker(type, product, price, side, volume, counterparty), id(id),
+	  brokerTradeStatus(brokerTradeStatus), owner(owner)
 {
 }
 
@@ -325,7 +325,7 @@
                              double price, book::OrderSideEnum side,
                              uint64_t volume, std::string counterparty,
                              std::string id)
-    : Broker(type, product, price, side, volume, counterparty), id(id)
+	: Broker(type, product, price, side, volume, counterparty), id(id)
 {
 }
 } // namespace json
diff --git a/json.hpp b/json.hpp
index 19a4b68..adcb147 100644
--- a/json.hpp
+++ b/json.hpp
@@ -11,157 +11,157 @@
 namespace json
 {
 enum MessageTypes {
-    FUTURE_TYPE,
-    SPREAD_TYPE,
-    CALL_TYPE,
-    PUT_TYPE,
-    SETTLEMENT,
-    ADD,
-    ADDED,
-    DELETE,
-    DELETED,
-    REJECT,
-    TRADE,
-    BROKER_REQUEST,
-    BROKER_ACK,
-    BROKER_CONFIRM,
-    NONE
+	FUTURE_TYPE,
+	SPREAD_TYPE,
+	CALL_TYPE,
+	PUT_TYPE,
+	SETTLEMENT,
+	ADD,
+	ADDED,
+	DELETE,
+	DELETED,
+	REJECT,
+	TRADE,
+	BROKER_REQUEST,
+	BROKER_ACK,
+	BROKER_CONFIRM,
+	NONE
 };
 
 enum TradeTypeEnum { BUY_AGGRESSOR, SELL_AGGRESSOR };
 
 struct Message {
-    MessageTypes type;
-    std::string product;
-    Message(MessageTypes type, std::string product);
-    Message();
-    virtual ~Message() = default;
+	MessageTypes type;
+	std::string product;
+	Message(MessageTypes type, std::string product);
+	Message();
+	virtual ~Message() = default;
 };
 
 struct FromExchange : public Message {
-    uint64_t sequence;
-    double timestamp;
-    FromExchange(MessageTypes type, std::string product, uint64_t sequence,
-                 double timestamp);
-    virtual ~FromExchange() = default;
+	uint64_t sequence;
+	double timestamp;
+	FromExchange(MessageTypes type, std::string product, uint64_t sequence,
+	             double timestamp);
+	virtual ~FromExchange() = default;
 };
 
 struct ToExchange : public Message {
-    ToExchange(MessageTypes type, std::string product);
-    virtual ~ToExchange() = default;
+	ToExchange(MessageTypes type, std::string product);
+	virtual ~ToExchange() = default;
 };
 
 struct Broker : public Message {
-    double price;
-    book::OrderSideEnum side;
-    uint64_t volume;
-    std::string counterparty;
-    Broker(MessageTypes type, std::string product, double price,
-           book::OrderSideEnum side, uint64_t volume, std::string counterparty);
-    virtual ~Broker() = default;
+	double price;
+	book::OrderSideEnum side;
+	uint64_t volume;
+	std::string counterparty;
+	Broker(MessageTypes type, std::string product, double price,
+	       book::OrderSideEnum side, uint64_t volume, std::string counterparty);
+	virtual ~Broker() = default;
 };
 
 struct AnnounceMessage : public FromExchange {
-    int stationId;
-    std::string stationName;
-    std::string unit;
-    std::chrono::nanoseconds expiry;
-    double aggFee;
-    double pasFee;
-    double broFee;
+	int stationId;
+	std::string stationName;
+	std::string unit;
+	std::chrono::nanoseconds expiry;
+	double aggFee;
+	double pasFee;
+	double broFee;
 
-    AnnounceMessage(MessageTypes type, std::string product,
-                    int stationId, std::string stationName,
-                    std::string unit, std::chrono::nanoseconds expiry,
-                    double aggFee, double pasFee, double broFee,
-                    uint64_t sequence, double timestamp);
+	AnnounceMessage(MessageTypes type, std::string product, int stationId,
+	                std::string stationName, std::string unit,
+	                std::chrono::nanoseconds expiry, double aggFee,
+	                double pasFee, double broFee, uint64_t sequence,
+	                double timestamp);
 };
 
 struct SettleMessage : public FromExchange {
-    std::string stationName;
-    std::chrono::nanoseconds expiry;
-    double price;
-    SettleMessage(MessageTypes type, std::string product,
-                  std::string stationName, std::chrono::nanoseconds expiry,
-                  double price, uint64_t sequence, double timestamp);
+	std::string stationName;
+	std::chrono::nanoseconds expiry;
+	double price;
+	SettleMessage(MessageTypes type, std::string product,
+	              std::string stationName, std::chrono::nanoseconds expiry,
+	              double price, uint64_t sequence, double timestamp);
 };
 
 struct AddMessage : public ToExchange {
-    double price;
-    book::OrderSideEnum side;
-    uint64_t volume;
-    AddMessage(MessageTypes type, std::string product, double price,
-               book::OrderSideEnum side, uint64_t volume);
-    std::string as_string();
+	double price;
+	book::OrderSideEnum side;
+	uint64_t volume;
+	AddMessage(MessageTypes type, std::string product, double price,
+	           book::OrderSideEnum side, uint64_t volume);
+	std::string as_string();
 };
 
 struct AddedMessage : public FromExchange {
-    std::string id;
-    book::OrderSideEnum side;
-    double price;
-    uint64_t filled;
-    uint64_t resting;
-    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);
+	std::string id;
+	book::OrderSideEnum side;
+	double price;
+	uint64_t filled;
+	uint64_t resting;
+	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);
 };
 
 struct DeleteMessage : public ToExchange {
-    std::string id;
-    DeleteMessage(MessageTypes type, std::string product, std::string id);
-    std::string as_string();
+	std::string id;
+	DeleteMessage(MessageTypes type, std::string product, std::string id);
+	std::string as_string();
 };
 
 struct DeletedMessage : public FromExchange {
-    std::string id;
-    book::OrderSideEnum side;
-    DeletedMessage(MessageTypes type, std::string product, std::string id,
-                   book::OrderSideEnum side, uint64_t sequence,
-                   double timestamp);
+	std::string id;
+	book::OrderSideEnum side;
+	DeletedMessage(MessageTypes type, std::string product, std::string id,
+	               book::OrderSideEnum side, uint64_t sequence,
+	               double timestamp);
 };
 
 struct RejectMessage : public FromExchange {
-    std::string error;
-    RejectMessage(MessageTypes type, std::string product, std::string error,
-                  uint64_t sequence, double timestamp);
+	std::string error;
+	RejectMessage(MessageTypes type, std::string product, std::string error,
+	              uint64_t sequence, double timestamp);
 };
 
 struct TradeMessage : public FromExchange {
-    double price;
-    uint64_t volume;
-    std::string buyer;
-    std::string seller;
-    TradeTypeEnum tradeType;
-    std::string passiveOrder;
-    uint64_t passiveOrderRemaining;
-    TradeMessage(MessageTypes type, std::string product, double price,
-                 uint64_t volume, std::string buyer, std::string seller,
-                 TradeTypeEnum tradeType, std::string passiveOrder,
-                 uint64_t passiveOrderRemaining, uint64_t sequence,
-                 double timestamp);
+	double price;
+	uint64_t volume;
+	std::string buyer;
+	std::string seller;
+	TradeTypeEnum tradeType;
+	std::string passiveOrder;
+	uint64_t passiveOrderRemaining;
+	TradeMessage(MessageTypes type, std::string product, double price,
+	             uint64_t volume, std::string buyer, std::string seller,
+	             TradeTypeEnum tradeType, std::string passiveOrder,
+	             uint64_t passiveOrderRemaining, uint64_t sequence,
+	             double timestamp);
 };
 
 struct BrokerRequest : public Broker {
-    BrokerRequest(MessageTypes type, std::string product, double price,
-                  book::OrderSideEnum side, uint64_t volume,
-                  std::string counterparty);
+	BrokerRequest(MessageTypes type, std::string product, double price,
+	              book::OrderSideEnum side, uint64_t volume,
+	              std::string counterparty);
 };
 
 struct BrokerAck : public Broker {
-    std::string id;
-    std::string brokerTradeStatus;
-    std::string owner;
-    BrokerAck(MessageTypes type, std::string product, double price,
-              book::OrderSideEnum side, uint64_t volume,
-              std::string counterparty, std::string id,
-              std::string brokerTradeStatus, std::string owner);
+	std::string id;
+	std::string brokerTradeStatus;
+	std::string owner;
+	BrokerAck(MessageTypes type, std::string product, double price,
+	          book::OrderSideEnum side, uint64_t volume,
+	          std::string counterparty, std::string id,
+	          std::string brokerTradeStatus, std::string owner);
 };
 
 struct BrokerConfirm : public Broker {
-    std::string id;
-    BrokerConfirm(MessageTypes type, std::string product, double price,
-                  book::OrderSideEnum side, uint64_t volume,
-                  std::string counterparty, std::string id);
+	std::string id;
+	BrokerConfirm(MessageTypes type, std::string product, double price,
+	              book::OrderSideEnum side, uint64_t volume,
+	              std::string counterparty, std::string id);
 };
 
 std::queue<Message*> parse(std::string& str);
diff --git a/main.cpp b/main.cpp
deleted file mode 100644
index 20d1aa9..0000000
--- a/main.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-#include "book.hpp"
-#include "json.hpp"
-#include "protocol.hpp"
-#include <chrono>
-
-int main(void)
-{
-    book::Book b = book::testBook(10, true);
-    auto bs = protocol::recoverBook();
-    std::cout << bs.size() << std::endl;
-    for (auto i : bs) {
-        std::cout << i.first << std::endl;
-        i.second.printBook();
-    }
-}
diff --git a/protocol.cpp b/protocol.cpp
index 604c725..c15fded 100644
--- a/protocol.cpp
+++ b/protocol.cpp
@@ -15,148 +15,151 @@
 namespace protocol
 {
 static std::unordered_map<json::MessageTypes, book::ProductTypeEnum>
-    mapAnnounce;
+	mapAnnounce;
 std::string server = std::string(HOST) + ":" + std::string(PORT);
 httplib::Client cli("http://" + server);
 
 void initialise()
 {
-    mapAnnounce = {{json::FUTURE_TYPE, book::FUTURE},
-                   {json::SPREAD_TYPE, book::SPREAD},
-                   {json::CALL_TYPE, book::CALL},
-                   {json::PUT_TYPE, book::PUT}};
+	mapAnnounce = {{json::FUTURE_TYPE, book::FUTURE},
+	               {json::SPREAD_TYPE, book::SPREAD},
+	               {json::CALL_TYPE, book::CALL},
+	               {json::PUT_TYPE, book::PUT}};
 }
 
 std::unordered_map<std::string, book::Book> recoverBook()
 {
-    std::unordered_map<std::string, book::Book> bs;
-    std::ifstream sampleFile("../data.test");
-    std::stringstream ss;
-    ss << sampleFile.rdbuf();
-    // httplib::Client cli("http://" + server);
-    // auto res = cli.Get("/recover");
-    std::string l;
-    l = ss.str();
-    std::queue<json::Message*> a(json::parse(l));
-    while (!a.empty()) {
-	protocol::handleMessage(bs, a.front());
-	delete a.front();
-	a.pop();
-    }
-    return bs;
+	std::unordered_map<std::string, book::Book> bs;
+	// std::ifstream sampleFile("../data.test");
+	// std::stringstream ss;
+	// ss << sampleFile.rdbuf();
+	httplib::Client cli("http://" + server);
+	auto res = cli.Get("/recover");
+	std::string l;
+	// l = ss.str();
+	l = res->body;
+	std::queue<json::Message*> a(json::parse(l));
+	while (!a.empty()) {
+		protocol::handleMessage(bs, a.front());
+		delete a.front();
+		a.pop();
+	}
+	return bs;
 }
 
 json::Message* addOrder(json::AddMessage& order)
 {
-    std::string message = "{\"message\": " + order.as_string() + ", " +
-                          "\"username\": \"" + std::string(USER) +
-                          "\", \"password\": \"" + std::string(PASS) + "\"}";
-    return send(message);
+	std::string message = "{\"message\": " + order.as_string() + ", " +
+	                      "\"username\": \"" + std::string(USER) +
+	                      "\", \"password\": \"" + std::string(PASS) + "\"}";
+	return send(message);
 }
 
 json::Message* deleteOrder(json::DeleteMessage& order)
 {
-    std::string message = "{\"message\": " + order.as_string() +
-                          ", \"username\": \"" + std::string(USER) +
-                          "\", \"password\": \"" + std::string(PASS) + "\"}";
-    return send(message);
+	std::string message = "{\"message\": " + order.as_string() +
+	                      ", \"username\": \"" + std::string(USER) +
+	                      "\", \"password\": \"" + std::string(PASS) + "\"}";
+	return send(message);
 }
 
 void handleMessage(std::unordered_map<std::string, book::Book>& bs,
                    json::Message* message)
 {
-    if (mapAnnounce.empty()) initialise();
-    switch (message->type) {
-    case json::FUTURE_TYPE:
-    case json::SPREAD_TYPE:
-    case json::CALL_TYPE:
-    case json::PUT_TYPE:
-	announce(bs, dynamic_cast<json::AnnounceMessage*>(message));
-	break;
-    case json::SETTLEMENT:
-	settle(bs, dynamic_cast<json::SettleMessage*>(message));
-	break;
-    case json::ADDED:
-	addedOrder(bs, dynamic_cast<json::AddedMessage*>(message));
-	break;
-    case json::DELETED:
-	deletedOrder(bs, dynamic_cast<json::DeletedMessage*>(message));
-	break;
-    case json::TRADE:
-	tradeOrder(bs, dynamic_cast<json::TradeMessage*>(message));
-	break;
-    case json::BROKER_REQUEST:
-    case json::BROKER_ACK:
-    case json::BROKER_CONFIRM:
-	broker(bs, dynamic_cast<json::Broker*>(message));
-	break;
-    default:;
-    }
+	if (mapAnnounce.empty()) initialise();
+	switch (message->type) {
+	case json::FUTURE_TYPE:
+	case json::SPREAD_TYPE:
+	case json::CALL_TYPE:
+	case json::PUT_TYPE:
+		announce(bs, dynamic_cast<json::AnnounceMessage*>(message));
+		break;
+	case json::SETTLEMENT:
+		settle(bs, dynamic_cast<json::SettleMessage*>(message));
+		break;
+	case json::ADDED:
+		addedOrder(bs, dynamic_cast<json::AddedMessage*>(message));
+		break;
+	case json::DELETED:
+		deletedOrder(bs, dynamic_cast<json::DeletedMessage*>(message));
+		break;
+	case json::TRADE:
+		tradeOrder(bs, dynamic_cast<json::TradeMessage*>(message));
+		break;
+	case json::BROKER_REQUEST:
+	case json::BROKER_ACK:
+	case json::BROKER_CONFIRM:
+		broker(bs, dynamic_cast<json::Broker*>(message));
+		break;
+	default:;
+	}
 }
 
 void announce(std::unordered_map<std::string, book::Book>& bs,
               json::AnnounceMessage* message)
 {
-    bs[message->product] =
-	book::Book(mapAnnounce[message->type], message->product,
-                   message->stationId, message->unit, message->expiry,
-                   message->aggFee, message->pasFee, message->broFee);
+	bs[message->product] =
+		book::Book(mapAnnounce[message->type], message->product,
+	               message->stationId, message->unit, message->expiry,
+	               message->aggFee, message->pasFee, message->broFee);
 }
 void settle(std::unordered_map<std::string, book::Book>& bs,
             json::SettleMessage* message)
 {
-    bs.erase(message->product);
+	bs.erase(message->product);
 }
 void addedOrder(std::unordered_map<std::string, book::Book>& bs,
                 json::AddedMessage* message)
 {
-    if (message->side == book::Buy) {
-	book::Order t(message->price, book::Buy, message->resting,
-	              message->timestamp, message->id);
-	bs[message->product].bid(t);
-    } else {
-	book::Order t(message->price, book::Sell, message->resting,
-	              message->timestamp, message->id);
-	bs[message->product].ask(t);
-    }
+	if (message->side == book::Buy) {
+		book::Order t(message->price, book::Buy, message->resting,
+		              message->timestamp, message->id);
+		bs[message->product].bid(t);
+	} else {
+		book::Order t(message->price, book::Sell, message->resting,
+		              message->timestamp, message->id);
+		bs[message->product].ask(t);
+	}
 }
 void deletedOrder(std::unordered_map<std::string, book::Book>& bs,
                   json::DeletedMessage* message)
 {
-    if (message->side == book::Buy) {
-        for (std::size_t i = 0; i < bs[message->product].bidSide.size(); i++) {
-	    if (bs[message->product].bidSide[i].id == message->id) {
-            bs[message->product].bidSide[i] = bs[message->product].bidSide.back();
-            bs[message->product].bidSide.erase(bs[message->product].bidSide.end());
-            std::make_heap(bs[message->product].bidSide.begin(),
-                           bs[message->product].bidSide.end(),
-                           std::less<book::Level>());
-	    }
+	if (message->side == book::Buy) {
+		for (std::size_t i = 0; i < bs[message->product].bidSide.size(); i++) {
+			if (bs[message->product].bidSide[i].id == message->id) {
+				bs[message->product].bidSide[i] =
+					bs[message->product].bidSide.back();
+				bs[message->product].bidSide.pop_back();
+				std::make_heap(bs[message->product].bidSide.begin(),
+				               bs[message->product].bidSide.end(),
+				               std::less<book::Level>());
+			}
+		}
+	} else {
+		for (std::size_t i = 0; i < bs[message->product].askSide.size(); i++) {
+			if (bs[message->product].askSide[i].id == message->id) {
+				bs[message->product].askSide[i] =
+					bs[message->product].askSide.back();
+				bs[message->product].askSide.pop_back();
+				std::make_heap(bs[message->product].askSide.begin(),
+				               bs[message->product].askSide.end(),
+				               std::greater<book::Level>());
+			}
+		}
 	}
-    } else {
-        for (std::size_t i = 0; i < bs[message->product].askSide.size(); i++) {
-	    if (bs[message->product].askSide[i].id == message->id) {
-            bs[message->product].askSide[i] = bs[message->product].askSide.back();
-            bs[message->product].askSide.erase(bs[message->product].askSide.end());
-		std::make_heap(bs[message->product].askSide.begin(),
-		               bs[message->product].askSide.end(),
-		               std::greater<book::Level>());
-	    }
-	}
-    }
 }
 void tradeOrder(std::unordered_map<std::string, book::Book>& bs,
                 json::TradeMessage* message)
 {
-    if (message->tradeType == json::BUY_AGGRESSOR) {
-	book::Order t(message->price, book::Buy, message->volume,
-	              message->timestamp, message->passiveOrder);
-	bs[message->product].bid(t);
-    } else {
-	book::Order t(message->price, book::Sell, message->volume,
-	              message->timestamp, message->passiveOrder);
-	bs[message->product].ask(t);
-    }
+	if (message->tradeType == json::BUY_AGGRESSOR) {
+		book::Order t(message->price, book::Buy, message->volume,
+		              message->timestamp, message->passiveOrder);
+		bs[message->product].bid(t);
+	} else {
+		book::Order t(message->price, book::Sell, message->volume,
+		              message->timestamp, message->passiveOrder);
+		bs[message->product].ask(t);
+	}
 }
 void broker(std::unordered_map<std::string, book::Book>& bs,
             json::Broker* message)
@@ -165,9 +168,9 @@
 
 json::Message* send(std::string& message)
 {
-    auto res = cli.Post("/execution", message, "text/plain");
-    std::queue<json::Message*> a = json::parse(res->body);
-    return a.front();
+	auto res = cli.Post("/execution", message, "text/plain");
+	std::queue<json::Message*> a = json::parse(res->body);
+	return a.front();
 }
 
 } // namespace protocol
diff --git a/secrets.hpp b/secrets.hpp
index d9d7ae8..398da5c 100644
--- a/secrets.hpp
+++ b/secrets.hpp
@@ -2,14 +2,14 @@
 
 #include <string>
 
-#define TEST
+// #define TEST
 
-constexpr const char* HOST="sytev070";
+constexpr const char* HOST = "sytev070";
 #ifdef TEST
-constexpr const char* PORT="9005";
+constexpr const char* PORT = "9005";
 #else
-constexpr const char* PORT="9000";
+constexpr const char* PORT = "9000";
 #endif
 
-constexpr const char* USER="jgrunbau";
-constexpr const char* PASS="b7d630945a0854581d9f86ba147f34a5";
+constexpr const char* USER = "jgrunbau";
+constexpr const char* PASS = "b7d630945a0854581d9f86ba147f34a5";
diff --git a/strat.cpp b/strat.cpp
index ef8b0ba..fdd367d 100644
--- a/strat.cpp
+++ b/strat.cpp
@@ -1,5 +1,6 @@
 #include "strat.hpp"
 
-namespace strat {
+namespace strat
+{
 
 }
diff --git a/strat.hpp b/strat.hpp
index 893edce..836984b 100644
--- a/strat.hpp
+++ b/strat.hpp
@@ -1,8 +1,9 @@
 #pragma once
 
 #include "book.hpp"
-#include <unordered_map>
 #include <string>
+#include <unordered_map>
 
-namespace strat {
+namespace strat
+{
 }
diff --git a/test.cpp b/test.cpp
index 20d1aa9..843cbe3 100644
--- a/test.cpp
+++ b/test.cpp
@@ -5,11 +5,11 @@
 
 int main(void)
 {
-    book::Book b = book::testBook(10, true);
-    auto bs = protocol::recoverBook();
-    std::cout << bs.size() << std::endl;
-    for (auto i : bs) {
-        std::cout << i.first << std::endl;
-        i.second.printBook();
-    }
+	// book::Book b = book::testBook(10, true);
+	auto bs = protocol::recoverBook();
+	std::cout << bs.size() << std::endl;
+	for (auto i : bs) {
+		std::cout << i.first << std::endl;
+		i.second.printBook();
+	}
 }

--
Gitblit v1.9.3