kraken-assessment/src/engine/csv-engine-listener.cc
Bruno BELANYI 346dfc4e17 kraken: engine: add 'CsvEngineListener'
This is the listener that implements the expected output.
2022-03-12 11:07:20 +01:00

67 lines
1.7 KiB
C++

#include "csv-engine-listener.hh"
namespace kraken::engine {
CsvEngineListener::CsvEngineListener() = default;
CsvEngineListener::~CsvEngineListener() = default;
void CsvEngineListener::on_acknowledgement(User user, UserOrderId id) {
output_.emplace_back(csv::csv_line_type{
"A",
std::to_string(int(user)),
std::to_string(int(id)),
});
}
void CsvEngineListener::on_bad_order(User, UserOrderId) {
// Nothing to do
}
void CsvEngineListener::on_top_of_book_change(Side side, Price price,
Quantity quantity) {
output_.emplace_back(csv::csv_line_type{
"B",
side == Side::BID ? "B" : "S",
std::to_string(int(price)),
std::to_string(int(quantity)),
});
}
void CsvEngineListener::on_top_of_book_change(Side side) {
output_.emplace_back(csv::csv_line_type{
"B",
side == Side::BID ? "B" : "S",
"-",
"-",
});
}
void CsvEngineListener::on_rejection(User user, UserOrderId id) {
output_.emplace_back(csv::csv_line_type{
"R",
std::to_string(int(user)),
std::to_string(int(id)),
});
}
void CsvEngineListener::on_match(User user_buy, UserOrderId id_bid,
User user_sell, UserOrderId id_ask,
Price price, Quantity quantity) {
output_.emplace_back(csv::csv_line_type{
"T",
std::to_string(int(user_buy)),
std::to_string(int(id_bid)),
std::to_string(int(user_sell)),
std::to_string(int(id_ask)),
std::to_string(int(price)),
std::to_string(int(quantity)),
});
}
void CsvEngineListener::on_flush() {
// Nothing to do
}
} // namespace kraken::engine