1 #ifndef ISIMUD_EXCHANGES_BATSBOE_EU_v2_MESSAGES_HPP
2 #define ISIMUD_EXCHANGES_BATSBOE_EU_v2_MESSAGES_HPP
23 #include "../messages.hpp"
25 #include "core/max_min.hpp"
27 #include <boost/mpl/max_element.hpp>
28 #include <boost/mpl/min_element.hpp>
29 #include <boost/mpl/vector.hpp>
30 #include <boost/variant/variant.hpp>
43 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_BATE;
51 using SecurityID_t=
common::SecurityID_t;
55 using ClientOrderID_t=
common::ClientOrderID_t;
89 using ExecutionReport=OrderExecution;
90 using Heartbeat=ClientHeartbeat;
91 using OrderCancelRequest=CancelOrder;
92 using OrderCancelReject=CancelRejected;
93 using OrderCancelReplaceRequest=ModifyOrder;
96 static inline constexpr MsgTypes_t
Exit=
static_cast<MsgTypes_t>(MsgType_t
::Exit);
131 boost::mpl::min_element<
132 boost::mpl::transform_view<client_to_exchange_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
138 boost::mpl::max_element<
139 boost::mpl::transform_view<client_to_exchange_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
145 boost::mpl::min_element<
146 boost::mpl::transform_view<exchange_to_client_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
152 boost::mpl::max_element<
153 boost::mpl::transform_view<exchange_to_client_messages_t, boost::mpl::sizeof_<boost::mpl::_1> >
157 min_msg_size=libjmmcg::min<std::size_t, min_size_client_to_exchange_msg, min_size_exchange_to_client_msg>::value,
158 max_msg_size=libjmmcg::max<std::size_t, max_size_client_to_exchange_msg, max_size_exchange_to_client_msg>::value,
161 BOOST_MPL_ASSERT_RELATION(max_msg_size, >=, header_t_size);
177 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogoutRequest), <=, MsgTypes::max_size_client_to_exchange_msg);
178 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogoutRequest), <=, MsgTypes::max_size_exchange_to_client_msg);
179 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogoutRequest), <=, MsgTypes::max_msg_size);
180 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogonRequest), ==, 261);
181 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogoutRequest), ==, 10);
182 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ClientHeartbeat), ==, 10);
183 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::LogonReply), ==, 11);
184 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::Logout), ==, 76);
185 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ServerHeartbeat), ==, 10);
186 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ReplayComplete), ==, 10);
187 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::NewOrder_t), ==, 157);
188 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::CancelOrder), ==, 36);
189 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::ModifyOrder), ==, 73);
190 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCaptureReport), ==, 133);
191 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderAcknowledgement), ==, 245);
192 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderRejected), ==, 213);
193 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderModified), ==, 205);
194 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderRestated), ==, 216);
195 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::UserModifyRejected), ==, 108);
196 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderCancelled), ==, 191);
197 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::CancelRejected), ==, 100);
198 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::OrderExecution), ==, 215);
199 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCancelOrCorrect), ==, 170);
200 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCaptureReportAck), ==, 185);
201 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCaptureReportReject), ==, 246);
202 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCaptureConfirm), ==, 290);
203 BOOST_MPL_ASSERT_RELATION(
sizeof(MsgTypes::TradeCaptureDecline), ==, 290);