1 #ifndef ISIMUD_EXCHANGES_MIT_common_MESSAGES_HPP
2 #define ISIMUD_EXCHANGES_MIT_common_MESSAGES_HPP
25 #include "../../common/iso_10383_mic_codes.hpp"
27 #include "core/blatant_old_msvc_compiler_hacks.hpp"
28 #include "core/memops.hpp"
58 using ClientOrderID_t=
common::ClientOrderID_t;
66 MsgType_t
type()
const noexcept(
true) {
81 }
__attribute__((packed));
101 constexpr LogonRequest(
const logon_args_t::UserName_t &UN,
const logon_args_t::Password_t &P,
const logon_args_t::Password_t &NP)
noexcept(
true)
FORCE_INLINE;
110 template<
class SrcMsg>
explicit __stdcall
112 }
__attribute__((packed));
117 template<
class RejectCode>
120 using RejectCode_t=RejectCode;
141 }
__attribute__((packed));
167 template<
class SrcMsg>
explicit constexpr __stdcall
170 const Reason_t &
reason()
const noexcept(
true) {
173 }
__attribute__((packed));
195 template<
class SrcMsg>
explicit constexpr __stdcall
197 }
__attribute__((packed));
215 }
__attribute__((packed));
238 }
__attribute__((packed));
260 }
__attribute__((packed));
265 template<
class RejectCode, RejectCode RejectCodeNum>
268 using RejectCode_t=RejectCode;
275 static inline constexpr const RejectCode_t
unknown_msg=RejectCodeNum;
284 Reject(ClientOrderID_t
const &clID, RejectCode_t
const rc)
noexcept(
true)
FORCE_INLINE;
287 return clientOrderID_;
290 libjmmcg::memcpy_opt(clID, clientOrderID_);
299 }
__attribute__((packed));
317 }
__attribute__((packed));
319 template<
class Specific1,
class Specific2,
class Specific3>
328 using specific1_t=Specific1;
329 using specific2_t=Specific2;
330 using specific3_t=Specific3;
348 constexpr __stdcall NewOrder(SeqNum_t seqNum, ClientOrderID_t
const &clID,
OrderType const oT,
TIF const t,
Side const s, SecurityID_t instID,
typename specific2_t::order_qty_t ordQty, Price_t p)
noexcept(
true)
FORCE_INLINE;
360 void orderQty(
typename specific2_t::order_qty_t i)
noexcept(
true) {
379 return clientOrderID_;
382 libjmmcg::memcpy_opt(clID, clientOrderID_);
398 }
__attribute__((packed));
400 template<
class Specific1,
class Specific2>
409 using specific1_t=Specific1;
410 using specific2_t=Specific2;
424 return clientOrderID_;
427 libjmmcg::memcpy_opt(clID, clientOrderID_);
436 }
__attribute__((packed));
438 template<
class Specific1,
class Specific2,
class Specific3>
447 using specific1_t=Specific1;
448 using specific2_t=Specific2;
449 using specific3_t=Specific3;
474 return clientOrderID_;
477 libjmmcg::memcpy_opt(clID, clientOrderID_);
481 return originalClientOrderID_;
484 libjmmcg::memcpy_opt(clID, originalClientOrderID_);
497 void orderQty(
typename specific2_t::order_qty_t i)
noexcept(
true) {
514 }
__attribute__((packed));
519 }
__attribute__((packed));
533 using specific1_t=Specific1;
534 using specific2_t=Specific2;
546 return clientOrderID_;
549 libjmmcg::memcpy_opt(clID, clientOrderID_);
553 return originalClientOrderID_;
556 libjmmcg::memcpy_opt(clID, originalClientOrderID_);
572 }
__attribute__((packed));
586 using specific1_t=Specific1;
587 using specific2_t=Specific2;
598 return clientOrderID_;
601 libjmmcg::memcpy_opt(clID, clientOrderID_);
603 }
__attribute__((packed));
605 template<
class Specific1,
class Specific2>
614 using specific1_t=Specific1;
615 using specific2_t=Specific2;
616 using RejectCode_t=
typename specific1_t::RejectCode_t;
642 constexpr ExecutionReport(SeqNum_t seqNum, ClientOrderID_t
const &clID,
ExecType eT, Price_t
const price, SecurityID_t instID,
Side s,
typename specific1_t::order_qty_t execdQty,
typename specific1_t::order_qty_t leavesQty)
noexcept(
true)
FORCE_INLINE;
652 return clientOrderID_;
655 libjmmcg::memcpy_opt(clID, clientOrderID_);
682 void executedQty(
typename specific1_t::order_qty_t eq)
noexcept(
true) {
689 void leavesQty(
typename specific1_t::order_qty_t eq)
noexcept(
true) {
706 }
__attribute__((packed));
708 template<
class RejectCode>
710 using RejectCode_t=RejectCode;
720 template<
class Specific>
729 using specific_t=Specific;
730 using RejectCode_t=
typename specific_t::RejectCode_t;
742 return clientOrderID_;
745 libjmmcg::memcpy_opt(clID, clientOrderID_);
749 return specific.cancelRejectReason_;
754 }
__attribute__((packed));
756 template<
class RejectCode>
758 using RejectCode_t=RejectCode;
763 }
__attribute__((packed));
768 template<
class Specific>
777 using specific_t=Specific;
778 using RejectCode_t=
typename specific_t::RejectCode_t;
790 return clientOrderID_;
793 libjmmcg::memcpy_opt(clID, clientOrderID_);
795 }
__attribute__((packed));
797 template<
class RejectCode, RejectCode UnknownInstrument>
799 using RejectCode_t=RejectCode;
803 }
__attribute__((packed));
808 template<
class Specific>
817 using specific_t=Specific;
818 using RejectCode_t=
typename specific_t::RejectCode_t;
840 return clientOrderID_;
843 libjmmcg::memcpy_opt(clID, clientOrderID_);
845 }
__attribute__((packed));