1 #ifndef ISIMUD_EXCHANGES_MIT_TRQ_MESSAGES_HPP
2 #define ISIMUD_EXCHANGES_MIT_TRQ_MESSAGES_HPP
23 #include "reject_codes.hpp"
25 #include "../common/messages.hpp"
26 #include "../common/ref_data.hpp"
28 #include "core/max_min.hpp"
30 #include <boost/lexical_cast.hpp>
31 #include <boost/mpl/assert.hpp>
32 #include <boost/mpl/deref.hpp>
33 #include <boost/mpl/max_element.hpp>
34 #include <boost/mpl/min_element.hpp>
35 #include <boost/mpl/placeholders.hpp>
36 #include <boost/mpl/sizeof.hpp>
37 #include <boost/mpl/transform_view.hpp>
38 #include <boost/mpl/vector.hpp>
39 #include <boost/variant/variant.hpp>
57 libjmmcg::memcpy_opt(boost::lexical_cast<common::CommonSymbol_t>(instID), commonSymbol);
60 libjmmcg::memcpy_opt(instID, commonSymbol);
63 return boost::lexical_cast<common::SecurityID_t>(commonSymbol);
66 libjmmcg::memcpy_opt(boost::lexical_cast<common::CommonSymbol_t>(instID), commonSymbol);
68 }
__attribute__((packed));
70 using order_qty_t=
std::int32_t;
84 }
__attribute__((packed));
109 }
__attribute__((packed));
127 }
__attribute__((packed));
133 using RejectCode_t=mit_trq::reject_codes_enum;
135 using order_qty_t=
std::int32_t;
141 }
__attribute__((packed));
150 }
__attribute__((packed));
157 libjmmcg::memcpy_opt(boost::lexical_cast<common::CommonSymbol_t>(instID), commonSymbol);
160 libjmmcg::memcpy_opt(instID, commonSymbol);
163 return boost::lexical_cast<common::SecurityID_t>(commonSymbol);
166 libjmmcg::memcpy_opt(boost::lexical_cast<common::CommonSymbol_t>(instID), commonSymbol);
168 }
__attribute__((packed));
193 template<
class SrcMsg>
explicit __stdcall
195 }
__attribute__((packed));
209 template<
class SrcMsg>
explicit __stdcall
211 }
__attribute__((packed));
224 template<
class SrcMsg>
explicit __stdcall
226 }
__attribute__((packed));
230 static inline constexpr const exchanges::common::mic_codes::ISO_10383_MIC_Codes
MIC_code=exchanges::common::mic_codes::ISO_10383_MIC_Codes::ISO_10383_UNITED_KINGDOM_TRQX;
241 using ClientOrderID_t=
common::ClientOrderID_t;
270 using Logout=LogoutRequest;
272 static inline constexpr MsgTypes_t
MatchAll=
std::numeric_limits<MsgTypes_t>::max()-1;
273 static inline constexpr MsgTypes_t
Exit=
std::numeric_limits<MsgTypes_t>::max();
303 boost::mpl::min_element<
304 boost::mpl::transform_view<client_to_exchange_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
310 boost::mpl::max_element<
311 boost::mpl::transform_view<client_to_exchange_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
317 boost::mpl::min_element<
318 boost::mpl::transform_view<exchange_to_client_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
324 boost::mpl::max_element<
325 boost::mpl::transform_view<exchange_to_client_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
329 min_msg_size=libjmmcg::min<std::size_t, min_size_client_to_exchange_msg, min_size_exchange_to_client_msg>::value,
330 max_msg_size=libjmmcg::max<std::size_t, max_size_client_to_exchange_msg, max_size_exchange_to_client_msg>::value,
333 BOOST_MPL_ASSERT_RELATION(max_msg_size, >=, header_t_size);
349 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::Header_t), <=, MsgTypes::max_size_client_to_exchange_msg);
350 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::Header_t), <=, MsgTypes::max_size_exchange_to_client_msg);
351 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::Header_t), <=, MsgTypes::max_msg_size);
352 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogonRequest), ==, 80);
353 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogonReply), ==, 38);
354 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::Logout), ==, 24);
355 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ClientHeartbeat), ==, 4);
356 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ServerHeartbeat), ==, 4);
357 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::MissedMessageRequest), ==, 9);
358 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::MissedMessageRequestAck), ==, 5);
359 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::MissedMessageReport), ==, 5);
360 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::Reject), ==, 59);
361 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::SystemStatus), ==, 6);
362 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::NewOrder_t), ==, 111);
363 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderCancelReplaceRequest), ==, 114);
364 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderCancelRequest), ==, 75);
365 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderMassCancelRequest), ==, 48);
366 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ExecutionReport), ==, 156);
367 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderCancelReject), ==, 73);
368 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderMassCancelReport), ==, 56);
369 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::BusinessReject), ==, 63);