34 struct OutputMessageHelper :
public OutgoingMessage
37 : OutgoingMessage(data, size)
44 const std::string& path,
45 const Logging::LogFacility* parent,
46 OnixS::HandlerCore::Common::HandlerLogger& logger,
48 size_t auditTrailFileMaxSize)
60 BOOST_ASSERT(record.buffer);
61 BOOST_ASSERT(record.bufferSize > 0);
63 tb <<(record.direction == Record::In ?
" IN " :
"OUT ")
64 << OnixS::Time::YYYYMMDDHHMMSSnsecFormatter()(record.timestamp) <<
' ';
66 const void*
const dataPtr = record.buffer;
68 BOOST_ASSERT(record.bufferSize <= std::numeric_limits<Binary2>::max());
69 const Binary2 messageLength =
static_cast<Binary2>(record.bufferSize);
71 if(record.direction == Record::In)
73 const IncomingMessage message(dataPtr, messageLength);
74 const InboundMessageTypes::Enum messageType = message.type();
76 if(InboundMessageTypes::OrderAccepted == messageType)
78 OrderAccepted::validateSize(messageLength);
79 tb << static_cast<const OrderAccepted&>(message) <<
'\n';
81 else if(InboundMessageTypes::OrderRejected == messageType)
83 OrderRejected::validateSize(messageLength);
84 tb << static_cast<const OrderRejected&>(message) <<
'\n';
86 else if(InboundMessageTypes::OrderReplaced == messageType)
88 OrderReplaced::validateSize(messageLength);
89 tb << static_cast<const OrderReplaced&>(message) <<
'\n';
91 else if(InboundMessageTypes::OrderCancelled == messageType)
93 OrderCancelled::validateSize(messageLength);
94 tb << static_cast<const OrderCancelled&>(message) <<
'\n';
96 else if(InboundMessageTypes::OrderExecuted == messageType)
98 OrderExecuted::validateSize(messageLength);
99 tb << static_cast<const OrderExecuted&>(message) <<
'\n';
102 log(ONIXS_LOG_WARN[
this] <<
"Received unknown message, type = " << static_cast<Binary1>(message.type()));
104 else if(record.direction == Record::Out)
106 const OutgoingMessage& message =
107 OutputMessageHelper(const_cast<void*>(dataPtr), messageLength);
109 const OutboundMessageTypes::Enum type = message.type();
111 if(type == OutboundMessageTypes::EnterOrder)
113 tb << static_cast<const EnterOrder&>(message) <<
'\n';
115 else if(type == OutboundMessageTypes::ReplaceOrder)
117 tb << static_cast<const ReplaceOrder&>(message) <<
'\n';
119 else if(type == OutboundMessageTypes::CancelOrder)
121 tb << static_cast<const CancelOrder&>(message) <<
'\n';
123 else if(type == OutboundMessageTypes::CancelByOrderId)
125 tb << static_cast<const CancelByOrderId&>(message) <<
'\n';
128 log(ONIXS_LOG_WARN[
this] <<
"Sent unknown message, type = " << static_cast<Binary1>(message.type()));
136 AuditTrailDumperBase::onOutboundMessage(static_cast <const char*>(msg.binary()), msg.binarySize(), warmup);
141 AuditTrailDumperBase::onInboundMessage(static_cast <const char*>(msg.binary()), msg.binarySize(), warmup);
void serialize(const Record &record, OnixS::Util::TextBuilder &tb) final
OnixS::HandlerCore::Common::AuditTrailDumperBase< MaxMessageBinarySize > AuditTrailDumperBase
Binary2 MessageSize
Aliases message length type.
~AuditTrailDumper() final
AuditTrailDumper(const std::string &path, const Logging::LogFacility *parent, OnixS::HandlerCore::Common::HandlerLogger &logger, const OnixS::System::Thread::CpuIndexes &affinity, size_t auditTrailFileMaxSize)
void onOutboundMessage(const OutgoingMessage &msg, bool warmup)
#define ONIXS_SGXTITAN_OUCH_NAMESPACE_BEGIN
std::set< size_t > CpuIndexes
void onInboundMessage(const IncomingMessage &msg, bool warmup)