#include "system/stream.h"
 
#include <iostream>
 
 
{
protected:
    void onAddSymbol(
const Symbol& symbol)
 override 
    { std::cout << "Add symbol: " << symbol << std::endl; }
    void onDeleteSymbol(
const Symbol& symbol)
 override 
    { std::cout << "Delete symbol: " << symbol << std::endl; }
 
    void onAddOrderBook(
const OrderBook& order_book)
 override 
    { std::cout << "Add order book: " << order_book << std::endl; }
    void onUpdateOrderBook(
const OrderBook& order_book, 
bool top)
 override 
    { std::cout << "Update order book: " << order_book << (top ? " - Top of the book!" : "") << std::endl; }
    void onDeleteOrderBook(
const OrderBook& order_book)
 override 
    { std::cout << "Delete order book: " << order_book << std::endl; }
 
    void onAddLevel(
const OrderBook& order_book, 
const Level& level, 
bool top)
 override 
    { std::cout << "Add level: " << level << (top ? " - Top of the book!" : "") << std::endl; }
    void onUpdateLevel(
const OrderBook& order_book, 
const Level& level, 
bool top)
 override 
    { std::cout << "Update level: " << level << (top ? " - Top of the book!" : "") << std::endl; }
    void onDeleteLevel(
const OrderBook& order_book, 
const Level& level, 
bool top)
 override 
    { std::cout << "Delete level: " << level << (top ? " - Top of the book!" : "") << std::endl; }
 
    void onAddOrder(
const Order& order)
 override 
    { std::cout << "Add order: " << order << std::endl; }
    void onUpdateOrder(
const Order& order)
 override 
    { std::cout << "Update order: " << order << std::endl; }
    void onDeleteOrder(
const Order& order)
 override 
    { std::cout << "Delete order: " << order << std::endl; }
 
    void onExecuteOrder(
const Order& order, uint64_t price, uint64_t quantity)
 override 
    { std::cout << "Execute order: " << order << " with price " << price << " and quantity " << quantity << std::endl; }
};
 
{
public:
 
protected:
    {
        _market.AddSymbol(symbol);
        _market.AddOrderBook(symbol);
        return true;
    }
 
    {
        return true;
    }
 
    {
        return true;
    }
 
    {
        return true;
    }
 
    {
        return true;
    }
 
    {
        return true;
    }
 
    {
        return true;
    }
 
    {
        return true;
    }
 
private:
};
 
int main(int argc, char** argv)
{
    MyMarketHandler market_handler;
    MyITCHHandler itch_handler(market);
 
    
    size_t size;
    uint8_t buffer[8192];
    CppCommon::StdInput input;
    while ((size = input.Read(buffer, sizeof(buffer))) > 0)
    {
        
        itch_handler.Process(buffer, size);
    }
 
    return 0;
}
NASDAQ ITCH handler class.
NASDAQ ITCH handler definition.
Market manager definition.
ITCH protocol definitions.
Matching engine definitions.
Add Order with MPID Attribution Message.
uint64_t OrderReferenceNumber
uint64_t OrderReferenceNumber
uint64_t OrderReferenceNumber
uint64_t OrderReferenceNumber
uint64_t OrderReferenceNumber
Order Executed With Price Message.
uint64_t OrderReferenceNumber
uint64_t OriginalOrderReferenceNumber
uint64_t NewOrderReferenceNumber