libjmmcg
build_2176
A C++ library containing an eclectic mix of useful, advanced components.
|
Classes | |
class | connectivity_policy |
An implementation of the connectivity policy for the FIX protocol. More... | |
class | server_hb_t |
Generate heartbeats from the containing simulator. More... | |
struct | logon_args_t |
struct | logoff_args_t |
class | Header |
class | Message |
The basic, underlying type used to implement FIX message reading. More... | |
class | client_to_exchange_transformations |
An FIX-protocol message handler. More... | |
class | exchange_to_client_transformations |
A FIX-protocol-to-client message handler. More... | |
class | simulator_responses |
A simple, FIX-protocol exchange simulator. More... | |
Typedefs | |
using | element_type = char |
using | underlying_fix_data_buffer = std::array< element_type, max_size_of_fix_message > |
An underlying data-buffer into which the fix message may be created. More... | |
using | pointer = element_type * |
using | const_pointer = element_type const * |
using | data_block_t = pointer |
The type of the internal data-buffer. More... | |
using | MsgTypes_t = uint16_t |
using | SecurityID_t = std::array< char, 20 > |
using | ClientOrderID_t = std::array< char, 20 > |
using | Reason_t = std::array< char, 20 > |
using | Password_t = std::array< char, 25 > |
using | UserName_t = std::array< char, 25 > |
using | Price_t = std::array< char, 25 > |
using | checksum_t = std::array< char, CheckSumLength+1 > |
The checksum type used by FIX. More... | |
using | field_str_range_t = std::pair< const_pointer, const_pointer > |
Enumerations | |
enum | : std::size_t { max_size_of_fix_message =sizeof(__uint128_t)*32 } |
enum | MsgTypes : MsgTypes_t { MsgTypes::Heartbeat =enum_tags::mpl::to_tag<'0'>::value, MsgTypes::TestRequest =enum_tags::mpl::to_tag<'1'>::value, MsgTypes::ResendRequest =enum_tags::mpl::to_tag<'2'>::value, MsgTypes::Reject =enum_tags::mpl::to_tag<'3'>::value, MsgTypes::SequenceReset =enum_tags::mpl::to_tag<'4'>::value, MsgTypes::Logout =enum_tags::mpl::to_tag<'5'>::value, MsgTypes::IOI =enum_tags::mpl::to_tag<'6'>::value, MsgTypes::Advertisement =enum_tags::mpl::to_tag<'7'>::value, MsgTypes::ExecutionReport =enum_tags::mpl::to_tag<'8'>::value, MsgTypes::OrderCancelReject =enum_tags::mpl::to_tag<'9'>::value, MsgTypes::LogonRequest =enum_tags::mpl::to_tag<'A'>::value, MsgTypes::DerivativeSecurityList =enum_tags::mpl::to_tag<'A', 'A'>::value, MsgTypes::NewOrderMultileg =enum_tags::mpl::to_tag<'A', 'B'>::value, MsgTypes::MultilegOrderCancelReplace =enum_tags::mpl::to_tag<'A', 'C'>::value, MsgTypes::TradeCaptureReportRequest =enum_tags::mpl::to_tag<'A', 'D'>::value, MsgTypes::TradeCaptureReport =enum_tags::mpl::to_tag<'A', 'E'>::value, MsgTypes::OrderMassStatusRequest =enum_tags::mpl::to_tag<'A', 'F'>::value, MsgTypes::QuoteRequestReject =enum_tags::mpl::to_tag<'A', 'G'>::value, MsgTypes::RFQRequest =enum_tags::mpl::to_tag<'A', 'H'>::value, MsgTypes::QuoteStatusReport =enum_tags::mpl::to_tag<'A', 'I'>::value, MsgTypes::QuoteResponse =enum_tags::mpl::to_tag<'A', 'J'>::value, MsgTypes::Confirmation =enum_tags::mpl::to_tag<'A', 'K'>::value, MsgTypes::PositionMaintenanceRequest =enum_tags::mpl::to_tag<'A', 'L'>::value, MsgTypes::PositionMaintenanceReport =enum_tags::mpl::to_tag<'A', 'M'>::value, MsgTypes::RequestForPositions =enum_tags::mpl::to_tag<'A', 'N'>::value, MsgTypes::RequestForPositionsAck =enum_tags::mpl::to_tag<'A', 'O'>::value, MsgTypes::PositionReport =enum_tags::mpl::to_tag<'A', 'P'>::value, MsgTypes::TradeCaptureReportRequestAck =enum_tags::mpl::to_tag<'A', 'Q'>::value, MsgTypes::TradeCaptureReportAck =enum_tags::mpl::to_tag<'A', 'R'>::value, MsgTypes::AllocationReport =enum_tags::mpl::to_tag<'A', 'S'>::value, MsgTypes::AllocationReportAck =enum_tags::mpl::to_tag<'A', 'T'>::value, MsgTypes::ConfirmationAck =enum_tags::mpl::to_tag<'A', 'U'>::value, MsgTypes::SettlementInstructionRequest =enum_tags::mpl::to_tag<'A', 'V'>::value, MsgTypes::AssignmentReport =enum_tags::mpl::to_tag<'A', 'W'>::value, MsgTypes::CollateralRequest =enum_tags::mpl::to_tag<'A', 'X'>::value, MsgTypes::CollateralAssignment =enum_tags::mpl::to_tag<'A', 'Y'>::value, MsgTypes::CollateralResponse =enum_tags::mpl::to_tag<'A', 'Z'>::value, MsgTypes::News =enum_tags::mpl::to_tag<'B'>::value, MsgTypes::CollateralReport =enum_tags::mpl::to_tag<'B', 'A'>::value, MsgTypes::CollateralInquiry =enum_tags::mpl::to_tag<'B', 'B'>::value, MsgTypes::NetworkCounterpartySystemStatusRequest =enum_tags::mpl::to_tag<'B', 'C'>::value, MsgTypes::NetworkCounterpartySystemStatusResponse =enum_tags::mpl::to_tag<'B', 'D'>::value, MsgTypes::UserRequest =enum_tags::mpl::to_tag<'B', 'E'>::value, MsgTypes::UserResponse =enum_tags::mpl::to_tag<'B', 'F'>::value, MsgTypes::CollateralInquiryAck =enum_tags::mpl::to_tag<'B', 'G'>::value, MsgTypes::ConfirmationRequest =enum_tags::mpl::to_tag<'B', 'H'>::value, MsgTypes::TradingSessionListRequest =enum_tags::mpl::to_tag<'B', 'I'>::value, MsgTypes::TradingSessionList =enum_tags::mpl::to_tag<'B', 'J'>::value, MsgTypes::SecurityListUpdateReport =enum_tags::mpl::to_tag<'B', 'K'>::value, MsgTypes::AdjustedPositionReport =enum_tags::mpl::to_tag<'B', 'L'>::value, MsgTypes::AllocationInstructionAlert =enum_tags::mpl::to_tag<'B', 'M'>::value, MsgTypes::ExecutionAcknowledgement =enum_tags::mpl::to_tag<'B', 'N'>::value, MsgTypes::ContraryIntentionReport =enum_tags::mpl::to_tag<'B', 'O'>::value, MsgTypes::SecurityDefinitionUpdateReport =enum_tags::mpl::to_tag<'B', 'P'>::value, MsgTypes::SettlementObligationReport =enum_tags::mpl::to_tag<'B', 'Q'>::value, MsgTypes::DerivativeSecurityListUpdateReport =enum_tags::mpl::to_tag<'B', 'R'>::value, MsgTypes::TradingSessionListUpdateReport =enum_tags::mpl::to_tag<'B', 'S'>::value, MsgTypes::MarketDefinitionRequest =enum_tags::mpl::to_tag<'B', 'T'>::value, MsgTypes::MarketDefinition =enum_tags::mpl::to_tag<'B', 'U'>::value, MsgTypes::MarketDefinitionUpdateReport =enum_tags::mpl::to_tag<'B', 'V'>::value, MsgTypes::ApplicationMessageRequest =enum_tags::mpl::to_tag<'B', 'W'>::value, MsgTypes::ApplicationMessageRequestAck =enum_tags::mpl::to_tag<'B', 'X'>::value, MsgTypes::ApplicationMessageReport =enum_tags::mpl::to_tag<'B', 'Y'>::value, MsgTypes::OrderMassActionReport =enum_tags::mpl::to_tag<'B', 'Z'>::value, MsgTypes::Email =enum_tags::mpl::to_tag<'C'>::value, MsgTypes::OrderMassActionRequest =enum_tags::mpl::to_tag<'C', 'A'>::value, MsgTypes::UserNotification =enum_tags::mpl::to_tag<'C', 'B'>::value, MsgTypes::StreamAssignmentRequest =enum_tags::mpl::to_tag<'C', 'C'>::value, MsgTypes::StreamAssignmentReport =enum_tags::mpl::to_tag<'C', 'D'>::value, MsgTypes::StreamAssignmentReportACK =enum_tags::mpl::to_tag<'C', 'E'>::value, MsgTypes::NewOrderSingle =enum_tags::mpl::to_tag<'D'>::value, MsgTypes::NewOrderList =enum_tags::mpl::to_tag<'E'>::value, MsgTypes::OrderCancelRequest =enum_tags::mpl::to_tag<'F'>::value, MsgTypes::OrderCancelReplaceRequest =enum_tags::mpl::to_tag<'G'>::value, MsgTypes::OrderStatusRequest =enum_tags::mpl::to_tag<'H'>::value, MsgTypes::AllocationInstruction =enum_tags::mpl::to_tag<'J'>::value, MsgTypes::ListCancelRequest =enum_tags::mpl::to_tag<'K'>::value, MsgTypes::ListExecute =enum_tags::mpl::to_tag<'L'>::value, MsgTypes::ListStatusRequest =enum_tags::mpl::to_tag<'M'>::value, MsgTypes::ListStatus =enum_tags::mpl::to_tag<'N'>::value, MsgTypes::AllocationInstructionAck =enum_tags::mpl::to_tag<'P'>::value, MsgTypes::DontKnowTrade =enum_tags::mpl::to_tag<'Q'>::value, MsgTypes::QuoteRequest =enum_tags::mpl::to_tag<'R'>::value, MsgTypes::Quote =enum_tags::mpl::to_tag<'S'>::value, MsgTypes::SettlementInstructions =enum_tags::mpl::to_tag<'T'>::value, MsgTypes::MarketDataRequest =enum_tags::mpl::to_tag<'V'>::value, MsgTypes::MarketDataSnapshotFullRefresh =enum_tags::mpl::to_tag<'W'>::value, MsgTypes::MarketDataIncrementalRefresh =enum_tags::mpl::to_tag<'X'>::value, MsgTypes::MarketDataRequestReject =enum_tags::mpl::to_tag<'Y'>::value, MsgTypes::QuoteCancel =enum_tags::mpl::to_tag<'Z'>::value, MsgTypes::QuoteStatusRequest =enum_tags::mpl::to_tag<'a'>::value, MsgTypes::MassQuoteAcknowledgement =enum_tags::mpl::to_tag<'b'>::value, MsgTypes::SecurityDefinitionRequest =enum_tags::mpl::to_tag<'c'>::value, MsgTypes::SecurityDefinition =enum_tags::mpl::to_tag<'d'>::value, MsgTypes::SecurityStatusRequest =enum_tags::mpl::to_tag<'e'>::value, MsgTypes::SecurityStatus =enum_tags::mpl::to_tag<'f'>::value, MsgTypes::TradingSessionStatusRequest =enum_tags::mpl::to_tag<'g'>::value, MsgTypes::TradingSessionStatus =enum_tags::mpl::to_tag<'h'>::value, MsgTypes::MassQuote =enum_tags::mpl::to_tag<'i'>::value, MsgTypes::BusinessMessageReject =enum_tags::mpl::to_tag<'j'>::value, MsgTypes::BidRequest =enum_tags::mpl::to_tag<'k'>::value, MsgTypes::BidResponse =enum_tags::mpl::to_tag<'l'>::value, MsgTypes::ListStrikePrice =enum_tags::mpl::to_tag<'m'>::value, MsgTypes::XMLnonFIX =enum_tags::mpl::to_tag<'n'>::value, MsgTypes::RegistrationInstructions =enum_tags::mpl::to_tag<'o'>::value, MsgTypes::RegistrationInstructionsResponse =enum_tags::mpl::to_tag<'p'>::value, MsgTypes::OrderMassCancelRequest =enum_tags::mpl::to_tag<'q'>::value, MsgTypes::OrderMassCancelReport =enum_tags::mpl::to_tag<'r'>::value, MsgTypes::NewOrderCross =enum_tags::mpl::to_tag<'s'>::value, MsgTypes::CrossOrderCancelReplaceRequest =enum_tags::mpl::to_tag<'t'>::value, MsgTypes::CrossOrderCancelRequest =enum_tags::mpl::to_tag<'u'>::value, MsgTypes::SecurityTypeRequest =enum_tags::mpl::to_tag<'v'>::value, MsgTypes::SecurityTypes =enum_tags::mpl::to_tag<'w'>::value, MsgTypes::SecurityListRequest =enum_tags::mpl::to_tag<'x'>::value, MsgTypes::SecurityList =enum_tags::mpl::to_tag<'y'>::value, MsgTypes::DerivativeSecurityListRequest =enum_tags::mpl::to_tag<'z'>::value } |
enum | FieldsFast : uint64_t { FieldsFast::BodyLength =enum_tags::mpl::to_tag<'\001', '9', '='>::value, FieldsFast::ClOrdID =enum_tags::mpl::to_tag<'\001', '1', '1', '='>::value, FieldsFast::Currency =enum_tags::mpl::to_tag<'\001', '1', '5', '='>::value, FieldsFast::SecurityIDSource =enum_tags::mpl::to_tag<'\001', '2', '2', '='>::value, FieldsFast::MsgSeqNum =enum_tags::mpl::to_tag<'\001', '3', '4', '='>::value, FieldsFast::MsgType =enum_tags::mpl::to_tag<'\001', '3', '5', '='>::value, FieldsFast::OrderID =enum_tags::mpl::to_tag<'\001', '3', '7', '='>::value, FieldsFast::OrderQty =enum_tags::mpl::to_tag<'\001', '3', '8', '='>::value, FieldsFast::OrdStatus =enum_tags::mpl::to_tag<'\001', '3', '9', '='>::value, FieldsFast::OrdType =enum_tags::mpl::to_tag<'\001', '4', '0', '='>::value, FieldsFast::OrigClOrdID =enum_tags::mpl::to_tag<'\001', '4', '1', '='>::value, FieldsFast::Price =enum_tags::mpl::to_tag<'\001', '4', '4', '='>::value, FieldsFast::RefSeqNum =enum_tags::mpl::to_tag<'\001', '4', '5', '='>::value, FieldsFast::SecurityID =enum_tags::mpl::to_tag<'\001', '4', '8', '='>::value, FieldsFast::SenderCompID =enum_tags::mpl::to_tag<'\001', '4', '9', '='>::value, FieldsFast::Symbol =enum_tags::mpl::to_tag<'\001', '5', '5', '='>::value, FieldsFast::SendingTime =enum_tags::mpl::to_tag<'\001', '5', '2', '='>::value, FieldsFast::Side =enum_tags::mpl::to_tag<'\001', '5', '4', '='>::value, FieldsFast::TargetCompID =enum_tags::mpl::to_tag<'\001', '5', '6', '='>::value, FieldsFast::TimeInForce =enum_tags::mpl::to_tag<'\001', '5', '9', '='>::value, FieldsFast::TransactTime =enum_tags::mpl::to_tag<'\001', '6', '0', '='>::value, FieldsFast::XDestination =enum_tags::mpl::to_tag<'\001', '1', '0', '0', '='>::value, FieldsFast::CountryOfIssue =enum_tags::mpl::to_tag<'\001', '4', '7', '0', '='>::value, FieldsFast::Username =enum_tags::mpl::to_tag<'\001', '5', '5', '3', '='>::value, FieldsFast::Password =enum_tags::mpl::to_tag<'\001', '5', '5', '4', '='>::value, FieldsFast::NewPassword =enum_tags::mpl::to_tag<'\001', '9', '2', '5', '='>::value, FieldsFast::ExecType =enum_tags::mpl::to_tag<'\001', '1', '5', '0', '='>::value, FieldsFast::MarketSegmentID =enum_tags::mpl::to_tag<'\001', '1', '5', '1', '='>::value, FieldsFast::LeavesQty =enum_tags::mpl::to_tag<'\001', '1', '3', '0', '0', '='>::value, FieldsFast::CheckSum =enum_tags::mpl::to_tag<'\001', '1', '0', '='>::value } |
enum | ExecType : char { ExecType::New ='0', ExecType::DoneForDay ='3', ExecType::Cancelled ='4', ExecType::Replaced ='5', ExecType::PendingCancel ='6', ExecType::Stopped ='7', ExecType::Rejected ='8', ExecType::Suspended ='9', ExecType::PendingNew ='A', ExecType::Calculated ='B', ExecType::Expired ='C', ExecType::Restated ='D', ExecType::PendingReplace ='E', ExecType::Trade_PartialFillOrFill ='F', ExecType::TradeCorrect ='G', ExecType::TradeCancel ='H', ExecType::OrderStatus ='I', ExecType::TradeInAClearingHold ='J', ExecType::TradeHasBeenReleasedToClearing ='K', ExecType::TriggeredOrActivatedBySystem ='L' } |
enum | OrdStatus : char { OrdStatus::New ='0', OrdStatus::PartiallyFilled ='1', OrdStatus::Filled ='2', OrdStatus::DoneForDay ='3', OrdStatus::Cancelled ='4', OrdStatus::Replaced ='5', OrdStatus::PendingCancel ='6', OrdStatus::Stopped ='7', OrdStatus::Rejected ='8', OrdStatus::Suspended ='9', OrdStatus::PendingNew ='A', OrdStatus::Calculated ='B', OrdStatus::Expired ='C', OrdStatus::AcceptedForBidding ='D', OrdStatus::PendingReplace ='E' } |
enum | SecurityIDSource : char { CUSIP ='1', SEDOL ='2', QUIK ='3', ISIN ='4', RIC ='5', ISOCurrencyCode ='6', ISOCountryCode ='7' } |
enum | Side : char { Buy ='1', Sell ='2', SellShort ='5', SellShortExempt ='6' } |
Functions | |
int | convert (uint32_t a, char *buff, std::size_t sz) |
constexpr Side | convert (BATSBOE::common::Side a) |
int | convert_price (BATSBOE::common::Price_t const &a, char *buff, std::size_t sz) |
template<class RefData > | |
constexpr int | convert (MIT::common::SecurityID_t const &key, RefData const &ref_data, char *buff, std::size_t __attribute__((unused)) sz) |
ExecType | convert (MIT::common::ExecType const &a) noexcept(false) |
OrdStatus | convert (MIT::common::OrderStatus const &a) noexcept(false) |
int | convert (std::int32_t a, char *buff, std::size_t sz) |
int | convert (MIT::common::Price_t const &a, char *buff, std::size_t sz) |
constexpr char | convert (MIT::common::Side const &a) |
template<class DestMsg , class SrcMsg , class OutIter > | |
OutIter | convert_ClOrdID (SrcMsg const &msg, OutIter data) noexcept(true) |
template<class MsgVer > | |
class jmmcg::exchanges::FIX::common::Header | __attribute__ ((packed)) |
template<class MsgVer > | |
jmmcg::exchanges::FIX::common::Message Header | __attribute__ ((packed)) |
template<class MsgVer > | |
std::ostream & | operator<< (std::ostream &os, Message< MsgVer > const &m) |
template<class SrcMsgDetails , class DestMsgDetails , class SktT > | |
std::ostream & | operator<< (std::ostream &os, client_to_exchange_transformations< SrcMsgDetails, DestMsgDetails, SktT > const &ec) noexcept(false) |
template<class SrcMsgDetails , class DestMsgDetails , class SktT > | |
std::ostream & | operator<< (std::ostream &os, exchange_to_client_transformations< SrcMsgDetails, DestMsgDetails, SktT > const &ec) noexcept(false) |
template<class SrcMsgDetails , class SktT > | |
std::ostream & | operator<< (std::ostream &os, simulator_responses< SrcMsgDetails, SktT > const &ec) noexcept(false) |
BOOST_MPL_ASSERT_RELATION ((enum_tags::mpl::to_array< FieldsFast, FieldsFast::BodyLength >::size),==, sizeof(JMMCG_FIX_MSG_BODY_LENGTH_TAG)-1) | |
BOOST_MPL_ASSERT_RELATION ((enum_tags::mpl::to_array< FieldsFast, FieldsFast::MsgType >::size), >=, sizeof(JMMCG_FIX_MSG_TYPE_TAG)-1) | |
std::ostream & | operator<< (std::ostream &os, ExecType a) |
std::ostream & | operator<< (std::ostream &os, OrdStatus a) |
Variables | |
const char | Separator ='\001' |
const unsigned short | CheckSumLength =3 |
const std::size_t | shortest_field_length =4u |
using jmmcg::exchanges::FIX::common::checksum_t = typedef std::array<char, CheckSumLength+1> |
using jmmcg::exchanges::FIX::common::ClientOrderID_t = typedef std::array<char, 20> |
using jmmcg::exchanges::FIX::common::const_pointer = typedef element_type const * |
using jmmcg::exchanges::FIX::common::data_block_t = typedef pointer |
using jmmcg::exchanges::FIX::common::element_type = typedef char |
using jmmcg::exchanges::FIX::common::field_str_range_t = typedef std::pair<const_pointer, const_pointer> |
using jmmcg::exchanges::FIX::common::MsgTypes_t = typedef uint16_t |
using jmmcg::exchanges::FIX::common::Password_t = typedef std::array<char, 25> |
using jmmcg::exchanges::FIX::common::pointer = typedef element_type * |
using jmmcg::exchanges::FIX::common::Price_t = typedef std::array<char, 25> |
using jmmcg::exchanges::FIX::common::Reason_t = typedef std::array<char, 20> |
using jmmcg::exchanges::FIX::common::SecurityID_t = typedef std::array<char, 20> |
using jmmcg::exchanges::FIX::common::underlying_fix_data_buffer = typedef std::array<element_type, max_size_of_fix_message> |
using jmmcg::exchanges::FIX::common::UserName_t = typedef std::array<char, 25> |
anonymous enum : std::size_t |
|
strong |
|
strong |
|
strong |
|
strong |
enum jmmcg::exchanges::FIX::common::SecurityIDSource : char |
enum jmmcg::exchanges::FIX::common::Side : char |
class jmmcg::exchanges::FIX::common::Header jmmcg::exchanges::FIX::common::__attribute__ | ( | (packed) | ) |
jmmcg::exchanges::FIX::common::Message Header jmmcg::exchanges::FIX::common::__attribute__ | ( | (packed) | ) |
jmmcg::exchanges::FIX::common::BOOST_MPL_ASSERT_RELATION | ( | (enum_tags::mpl::to_array< FieldsFast, FieldsFast::BodyLength >::size) | , |
sizeof(JMMCG_FIX_MSG_BODY_LENGTH_TAG)- | 1 | ||
) |
jmmcg::exchanges::FIX::common::BOOST_MPL_ASSERT_RELATION | ( | (enum_tags::mpl::to_array< FieldsFast, FieldsFast::MsgType >::size) | , |
>= | , | ||
sizeof(JMMCG_FIX_MSG_TYPE_TAG)- | 1 | ||
) |
|
inline |
Definition at line 30 of file batsboe_common_to_fix_conversions.hpp.
|
inline |
Definition at line 35 of file batsboe_common_to_fix_conversions.hpp.
|
inline |
Note that only ISIN symbology is supported.
Definition at line 37 of file mit_to_fix_conversions.hpp.
|
inlinenoexcept |
Definition at line 49 of file mit_to_fix_conversions.hpp.
|
inlinenoexcept |
Definition at line 85 of file mit_to_fix_conversions.hpp.
|
inline |
Definition at line 110 of file mit_to_fix_conversions.hpp.
|
inline |
Definition at line 115 of file mit_to_fix_conversions.hpp.
|
inline |
Definition at line 124 of file mit_to_fix_conversions.hpp.
|
noexcept |
Definition at line 137 of file mit_to_fix_conversions.hpp.
|
inline |
Definition at line 50 of file batsboe_common_to_fix_conversions.hpp.
|
inlinenoexcept |
Definition at line 38 of file processing_rules_impl.hpp.
|
inlinenoexcept |
Definition at line 63 of file processing_rules_impl.hpp.
|
inlinenoexcept |
Definition at line 94 of file processing_rules_impl.hpp.
|
inline |
Definition at line 255 of file messages_impl.hpp.
|
inline |
|
inline |
const unsigned short jmmcg::exchanges::FIX::common::CheckSumLength =3 |
const char jmmcg::exchanges::FIX::common::Separator ='\001' |