From 9ae8b92ba549ab916c88e9004a95c1ed0cd16059 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Wed, 19 Jan 2022 10:48:57 +0000
Subject: [PATCH] Added loop to click trader and hit self for perf testing

---
 protocol.cpp |   64 ++++++++++++++++++++++---------
 1 files changed, 45 insertions(+), 19 deletions(-)

diff --git a/protocol.cpp b/protocol.cpp
index a4b8475..f1083c0 100644
--- a/protocol.cpp
+++ b/protocol.cpp
@@ -175,31 +175,57 @@
                   json::DeletedMessage* message)
 {
 	if (message->side == book::Buy) {
-		bs[message->product].bidSide.erase(message->id);
+        for (auto i = bs[message->product].bidSide.begin(); i != bs[message->product].bidSide.end(); i++) {
+                    if (i->id == message->id) {
+                        bs[message->product].bidSide.erase(i);
+                        break;
+                    }
+                }
 	} else {
-		bs[message->product].askSide.erase(message->id);
+        for (auto i = bs[message->product].askSide.begin(); i != bs[message->product].askSide.end(); i++) {
+                    if (i->id == message->id) {
+                        bs[message->product].askSide.erase(i);
+                        break;
+                    }
+                }
 	}
 }
 void tradeOrder(std::unordered_map<std::string, book::Book>& bs,
                 json::TradeMessage* message)
 {
-	if (bs.find(message->passiveOrder) != bs.end()) {
-		if (message->tradeType == json::BUY_AGGRESSOR) {
-			if (message->passiveOrderRemaining > 0) {
-				bs[message->product].askSide.at(message->passiveOrder).volume =
-					message->passiveOrderRemaining;
-			} else {
-				bs[message->product].askSide.erase(message->passiveOrder);
-			}
-		} else if (message->tradeType == json::SELL_AGGRESSOR) {
-			if (message->passiveOrderRemaining > 0) {
-				bs[message->product].bidSide.at(message->passiveOrder).volume =
-					message->passiveOrderRemaining;
-			} else {
-				bs[message->product].bidSide.erase(message->passiveOrder);
-			}
-		}
-	}
+    if (message->tradeType == json::BUY_AGGRESSOR) {
+        if (message->passiveOrderRemaining > 0) {
+            for (auto& i : bs[message->product].askSide) {
+                if (i.id == message->passiveOrder) {
+                    i.volume = message->passiveOrderRemaining;
+                    break;
+                }
+            }
+        } else {
+            for (auto i = bs[message->product].askSide.begin(); i != bs[message->product].askSide.end(); i++) {
+                if (i->id == message->passiveOrder) {
+                    bs[message->product].askSide.erase(i);
+                    break;
+                }
+            }
+        }
+    } else if (message->tradeType == json::SELL_AGGRESSOR) {
+        if (message->passiveOrderRemaining > 0) {
+            for (auto& i : bs[message->product].bidSide) {
+                if (i.id == message->passiveOrder) {
+                    i.volume = message->passiveOrderRemaining;
+                    break;
+                }
+            }
+        } else {
+            for (auto i = bs[message->product].bidSide.begin(); i != bs[message->product].bidSide.end(); i++) {
+                if (i->id == message->passiveOrder) {
+                    bs[message->product].bidSide.erase(i);
+                    break;
+                }
+            }
+        }
+    }
 }
 
 void broker(std::unordered_map<std::string, book::Book>& bs,

--
Gitblit v1.9.3