CBOE Emulator  1.0
echo.hpp
1 // A data feed handler that writes every message to an output stream.
2 // Copyright 2020 Christian Kauten
3 //
4 // Author: Christian Kauten (kautenja@auburn.edu)
5 //
6 // This program is free software: you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation, either version 3 of the License, or
9 // (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
16 //
17 
18 #ifndef DATA_FEED_HANDLERS_ECHO_HPP
19 #define DATA_FEED_HANDLERS_ECHO_HPP
20 
21 #include "data_feed/receiver.hpp"
22 #include <ostream>
23 
25 namespace DataFeed {
26 
28 namespace Handlers {
29 
31 class Echo {
32  private:
34  std::ostream& stream;
35 
36  public:
41  Echo(std::ostream& stream_ = std::cout) : stream(stream_) { }
42 
48  inline void did_receive(Receiver<Echo>* receiver, const Messages::StartOfSession& message) {
49  stream << message << std::endl;
50  stream << receiver->get_book() << std::endl;
51  }
52 
58  inline void did_receive(Receiver<Echo>* receiver, const Messages::EndOfSession& message) {
59  stream << message << std::endl;
60  stream << receiver->get_book() << std::endl;
61  }
62 
68  inline void did_receive(Receiver<Echo>* receiver, const Messages::Clear& message) {
69  stream << message << std::endl;
70  stream << receiver->get_book() << std::endl;
71  }
72 
78  inline void did_receive(Receiver<Echo>* receiver, const Messages::AddOrder& message) {
79  stream << message << std::endl;
80  stream << receiver->get_book() << std::endl;
81  }
82 
88  inline void did_receive(Receiver<Echo>* receiver, const Messages::DeleteOrder& message) {
89  stream << message << std::endl;
90  stream << receiver->get_book() << std::endl;
91  }
92 
98  inline void did_receive(Receiver<Echo>* receiver, const Messages::Trade& message) {
99  stream << message << std::endl;
100  stream << receiver->get_book() << std::endl;
101  }
102 };
103 
104 } // namespace Handlers
105 
106 } // namespace DataFeed
107 
108 #endif // DATA_FEED_HANDLERS_ECHO_HPP
DataFeed::Receiver
A multi-cast receiver for recreating a LOB::LimitOrderBook from network messages.
Definition: receiver.hpp:36
DataFeed::Messages::Trade
A message that indicates a market order matches with a limit order.
Definition: messages.hpp:387
DataFeed::Handlers::Echo::did_receive
void did_receive(Receiver< Echo > *receiver, const Messages::DeleteOrder &message)
Handle a delete order message.
Definition: echo.hpp:88
DataFeed::Handlers::Echo::did_receive
void did_receive(Receiver< Echo > *receiver, const Messages::Trade &message)
Handle a trade message.
Definition: echo.hpp:98
DataFeed::Messages::DeleteOrder
A message that indicates a limit order was added to the book.
Definition: messages.hpp:332
DataFeed::Receiver::get_book
const LOB::LimitOrderBook & get_book()
Return the limit order book for this receiver.
Definition: receiver.hpp:214
DataFeed::Messages::EndOfSession
A message that indicates the end of a trading session.
Definition: messages.hpp:506
DataFeed::Messages::Clear
A message that indicates to clear all orders in the order book.
Definition: messages.hpp:213
DataFeed::Handlers::Echo::did_receive
void did_receive(Receiver< Echo > *receiver, const Messages::EndOfSession &message)
Handle an end of session message.
Definition: echo.hpp:58
DataFeed::Messages::StartOfSession
A message that indicates the start of a trading session.
Definition: messages.hpp:460
DataFeed
Logic for sending and receiving messages on a financial data feed.
Definition: heartbeat.hpp:28
DataFeed::Handlers::Echo::did_receive
void did_receive(Receiver< Echo > *receiver, const Messages::Clear &message)
Handle a clear book message.
Definition: echo.hpp:68
DataFeed::Handlers::Echo
A Receiver handler that writes every message to an output stream.
Definition: echo.hpp:31
DataFeed::Handlers::Echo::did_receive
void did_receive(Receiver< Echo > *receiver, const Messages::AddOrder &message)
Handle an add order message.
Definition: echo.hpp:78
DataFeed::Handlers::Echo::Echo
Echo(std::ostream &stream_=std::cout)
Initialize a new data feed echo handler.
Definition: echo.hpp:41
DataFeed::Handlers::Echo::did_receive
void did_receive(Receiver< Echo > *receiver, const Messages::StartOfSession &message)
Handle a start of session message.
Definition: echo.hpp:48
DataFeed::Messages::AddOrder
A message that indicates a limit order was added to the book.
Definition: messages.hpp:259