root/isimud/exchanges/conversions/mit_to_fix_conversions.hpp

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. convert
  2. convert
  3. convert
  4. convert
  5. convert
  6. convert
  7. convert
  8. convert_ClOrdID

   1 #ifndef libjmmcg_isimud_exchanges_conversions_mit_to_fix_conversions_hpp
   2 #define libjmmcg_isimud_exchanges_conversions_mit_to_fix_conversions_hpp
   3 
   4 /******************************************************************************
   5 ** $Header: svn+ssh://jmmcg@svn.code.sf.net/p/libjmmcg/code/trunk/libjmmcg/isimud/exchanges/conversions/mit_to_fix_conversions.hpp 2274 2018-03-18 21:39:20Z jmmcg $
   6 **
   7 ** Copyright (c) 2015 by J.M.McGuiness, isimud@hussar.me.uk
   8 **
   9 ** This library is free software; you can redistribute it and/or
  10 ** modify it under the terms of the GNU Lesser General Public
  11 ** License as published by the Free Software Foundation; either
  12 ** version 2.1 of the License, or (at your option) any later version.
  13 **
  14 ** This library is distributed in the hope that it will be useful,
  15 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  16 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  17 ** Lesser General Public License for more details.
  18 **
  19 ** You should have received a copy of the GNU Lesser General Public
  20 ** License along with this library; if not, write to the Free Software
  21 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  22 */
  23 
  24 #include "../../exchanges/FIX/v5.0sp2/messages.hpp"
  25 #include "../../exchanges/MIT/BIT/messages.hpp"
  26 #include "../../exchanges/MIT/JSE/messages.hpp"
  27 #include "../../exchanges/MIT/LSE/messages.hpp"
  28 #include "../../exchanges/MIT/OSLO/messages.hpp"
  29 #include "../../exchanges/MIT/TRQ/messages.hpp"
  30 
  31 namespace isimud { namespace exchanges { namespace FIX { namespace common {
  32 
  33 /**
  34         Note that only ISIN symbology is supported.
  35 */      
  36 template<class RefData> constexpr inline int
  37 convert(MIT::common::SecurityID_t const &key, RefData const &ref_data, char *buff, [[maybe_unused]] std::size_t sz) {
  38         auto const &i=ref_data.lookup_isin().find(key);
  39         assert(i!=ref_data.lookup_isin().end());
  40         assert(sizeof(typename RefData::lookup_isin_t::mapped_type::element_type)<=sz);
  41         jmmcg::memcpy_opt(i->second.isin_.data(), reinterpret_cast<typename RefData::lookup_isin_t::mapped_type::element_type::block_t &>(*buff));
  42         return sizeof(typename RefData::lookup_isin_t::mapped_type::element_type);
  43 }
  44 
  45 /**
  46         \todo What should be done with ExecType's that cannot be mapped?.
  47 */      
  48 inline ExecType
  49 convert(MIT::common::ExecType const &a) noexcept(false) {
  50         switch (a) {
  51         case MIT::common::ExecType::New:
  52                 return ExecType::New;
  53         case MIT::common::ExecType::Cancelled:
  54                 return ExecType::Cancelled;
  55         case MIT::common::ExecType::Replaced:
  56                 return ExecType::Replaced;
  57         case MIT::common::ExecType::Rejected:
  58                 return ExecType::Rejected;
  59         case MIT::common::ExecType::Suspended:
  60                 return ExecType::Suspended;
  61         case MIT::common::ExecType::Expired:
  62                 return ExecType::Expired;
  63         case MIT::common::ExecType::Restated:
  64                 return ExecType::Restated;
  65         case MIT::common::ExecType::Trade:
  66                 return ExecType::Trade_PartialFillOrFill;
  67         case MIT::common::ExecType::TradeCorrect:
  68                 return ExecType::TradeCorrect;
  69         case MIT::common::ExecType::TradeCancel:
  70                 return ExecType::TradeCancel;
  71         case MIT::common::ExecType::Triggered:
  72                 return ExecType::TriggeredOrActivatedBySystem;
  73         default: {
  74                 std::ostringstream os;
  75                 os<<"Unknown MIT ExecType: "<<a;
  76                 throw std::runtime_error(os.str());
  77         }
  78         };
  79 }
  80 
  81 /**
  82         \todo What should be done with OrderStatus's that cannot be mapped?.
  83 */      
  84 inline OrdStatus
  85 convert(MIT::common::OrderStatus const &a) noexcept(false) {
  86         switch (a) {
  87         case MIT::common::OrderStatus::New:
  88                 return OrdStatus::New;
  89         case MIT::common::OrderStatus::Partiallyfilled:
  90                 return OrdStatus::PartiallyFilled;
  91         case MIT::common::OrderStatus::Filled:
  92                 return OrdStatus::Filled;
  93         case MIT::common::OrderStatus::Cancelled:
  94                 return OrdStatus::Cancelled;
  95         case MIT::common::OrderStatus::Expired:
  96                 return OrdStatus::Expired;
  97         case MIT::common::OrderStatus::Rejected:
  98                 return OrdStatus::Rejected;
  99         case MIT::common::OrderStatus::Suspended:
 100                 return OrdStatus::Suspended;
 101         default: {
 102                 std::ostringstream os;
 103                 os<<"Unknown MIT OrderStatus: "<<a;
 104                 throw std::runtime_error(os.str());
 105         }
 106         };
 107 }
 108 
 109 inline int
 110 convert(std::int32_t a, char *buff, std::size_t sz) noexcept(true) {
 111         return jmmcg::tostring(a, buff, sz);
 112 }
 113 
 114 inline int
 115 convert(std::uint32_t a, char *buff, std::size_t sz) noexcept(true) {
 116         return jmmcg::tostring(a, buff, sz);
 117 }
 118 
 119 inline int
 120 convert(MIT::common::Price_t const &a, char *buff, std::size_t sz) {
 121         const double c=static_cast<double>(a)/MIT::common::implied_decimal_places;
 122         return jmmcg::tostring(c, buff, sz);
 123 }
 124 
 125 /**
 126         \todo What should be done with Side's that cannot be mapped?.
 127 */      
 128 constexpr inline char
 129 convert(MIT::common::Side const &a) {
 130         switch (a) {
 131         case MIT::common::Side::Buy:
 132                 return '1';
 133         case MIT::common::Side::Sell:
 134                 return '2';
 135         default:
 136                 return '?';
 137         };
 138 }
 139 
 140 template<class DestMsg, class SrcMsg, class OutIter>
 141 inline OutIter
 142 convert_ClOrdID(SrcMsg const &msg, OutIter data) noexcept(true) {
 143         data=DestMsg::template add_field_tag<FieldsFast::ClOrdID>(data);
 144         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 145         data+=msg.clientOrderID().size()-1;
 146         return data;
 147 }
 148 
 149 template<>
 150 template<> inline __stdcall
 151 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::BIT::MsgTypes::ExecutionReport const &msg, MIT::BIT::MsgTypes::ref_data_t rd)
 152 : Header_t() {
 153         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
 154         data=convert_ClOrdID<Message<v5_0sp2::ExecutionReportSpecific>>(msg, data);
 155         data=add_field_tag<FieldsFast::SecurityIDSource>(data);
 156         *data=SecurityIDSource::ISIN;
 157         ++data;
 158         data=add_field_tag<FieldsFast::SecurityID>(data);
 159         const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
 160         assert(i>0);
 161         data+=i;
 162         data=add_field_tag<FieldsFast::ExecType>(data);
 163         *data=static_cast<char>(convert(msg.execType()));
 164         ++data;
 165         data=add_field_tag<FieldsFast::Price>(data);
 166         const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
 167         assert(j>0);
 168         data+=j;
 169         data=add_field_tag<FieldsFast::OrdStatus>(data);
 170         *data=static_cast<char>(convert(msg.orderStatus()));
 171         ++data;
 172         data=add_field_tag<FieldsFast::OrderQty>(data);
 173         const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
 174         assert(k>0);
 175         data+=k;
 176         data=add_field_tag<FieldsFast::LeavesQty>(data);
 177         const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
 178         assert(l>0);
 179         data+=l;
 180         data=add_field_tag<FieldsFast::Side>(data);
 181         *data=convert(msg.side());
 182         ++data;
 183 // TODO msg.orderRejectCode();
 184         finalise_msg(data);
 185 }
 186 
 187 template<>
 188 template<> inline __stdcall
 189 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::JSE::MsgTypes::ExecutionReport const &msg, MIT::JSE::MsgTypes::ref_data_t rd)
 190 : Header_t() {
 191         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
 192         data=add_field_tag<FieldsFast::ClOrdID>(data);
 193         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 194         data+=msg.clientOrderID().size()-1;
 195         data=add_field_tag<FieldsFast::SecurityIDSource>(data);
 196         *data=SecurityIDSource::ISIN;
 197         ++data;
 198         data=add_field_tag<FieldsFast::SecurityID>(data);
 199         const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
 200         assert(i>0);
 201         data+=i;
 202         data=add_field_tag<FieldsFast::ExecType>(data);
 203         *data=static_cast<char>(convert(msg.execType()));
 204         ++data;
 205         data=add_field_tag<FieldsFast::Price>(data);
 206         const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
 207         assert(j>0);
 208         data+=j;
 209         data=add_field_tag<FieldsFast::OrdStatus>(data);
 210         *data=static_cast<char>(convert(msg.orderStatus()));
 211         ++data;
 212         data=add_field_tag<FieldsFast::OrderQty>(data);
 213         const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
 214         assert(k>0);
 215         data+=k;
 216         data=add_field_tag<FieldsFast::LeavesQty>(data);
 217         const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
 218         assert(l>0);
 219         data+=l;
 220         data=add_field_tag<FieldsFast::Side>(data);
 221         *data=convert(msg.side());
 222         ++data;
 223 // TODO msg.orderRejectCode();
 224         finalise_msg(data);
 225 }
 226 
 227 template<>
 228 template<> inline __stdcall
 229 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::LSE::MsgTypes::ExecutionReport const &msg, MIT::LSE::MsgTypes::ref_data_t rd)
 230 : Header_t() {
 231         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
 232         data=add_field_tag<FieldsFast::ClOrdID>(data);
 233         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 234         data+=msg.clientOrderID().size()-1;
 235         data=add_field_tag<FieldsFast::SecurityIDSource>(data);
 236         *data=SecurityIDSource::ISIN;
 237         ++data;
 238         data=add_field_tag<FieldsFast::SecurityID>(data);
 239         const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
 240         assert(i>0);
 241         data+=i;
 242         data=add_field_tag<FieldsFast::ExecType>(data);
 243         *data=static_cast<char>(convert(msg.execType()));
 244         ++data;
 245         data=add_field_tag<FieldsFast::Price>(data);
 246         const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
 247         assert(j>0);
 248         data+=j;
 249         data=add_field_tag<FieldsFast::OrdStatus>(data);
 250         *data=static_cast<char>(convert(msg.orderStatus()));
 251         ++data;
 252         data=add_field_tag<FieldsFast::OrderQty>(data);
 253         const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
 254         assert(k>0);
 255         data+=k;
 256         data=add_field_tag<FieldsFast::LeavesQty>(data);
 257         const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
 258         assert(l>0);
 259         data+=l;
 260         data=add_field_tag<FieldsFast::Side>(data);
 261         *data=convert(msg.side());
 262         ++data;
 263 // TODO msg.orderRejectCode();
 264         finalise_msg(data);
 265 }
 266 
 267 template<>
 268 template<> inline __stdcall
 269 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::OSLO::MsgTypes::ExecutionReport const &msg, MIT::OSLO::MsgTypes::ref_data_t rd)
 270 : Header_t() {
 271         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
 272         data=add_field_tag<FieldsFast::ClOrdID>(data);
 273         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 274         data+=msg.clientOrderID().size()-1;
 275         data=add_field_tag<FieldsFast::SecurityIDSource>(data);
 276         *data=SecurityIDSource::ISIN;
 277         ++data;
 278         data=add_field_tag<FieldsFast::SecurityID>(data);
 279         const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
 280         assert(i>0);
 281         data+=i;
 282         data=add_field_tag<FieldsFast::ExecType>(data);
 283         *data=static_cast<char>(convert(msg.execType()));
 284         ++data;
 285         data=add_field_tag<FieldsFast::Price>(data);
 286         const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
 287         assert(j>0);
 288         data+=j;
 289         data=add_field_tag<FieldsFast::OrdStatus>(data);
 290         *data=static_cast<char>(convert(msg.orderStatus()));
 291         ++data;
 292         data=add_field_tag<FieldsFast::OrderQty>(data);
 293         const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
 294         assert(k>0);
 295         data+=k;
 296         data=add_field_tag<FieldsFast::LeavesQty>(data);
 297         const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
 298         assert(l>0);
 299         data+=l;
 300         data=add_field_tag<FieldsFast::Side>(data);
 301         *data=convert(msg.side());
 302         ++data;
 303 // TODO msg.orderRejectCode();
 304         finalise_msg(data);
 305 }
 306 
 307 template<>
 308 template<> inline __stdcall
 309 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::TRQ::MsgTypes::ExecutionReport const &msg, MIT::TRQ::MsgTypes::ref_data_t rd)
 310 : Header_t() {
 311         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
 312         data=add_field_tag<FieldsFast::ClOrdID>(data);
 313         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 314         data+=msg.clientOrderID().size()-1;
 315         data=add_field_tag<FieldsFast::SecurityIDSource>(data);
 316         *data=SecurityIDSource::ISIN;
 317         ++data;
 318         data=add_field_tag<FieldsFast::SecurityID>(data);
 319         const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
 320         assert(i>0);
 321         data+=i;
 322         data=add_field_tag<FieldsFast::ExecType>(data);
 323         *data=static_cast<char>(convert(msg.execType()));
 324         ++data;
 325         data=add_field_tag<FieldsFast::Price>(data);
 326         const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
 327         assert(j>0);
 328         data+=j;
 329         data=add_field_tag<FieldsFast::OrdStatus>(data);
 330         *data=static_cast<char>(convert(msg.orderStatus()));
 331         ++data;
 332         data=add_field_tag<FieldsFast::OrderQty>(data);
 333         const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
 334         assert(k>0);
 335         data+=k;
 336         data=add_field_tag<FieldsFast::LeavesQty>(data);
 337         const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
 338         assert(l>0);
 339         data+=l;
 340         data=add_field_tag<FieldsFast::Side>(data);
 341         *data=convert(msg.side());
 342         ++data;
 343 // TODO msg.orderRejectCode();
 344         finalise_msg(data);
 345 }
 346 
 347 template<>
 348 template<> inline __stdcall
 349 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::BIT::MsgTypes::ExecutionReport const &msg)
 350 : Header_t() {
 351         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
 352         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 353         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 354         assert(i>0);
 355         data+=i;
 356         finalise_msg(data);
 357 }
 358 
 359 template<>
 360 template<> inline __stdcall
 361 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::JSE::MsgTypes::ExecutionReport const &msg)
 362 : Header_t() {
 363         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
 364         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 365         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 366         assert(i>0);
 367         data+=i;
 368         finalise_msg(data);
 369 }
 370 
 371 template<>
 372 template<> inline __stdcall
 373 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::LSE::MsgTypes::ExecutionReport const &msg)
 374 : Header_t() {
 375         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
 376         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 377         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 378         assert(i>0);
 379         data+=i;
 380         finalise_msg(data);
 381 }
 382 
 383 template<>
 384 template<> inline __stdcall
 385 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::OSLO::MsgTypes::ExecutionReport const &msg)
 386 : Header_t() {
 387         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
 388         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 389         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 390         assert(i>0);
 391         data+=i;
 392         finalise_msg(data);
 393 }
 394 
 395 template<>
 396 template<> inline __stdcall
 397 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::TRQ::MsgTypes::ExecutionReport const &msg)
 398 : Header_t() {
 399         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
 400         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 401         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 402         assert(i>0);
 403         data+=i;
 404         finalise_msg(data);
 405 }
 406 
 407 template<>
 408 template<> inline __stdcall
 409 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::BIT::MsgTypes::OrderCancelReject const &msg)
 410 : Header_t() {
 411         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
 412         data=add_field_tag<FieldsFast::ClOrdID>(data);
 413         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 414         data+=msg.clientOrderID().size()-1;
 415         data=add_field_tag<FieldsFast::OrderID>(data);
 416         jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
 417         data+=msg.orderID.size()-1;
 418 // TODO cancelRejectReason_;
 419 // TODO transactTime;
 420         finalise_msg(data);
 421 }
 422 
 423 template<>
 424 template<> inline __stdcall
 425 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::JSE::MsgTypes::OrderCancelReject const &msg)
 426 : Header_t() {
 427         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
 428         data=add_field_tag<FieldsFast::ClOrdID>(data);
 429         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 430         data+=msg.clientOrderID().size()-1;
 431         data=add_field_tag<FieldsFast::OrderID>(data);
 432         jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
 433         data+=msg.orderID.size()-1;
 434 // TODO cancelRejectReason_;
 435 // TODO transactTime;
 436         finalise_msg(data);
 437 }
 438 
 439 template<>
 440 template<> inline __stdcall
 441 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::LSE::MsgTypes::OrderCancelReject const &msg)
 442 : Header_t() {
 443         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
 444         data=add_field_tag<FieldsFast::ClOrdID>(data);
 445         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 446         data+=msg.clientOrderID().size()-1;
 447         data=add_field_tag<FieldsFast::OrderID>(data);
 448         jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
 449         data+=msg.orderID.size()-1;
 450 // TODO cancelRejectReason_;
 451 // TODO transactTime;
 452         finalise_msg(data);
 453 }
 454 
 455 template<>
 456 template<> inline __stdcall
 457 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::OSLO::MsgTypes::OrderCancelReject const &msg)
 458 : Header_t() {
 459         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
 460         data=add_field_tag<FieldsFast::ClOrdID>(data);
 461         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 462         data+=msg.clientOrderID().size()-1;
 463         data=add_field_tag<FieldsFast::OrderID>(data);
 464         jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
 465         data+=msg.orderID.size()-1;
 466 // TODO cancelRejectReason_;
 467 // TODO transactTime;
 468         finalise_msg(data);
 469 }
 470 
 471 template<>
 472 template<> inline __stdcall
 473 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::TRQ::MsgTypes::OrderCancelReject const &msg)
 474 : Header_t() {
 475         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
 476         data=add_field_tag<FieldsFast::ClOrdID>(data);
 477         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 478         data+=msg.clientOrderID().size()-1;
 479         data=add_field_tag<FieldsFast::OrderID>(data);
 480         jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
 481         data+=msg.orderID.size()-1;
 482 // TODO cancelRejectReason_;
 483 // TODO transactTime;
 484         finalise_msg(data);
 485 }
 486 
 487 template<>
 488 template<> inline __stdcall
 489 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::BIT::MsgTypes::Reject const &msg)
 490 : Header_t() {
 491         underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
 492         data=add_field_tag<FieldsFast::ClOrdID>(data);
 493         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 494         data+=msg.clientOrderID().size()-1;
 495 // TODO
 496         finalise_msg(data);
 497 }
 498 
 499 template<>
 500 template<> inline __stdcall
 501 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::JSE::MsgTypes::Reject const &msg)
 502 : Header_t() {
 503         underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
 504         data=add_field_tag<FieldsFast::ClOrdID>(data);
 505         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 506         data+=msg.clientOrderID().size()-1;
 507 // TODO
 508         finalise_msg(data);
 509 }
 510 
 511 template<>
 512 template<> inline __stdcall
 513 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::LSE::MsgTypes::Reject const &msg)
 514 : Header_t() {
 515         underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
 516         data=add_field_tag<FieldsFast::ClOrdID>(data);
 517         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 518         data+=msg.clientOrderID().size()-1;
 519 // TODO
 520         finalise_msg(data);
 521 }
 522 
 523 template<>
 524 template<> inline __stdcall
 525 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::OSLO::MsgTypes::Reject const &msg)
 526 : Header_t() {
 527         underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
 528         data=add_field_tag<FieldsFast::ClOrdID>(data);
 529         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 530         data+=msg.clientOrderID().size()-1;
 531 // TODO
 532         finalise_msg(data);
 533 }
 534 
 535 template<>
 536 template<> inline __stdcall
 537 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::TRQ::MsgTypes::Reject const &msg)
 538 : Header_t() {
 539         underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
 540         data=add_field_tag<FieldsFast::ClOrdID>(data);
 541         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 542         data+=msg.clientOrderID().size()-1;
 543 // TODO
 544         finalise_msg(data);
 545 }
 546 
 547 template<>
 548 template<> inline __stdcall
 549 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::BIT::MsgTypes::BusinessReject const &msg)
 550 : Header_t() {
 551         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
 552         data=add_field_tag<FieldsFast::ClOrdID>(data);
 553         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 554         data+=msg.clientOrderID().size()-1;
 555         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 556         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 557         assert(i>0);
 558         data+=i;
 559 // TODO
 560         finalise_msg(data);
 561 }
 562 
 563 template<>
 564 template<> inline __stdcall
 565 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::JSE::MsgTypes::BusinessReject const &msg)
 566 : Header_t() {
 567         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
 568         data=add_field_tag<FieldsFast::ClOrdID>(data);
 569         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 570         data+=msg.clientOrderID().size()-1;
 571         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 572         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 573         assert(i>0);
 574         data+=i;
 575 // TODO
 576         finalise_msg(data);
 577 }
 578 
 579 template<>
 580 template<> inline __stdcall
 581 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::LSE::MsgTypes::BusinessReject const &msg)
 582 : Header_t() {
 583         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
 584         data=add_field_tag<FieldsFast::ClOrdID>(data);
 585         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 586         data+=msg.clientOrderID().size()-1;
 587         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 588         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 589         assert(i>0);
 590         data+=i;
 591 // TODO
 592         finalise_msg(data);
 593 }
 594 
 595 template<>
 596 template<> inline __stdcall
 597 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::OSLO::MsgTypes::BusinessReject const &msg)
 598 : Header_t() {
 599         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
 600         data=add_field_tag<FieldsFast::ClOrdID>(data);
 601         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 602         data+=msg.clientOrderID().size()-1;
 603         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 604         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 605         assert(i>0);
 606         data+=i;
 607 // TODO
 608         finalise_msg(data);
 609 }
 610 template<>
 611 template<> inline __stdcall
 612 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::TRQ::MsgTypes::BusinessReject const &msg)
 613 : Header_t() {
 614         underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
 615         data=add_field_tag<FieldsFast::ClOrdID>(data);
 616         jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
 617         data+=msg.clientOrderID().size()-1;
 618         data=add_field_tag<FieldsFast::RefSeqNum>(data);
 619         const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
 620         assert(i>0);
 621         data+=i;
 622 // TODO
 623         finalise_msg(data);
 624 }
 625 
 626 
 627 } } } }
 628 
 629 #endif

/* [<][>][^][v][top][bottom][index][help] */