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
---
click.cpp | 54 +++++++++++++++++++++++++++++++++---------------------
1 files changed, 33 insertions(+), 21 deletions(-)
diff --git a/click.cpp b/click.cpp
index 932e618..0ee5fdc 100644
--- a/click.cpp
+++ b/click.cpp
@@ -2,9 +2,11 @@
#include "json.hpp"
#include "protocol.hpp"
+#include <cstdint>
#include <cstdlib>
#include <getopt.h>
#include <iostream>
+#include <string>
#include <unordered_map>
enum clickType { Buy, Sell, Flash, Delete };
@@ -30,6 +32,7 @@
<< "\t-p price" << std::endl
<< "\t-v volume" << std::endl
<< "\t-i id" << std::endl
+ << "\t-l loop count (default to 1)" << std::endl
<< "Always need product, need side, price and volume for "
"adding/flash, need id for deleting"
<< std::endl;
@@ -69,10 +72,12 @@
if (d->type == json::DELETED) {
std::cout << static_cast<json::DeletedMessage*>(d)->as_string()
<< std::endl;
- } else {
+ } else if (d->type == json::REJECT) {
std::cout << static_cast<json::RejectMessage*>(d)->as_string()
<< std::endl;
- }
+ } else if (d->type == json::ERROR) {
+ std::cout << static_cast<json::ErrorMessage*>(d)->as_string() << std::endl;
+ }
delete b;
delete d;
}
@@ -87,7 +92,7 @@
} else if (b->type == json::REJECT) {
std::cout << static_cast<json::RejectMessage*>(b)->as_string()
<< std::endl;
- } else {
+ } else if (b->type == json::ERROR) {
std::cout << static_cast<json::ErrorMessage*>(b)->as_string()
<< std::endl;
}
@@ -100,11 +105,12 @@
double price;
clickType click, side;
uint64_t volume;
+ uint64_t times = 1;
initialise();
if (argc == 1) {
usage(), exit(0);
}
- while ((c = getopt(argc, argv, "a::t::s::p::v::i::")) != -1) {
+ while ((c = getopt(argc, argv, "a::t::s::p::v::i::l::")) != -1) {
switch (c) {
case 'a':
product = std::string(optarg);
@@ -124,6 +130,9 @@
case 'i':
id = std::string(optarg);
break;
+ case 'l':
+ times = std::stoll(optarg);
+ break;
case '?':
std::cout << "*1" << std::endl;
default:
@@ -132,21 +141,24 @@
exit(0);
}
}
- switch (click) {
- case Buy:
- buy(product, price, volume);
- break;
- case Sell:
- sell(product, price, volume);
- break;
- case Flash:
- if (side == clickType::Buy)
- flash(product, price, volume, book::Buy);
- else
- flash(product, price, volume, book::Sell);
- break;
- case Delete:
- deleteOrder(product, id);
- break;
- }
+ for (std::uint64_t i = 0; i < times; i++)
+ {
+ switch (click) {
+ case Buy:
+ buy(product, price, volume);
+ break;
+ case Sell:
+ sell(product, price, volume);
+ break;
+ case Flash:
+ if (side == clickType::Buy)
+ flash(product, price, volume, book::Buy);
+ else
+ flash(product, price, volume, book::Sell);
+ break;
+ case Delete:
+ deleteOrder(product, id);
+ break;
+ }
+ }
}
--
Gitblit v1.10.0