1 #ifndef ISIMUD_EXCHANGES_FIX_5_0sp2_MESSAGES_HPP
2 #define ISIMUD_EXCHANGES_FIX_5_0sp2_MESSAGES_HPP
24 #include "../common/messages.hpp"
26 #include "core/max_min.hpp"
28 #include <boost/mpl/assert.hpp>
29 #include <boost/mpl/deref.hpp>
30 #include <boost/mpl/max_element.hpp>
31 #include <boost/mpl/min_element.hpp>
32 #include <boost/mpl/placeholders.hpp>
33 #include <boost/mpl/sizeof.hpp>
34 #include <boost/mpl/transform_view.hpp>
35 #include <boost/mpl/vector.hpp>
36 #include <boost/variant/variant.hpp>
63 static constexpr bool is_valid(Msg
const &m)
noexcept(
true);
75 static bool is_valid(Msg
const &m)
noexcept(
true);
87 static bool is_valid(Msg
const &m)
noexcept(
true);
99 static bool is_valid(Msg
const &m)
noexcept(
true)
__attribute__((pure));
107 pointer data=
this->set_header<common::MsgTypes::Heartbeat>();
108 this->finalise_msg(data);
121 static bool is_valid(Msg
const &m)
noexcept(
true);
133 static bool is_valid(Msg
const &m)
noexcept(
true);
145 static bool is_valid(Msg
const &m)
noexcept(
true);
157 static bool is_valid(Msg
const &m)
noexcept(
true);
169 static bool is_valid(Msg
const &m)
noexcept(
true);
181 static bool is_valid(Msg
const &m)
noexcept(
true);
193 static bool is_valid(Msg
const &m)
noexcept(
true);
205 static bool is_valid(Msg
const &m)
noexcept(
true);
217 static bool is_valid(Msg
const &m)
noexcept(
true);
229 static bool is_valid(Msg
const &m)
noexcept(
true);
241 static bool is_valid(Msg
const &m)
noexcept(
true);
253 static bool is_valid(Msg
const &m)
noexcept(
true);
265 static bool is_valid(Msg
const &m)
noexcept(
true);
277 static bool is_valid(Msg
const &m)
noexcept(
true);
289 static bool is_valid(Msg
const &m)
noexcept(
true);
301 static bool is_valid(Msg
const &m)
noexcept(
true);
313 static bool is_valid(Msg
const &m)
noexcept(
true);
325 static bool is_valid(Msg
const &m)
noexcept(
true);
337 static bool is_valid(Msg
const &m)
noexcept(
true);
349 static bool is_valid(Msg
const &m)
noexcept(
true);
361 static bool is_valid(Msg
const &m)
noexcept(
true);
373 static bool is_valid(Msg
const &m)
noexcept(
true);
383 using field_str_const_range_t=
common::field_str_const_range_t;
393 using ClientOrderID_t=
common::ClientOrderID_t;
428 using NewOrder_t=NewOrderSingle;
465 boost::mpl::min_element<
466 boost::mpl::transform_view<client_to_exchange_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
472 boost::mpl::max_element<
473 boost::mpl::transform_view<client_to_exchange_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
479 boost::mpl::min_element<
480 boost::mpl::transform_view<exchange_to_client_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
486 boost::mpl::max_element<
487 boost::mpl::transform_view<exchange_to_client_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
491 min_msg_size=libjmmcg::min<std::size_t, min_size_client_to_exchange_msg, min_size_exchange_to_client_msg>::value,
492 max_msg_size=libjmmcg::max<std::size_t, max_size_client_to_exchange_msg, max_size_exchange_to_client_msg>::value,
495 BOOST_MPL_ASSERT_RELATION(max_msg_size, >=, header_t_size);
497 using underlying_fix_data_buffer=
common::underlying_fix_data_buffer;
513 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::Header_t), ==, 576);
514 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogonRequest), ==, 576);
515 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogoutRequest), ==, 576);
516 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ClientHeartbeat), ==, 576);
517 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ServerHeartbeat), ==, 576);
518 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::NewOrder_t), ==, 576);
519 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderCancelRequest), ==, 576);
520 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderCancelReplace), ==, 576);
521 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ExecutionReport), ==, 576);
522 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ModifyOrder), ==, 576);
523 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCaptureReport), ==, 576);
524 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCaptureReportRequest), ==, 576);
525 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogonReply), ==, 576);
526 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::Logout), ==, 576);
527 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderAcknowledgement), ==, 576);
528 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderRejected), ==, 576);
529 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::BusinessMessageReject), ==, 576);
530 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderModified), ==, 576);
531 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderRestated), ==, 576);
532 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::UserModifyRejected), ==, 576);
533 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderCancelled), ==, 576);
534 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::CancelRejected), ==, 576);
535 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderExecution), ==, 576);
536 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCaptureReportAck), ==, 576);
537 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCaptureReportRequestAck), ==, 576);