OnixS C++ CME MDP Premium Market Data Handler 5.10.3
Users' manual and API documentation
Loading...
Searching...
No Matches
Migration Guide for Messaging API Changes

What Changed

The messaging API was reorganized so the market data domain API and the message decoding API are separated more clearly.

The important mechanical rules are:

  • Messaging primitives, SBE messages, fields, composites, serialization helpers, decimals, timestamps, and string references moved from OnixS::CME::MDH to OnixS::CME::MDH::Messaging.
  • Tag-based FIX support moved from OnixS::CME::MDH::FIX to OnixS::CME::MDH::Messaging::FIX.
  • Old messaging headers still compile while compatibility mode is enabled, but they are deprecated forwarding headers.
  • Define ONIXS_CMEMDH_ENABLE_DEPRECATED_WARNING to get warnings about deprecated API usage.
  • <OnixS/CME/MDH.h> includes compatibility declarations by default. Define ONIXS_CMEMDH_MESSAGING_NO_DEPRECATED only for the final hard-cutover validation build.
  • Listener argument aliases mostly remain in OnixS::CME::MDH, but the message types they wrap now come from Messaging.
  • To also exclude older deprecated non-messaging API members, define ONIXS_CMEMDH_NO_DEPRECATED.

For migrated code, local namespace aliases usually keep call sites readable:

Recommended migration flow:

  1. Upgrade the SDK.
  2. Add ONIXS_CMEMDH_ENABLE_DEPRECATED_WARNING macro before including OnixS headers.
  3. Build with deprecation diagnostics enabled, for example -Wdeprecated-declarations with GCC/Clang or /W3 or higher with MSVC.
  4. Replace old headers, old top-level messaging names, and old FIX:: references using the mapping tables below.
  5. Fix the non-mechanical changes: tryCast, StrRef::items(), listener aliases, and value-sensitive tag renames.
  6. Add ONIXS_CMEMDH_MESSAGING_NO_DEPRECATED macro before including OnixS headers.
  7. Perform a separate validation build once deprecated names are gone.

Mapping Tables

Use these tables as the searchable migration reference. The old names are available only through deprecated compatibility declarations.

Headers

Old header New header
<OnixS/CME/MDH/CppUtils.h> <OnixS/CME/MDH/ABI.h>
<OnixS/CME/MDH/Messages.h> <OnixS/CME/MDH/messaging/Messages.h>
<OnixS/CME/MDH/Fields.h> <OnixS/CME/MDH/messaging/Fields.h>
<OnixS/CME/MDH/Composites.h> <OnixS/CME/MDH/messaging/Composites.h>
<OnixS/CME/MDH/Decimal.h> <OnixS/CME/MDH/messaging/Decimal.h> and <OnixS/CME/MDH/messaging/Decimal.Operations.h>
<OnixS/CME/MDH/Time.h> <OnixS/CME/MDH/messaging/Time.h>
<OnixS/CME/MDH/String.h> <OnixS/CME/MDH/messaging/String.h> and <OnixS/CME/MDH/messaging/StrRef.h>
<OnixS/CME/MDH/Integral.h> <OnixS/CME/MDH/messaging/Integral.h>
<OnixS/CME/MDH/Memory.h> <OnixS/CME/MDH/messaging/Memory.h>
<OnixS/CME/MDH/Serialization.h> <OnixS/CME/MDH/messaging/Serialization.h>
<OnixS/CME/MDH/BinaryMessage.h> <OnixS/CME/MDH/messaging/SbeMessage.h>
<OnixS/CME/MDH/SchemaTraits.h> <OnixS/CME/MDH/messaging/SchemaTraits.h>
<OnixS/CME/MDH/Typification.h> <OnixS/CME/MDH/messaging/Typification.h>
<OnixS/CME/MDH/FIX/Accessors.h> <OnixS/CME/MDH/Accessors.h>
<OnixS/CME/MDH/FIX/Field.h> <OnixS/CME/MDH/messaging/TagBased/Field.h>
<OnixS/CME/MDH/FIX/Message.h> <OnixS/CME/MDH/messaging/TagBased/Message.h>
<OnixS/CME/MDH/FIX/Messages.h> <OnixS/CME/MDH/messaging/TagBased/Messages.h>
<OnixS/CME/MDH/FIX/Tags.h> <OnixS/CME/MDH/messaging/TagBased/Tags.h>
<OnixS/CME/MDH/FIX/Tag.h> <OnixS/CME/MDH/messaging/TagBased/Tag.h>
<OnixS/CME/MDH/FIX/MessageListener.h> <OnixS/CME/MDH/messaging/TagBased/MessageListener.h>
<OnixS/CME/MDH/FIX/MultiContainer.h> <OnixS/CME/MDH/messaging/TagBased/MultiContainer.h>
<OnixS/CME/MDH/FIX/ValueContainer.h> <OnixS/CME/MDH/messaging/TagBased/ValueContainer.h>
<OnixS/CME/MDH/FIX/ValueConverters.h> <OnixS/CME/MDH/messaging/TagBased/ValueConverters.h>

For broad includes, use either:

Types and APIs

Old name New name
Char Messaging::Char
CHAR Messaging::CHAR
Int8 Messaging::Int8
UInt8 Messaging::UInt8
Int16 Messaging::Int16
UInt16 Messaging::UInt16
Int32 Messaging::Int32
UInt32 Messaging::UInt32
Int64 Messaging::Int64
UInt64 Messaging::UInt64
IntegralConstant<Type, Constant> Messaging::IntegralConstant<Type, Constant>
UnwrapType<Type> Messaging::UnwrapType<Type>
LocalMktDate Messaging::LocalMktDate
Asset Messaging::Char[6]
CFICode Messaging::Char[6]
CountryCode Messaging::Char[2]
Currency Messaging::Char[3]
FeedType Messaging::Char[3]
LongName Messaging::Char[35]
QuoteReqId Messaging::Char[23]
SecurityExchange Messaging::Char[4]
SecurityGroup Messaging::Char[6]
SecuritySubType Messaging::Char[5]
SecurityType Messaging::Char[6]
String3 Messaging::Char[3]
String5 Messaging::Char[5]
String6 Messaging::Char[6]
String7 Messaging::Char[7]
String8 Messaging::Char[8]
String12 Messaging::Char[12]
String20 Messaging::Char[20]
String25 Messaging::Char[25]
Symbol Messaging::Char[20]
Text Messaging::Char[180]
UnderlyingSymbol Messaging::Char[20]
UnitOfMeasure Messaging::Char[30]
UserDefinedInstrument Messaging::UserDefinedInstrument
StrRef Messaging::StrRef
toStrRef(...) Messaging::toStrRef(...)
toStr(...) for messaging values Messaging::toStr(...)
Decimal Messaging::Decimal
FloatingPointDecimal<MantissaType, ExponentType> Messaging::FloatingPointDecimal<MantissaType, ExponentType>
FixedPointDecimal<MantissaType, ExponentType> Messaging::FixedPointDecimal<MantissaType, ExponentType>
DecimalMantissa Messaging::DecimalMantissa
DecimalExponent Messaging::DecimalExponent
TimeTraits Messaging::TimeTraits
TimeSpanFormat Messaging::TimeSpanFormat
TimeSpan Messaging::TimeSpan
Month Messaging::Month
TimestampFormat Messaging::TimestampFormat
Timestamp Messaging::Timestamp
Byte Messaging::Byte
Word Messaging::Word
DWord Messaging::DWord
QWord Messaging::QWord
MessageSize Messaging::MessageSize
CompositeExtractor<Size> Messaging::CompositeExtractor<Size>
MessageTemplateId Messaging::MessageTemplateId
BinaryBlockBase Messaging::BinaryBlockBase
BinaryMessage Messaging::SbeMessage
BinaryBlock<Container, BlockLength> Messaging::BinaryBlock<Container, BlockLength>
SbeFields<Container, BlockLength> Messaging::SbeFields<Container, BlockLength>
BinaryGroupEntry<Length> Messaging::SbeGroupEntry<Length>
BinaryGroupEntries<EntryType, Length, NumInGroup, EncodedLength> Messaging::SbeGroupEntries<EntryType, Length, NumInGroup, EncodedLength>
BinaryGroup<EntryType, DimensionType, LengthType> Messaging::SbeGroup<EntryType, DimensionType, LengthType>
BinaryGroups<Length> Messaging::SbeGroupList<Length>
SchemaVersion Messaging::SchemaVersion
SchemaTraits Messaging::SchemaTraits
Decimal9 Messaging::Decimal9
NullDecimal9 Messaging::NullDecimal9
DecimalQty Messaging::DecimalQty
NullDecimalQty Messaging::NullDecimalQty
MaturityMonthYear Messaging::MaturityMonthYear
NullMaturityMonthYear Messaging::NullMaturityMonthYear
PRICE9 Messaging::PRICE9
NullPRICE9 Messaging::NullPRICE9
GroupSize Messaging::GroupSize
GroupSize8Byte Messaging::GroupSize8Byte
GroupSizeEncoding Messaging::GroupSizeEncoding
MessageHeader Messaging::MessageHeader
MessageHeaderBuilder Messaging::MessageHeaderBuilder
InstAttribType Messaging::InstAttribType
EntryTypeChannelReset Messaging::EntryTypeChannelReset
EntryTypeLimits Messaging::EntryTypeLimits
EntryTypeTrade Messaging::EntryTypeTrade
EntryTypeVol Messaging::EntryTypeVol
UpdateActionNew Messaging::UpdateActionNew
UpdateTypeNew Messaging::UpdateTypeNew
SecurityAltIDSourceISIN Messaging::SecurityAltIDSourceISIN
SecurityIDSource Messaging::SecurityIDSource
AggressorFlag Messaging::AggressorFlag
AggressorSide Messaging::AggressorSide
EventType Messaging::EventType
HaltReason Messaging::HaltReason
LegSide Messaging::LegSide
EntryType Messaging::EntryType
EntryTypeBook Messaging::EntryTypeBook
EntryTypeDailyStatistics Messaging::EntryTypeDailyStatistics
EntryTypeStatistics Messaging::EntryTypeStatistics
UpdateAction Messaging::UpdateAction
MoneyOrPar Messaging::MoneyOrPar
OpenCloseSettlFlag Messaging::OpenCloseSettlFlag
OrderUpdateAction Messaging::OrderUpdateAction
PriceSource Messaging::PriceSource
PutOrCall Messaging::PutOrCall
RepoSubType Messaging::RepoSubType
SecurityAltIDSource Messaging::SecurityAltIDSource
SecurityTradingEvent Messaging::SecurityTradingEvent
SecurityTradingStatus Messaging::SecurityTradingStatus
SecurityUpdateAction Messaging::SecurityUpdateAction
Side Messaging::Side
WorkupTradingStatus Messaging::WorkupTradingStatus
InstAttribValue Messaging::InstAttribValue
MatchEventIndicator Messaging::MatchEventIndicator
SettlPriceType Messaging::SettlPriceType
NullInt32 Messaging::NullInt32
NullInt8 Messaging::NullInt8
NullLocalMktDate Messaging::NullLocalMktDate
NullUInt16 Messaging::NullUInt16
NullUInt32 Messaging::NullUInt32
NullUInt64 Messaging::NullUInt64
NullUInt8 Messaging::NullUInt8
InstrumentDefinitionFixedIncome57 Messaging::InstrumentDefinitionFixedIncome57
InstrumentDefinitionFX63 Messaging::InstrumentDefinitionFX63
IncrementalRefreshBookLongQty64 Messaging::IncrementalRefreshBookLongQty64
IncrementalRefreshTradeSummaryLongQty65 Messaging::IncrementalRefreshTradeSummaryLongQty65
IncrementalRefreshVolumeLongQty66 Messaging::IncrementalRefreshVolumeLongQty66
IncrementalRefreshSessionStatisticsLongQty67 Messaging::IncrementalRefreshSessionStatisticsLongQty67
SnapshotFullRefreshLongQty69 Messaging::SnapshotFullRefreshLongQty69
AdminLogin408 Messaging::AdminLogin408
AdminLogout409 Messaging::AdminLogout409
AdminHeartbeat410 Messaging::AdminHeartbeat410
ChannelReset4 Messaging::ChannelReset4
AdminHeartbeat12 Messaging::AdminHeartbeat12
AdminLogin15 Messaging::AdminLogin15
AdminLogout16 Messaging::AdminLogout16
InstrumentDefinitionFuture54 Messaging::InstrumentDefinitionFuture54
InstrumentDefinitionSpread56 Messaging::InstrumentDefinitionSpread56
SecurityStatus30 Messaging::SecurityStatus30
IncrementalRefreshBook46 Messaging::IncrementalRefreshBook46
IncrementalRefreshDailyStatistics49 Messaging::IncrementalRefreshDailyStatistics49
IncrementalRefreshLimitsBanding50 Messaging::IncrementalRefreshLimitsBanding50
IncrementalRefreshSessionStatistics51 Messaging::IncrementalRefreshSessionStatistics51
IncrementalRefreshVolume37 Messaging::IncrementalRefreshVolume37
SnapshotFullRefresh52 Messaging::SnapshotFullRefresh52
QuoteRequest39 Messaging::QuoteRequest39
InstrumentDefinitionOption55 Messaging::InstrumentDefinitionOption55
IncrementalRefreshTradeSummary48 Messaging::IncrementalRefreshTradeSummary48
IncrementalRefreshOrderBook47 Messaging::IncrementalRefreshOrderBook47
SnapshotFullRefreshOrderBook53 Messaging::SnapshotFullRefreshOrderBook53
FIX::Tag Messaging::FIX::Tag
FIX::MessageArgs Messaging::FIX::MessageArgs
FIX::MessageListener Messaging::FIX::MessageListener
FIX::TagValue Messaging::FIX::TagValue
FIX::TagValues Messaging::FIX::TagValues
FIX::TagValueIterator Messaging::FIX::TagValueIterator
FIX::TagValueConstIterator Messaging::FIX::TagValueConstIterator
FIX::TagValueSelector Messaging::FIX::TagValueSelector
FIX::TagValueSelectionIterator Messaging::FIX::TagValueSelectionIterator
FIX::MultiContainer Messaging::FIX::MultiContainer
FIX::ValueConverter Messaging::FIX::ValueConverter
FIX::NullConverter Messaging::FIX::NullConverter
FIX::StrRefConverter Messaging::FIX::StrRefConverter
FIX::CharConverter Messaging::FIX::CharConverter
FIX::IntegerConverter<Integer, Descendant> Messaging::FIX::IntegerConverter<Integer, Descendant>
FIX::Int8Converter Messaging::FIX::Int8Converter
FIX::UInt8Converter Messaging::FIX::UInt8Converter
FIX::Int16Converter Messaging::FIX::Int16Converter
FIX::UInt16Converter Messaging::FIX::UInt16Converter
FIX::Int32Converter Messaging::FIX::Int32Converter
FIX::UInt32Converter Messaging::FIX::UInt32Converter
FIX::Int64Converter Messaging::FIX::Int64Converter
FIX::UInt64Converter Messaging::FIX::UInt64Converter
FIX::DecimalConverter Messaging::FIX::DecimalConverter
FIX::TimestampConverter Messaging::FIX::TimestampConverter
FIX::MaturityMonthYearConverter Messaging::FIX::MaturityMonthYearConverter
FIX::ValueKinds Messaging::FIX::ValueKinds
FIX::ValueKind<Value> Messaging::FIX::ValueKind<Value>
FIX::ValueConversionTraits<Value, Kind> Messaging::FIX::ValueConversionTraits<Value, Kind>
FIX::ValueConversion<Value> Messaging::FIX::ValueConversion<Value>
FIX::ValueContainer Messaging::FIX::ValueContainer
FIX::Field Messaging::FIX::Field
FIX::FieldAccessor Messaging::FIX::FieldAccessor
FIX::FieldSet Messaging::FIX::FieldSet
FIX::GroupEntrySource Messaging::FIX::GroupEntrySource
FIX::GroupEntryAccessor Messaging::FIX::GroupEntryAccessor
FIX::GroupEntry Messaging::FIX::GroupEntry
FIX::GroupEntriesSource Messaging::FIX::GroupEntriesSource
FIX::Group Messaging::FIX::Group
FIX::MessageAccessor Messaging::FIX::MessageAccessor
FIX::Message Messaging::FIX::Message
FIX::ChannelReset4 Messaging::FIX::ChannelReset4
FIX::AdminHeartbeat12 Messaging::FIX::AdminHeartbeat12
FIX::AdminLogin15 Messaging::FIX::AdminLogin15
FIX::AdminLogout16 Messaging::FIX::AdminLogout16
FIX::SecurityStatus30 Messaging::FIX::SecurityStatus30
FIX::IncrementalRefreshVolume37 Messaging::FIX::IncrementalRefreshVolume37
FIX::QuoteRequest39 Messaging::FIX::QuoteRequest39
FIX::IncrementalRefreshBook46 Messaging::FIX::IncrementalRefreshBook46
FIX::IncrementalRefreshOrderBook47 Messaging::FIX::IncrementalRefreshOrderBook47
FIX::IncrementalRefreshTradeSummary48 Messaging::FIX::IncrementalRefreshTradeSummary48
FIX::IncrementalRefreshDailyStatistics49 Messaging::FIX::IncrementalRefreshDailyStatistics49
FIX::IncrementalRefreshLimitsBanding50 Messaging::FIX::IncrementalRefreshLimitsBanding50
FIX::IncrementalRefreshSessionStatistics51 Messaging::FIX::IncrementalRefreshSessionStatistics51
FIX::SnapshotFullRefresh52 Messaging::FIX::SnapshotFullRefresh52
FIX::SnapshotFullRefreshOrderBook53 Messaging::FIX::SnapshotFullRefreshOrderBook53
FIX::InstrumentDefinitionFuture54 Messaging::FIX::InstrumentDefinitionFuture54
FIX::InstrumentDefinitionOption55 Messaging::FIX::InstrumentDefinitionOption55
FIX::InstrumentDefinitionSpread56 Messaging::FIX::InstrumentDefinitionSpread56
FIX::InstrumentDefinitionFixedIncome57 Messaging::FIX::InstrumentDefinitionFixedIncome57
FIX::InstrumentDefinitionFX63 Messaging::FIX::InstrumentDefinitionFX63
FIX::IncrementalRefreshBookLongQty64 Messaging::FIX::IncrementalRefreshBookLongQty64
FIX::IncrementalRefreshTradeSummaryLongQty65 Messaging::FIX::IncrementalRefreshTradeSummaryLongQty65
FIX::IncrementalRefreshVolumeLongQty66 Messaging::FIX::IncrementalRefreshVolumeLongQty66
FIX::IncrementalRefreshSessionStatisticsLongQty67 Messaging::FIX::IncrementalRefreshSessionStatisticsLongQty67
FIX::SnapshotFullRefreshLongQty69 Messaging::FIX::SnapshotFullRefreshLongQty69
FIX::AdminLogin408 Messaging::FIX::AdminLogin408
FIX::AdminLogout409 Messaging::FIX::AdminLogout409
FIX::AdminHeartbeat410 Messaging::FIX::AdminHeartbeat410
FIX::securityId(...) securityId(...)
FIX::securityGroup(...) securityGroup(...)
FIX::symbol(...) symbol(...)
FIX::asset(...) asset(...)
FIX::securityUpdateAction(...) securityUpdateAction(...)
FIX::bookDepths(...) bookDepths(...)
FIX::matchEventIndicator(...) matchEventIndicator(...)
FIX::timestamp(...) timestamp(...)

ChannelId and SecurityId are domain identifiers, not moved messaging API names. They remain in OnixS::CME::MDH, but their underlying typedefs now use messaging primitives:

Domain typedef Underlying type
ChannelId Messaging::UInt32
SecurityId Messaging::Int32

Most code should keep using ChannelId and SecurityId. Code that stores the underlying type directly, performs overload selection on it, or mirrors callback signatures may need Messaging::UInt32 or Messaging::Int32.

Tag Constants

This is the complete deprecated old-to-new tag mapping from the include/OnixS/CME/MDH/FIX/Tags.h compatibility shim. Use it as the authoritative reference when replacing old FIX::Tags::* constants.

Old tag New tag Value
FIX::Tags::AggressorSide Messaging::FIX::Tags::AggressorSide 5797
FIX::Tags::AltMinPriceIncrement Messaging::FIX::Tags::AltMinPriceIncrement 37739
FIX::Tags::AltMinQuoteLife Messaging::FIX::Tags::AltMinQuoteLife 37738
FIX::Tags::AltPriceIncrementConstraint Messaging::FIX::Tags::AltPriceIncrementConstraint 37742
FIX::Tags::ApplID Messaging::FIX::Tags::ApplId 1180
FIX::Tags::Asset Messaging::FIX::Tags::Asset 6937
FIX::Tags::CFICode Messaging::FIX::Tags::CfiCode 461
FIX::Tags::ClearedVolume Messaging::FIX::Tags::ClearedVolume 5791
FIX::Tags::ContractMultiplier Messaging::FIX::Tags::ContractMultiplier 231
FIX::Tags::ContractMultiplierUnit Messaging::FIX::Tags::ContractMultiplierUnit 1435
FIX::Tags::CountryOfIssue Messaging::FIX::Tags::CountryOfIssue 470
FIX::Tags::CouponDayCount Messaging::FIX::Tags::CouponDayCount 1950
FIX::Tags::CouponFrequencyPeriod Messaging::FIX::Tags::CouponFrequencyPeriod 1948
FIX::Tags::CouponFrequencyUnit Messaging::FIX::Tags::CouponFrequencyUnit 1949
FIX::Tags::CouponRate Messaging::FIX::Tags::CouponRate 223
FIX::Tags::Currency Messaging::FIX::Tags::Currency 15
FIX::Tags::CurrentChunk Messaging::FIX::Tags::CurrentChunk 37710
FIX::Tags::DatedDate Messaging::FIX::Tags::DatedDate 873
FIX::Tags::DecayQuantity Messaging::FIX::Tags::DecayQuantity 5818
FIX::Tags::DecayStartDate Messaging::FIX::Tags::DecayStartDate 5819
FIX::Tags::DisplayFactor Messaging::FIX::Tags::DisplayFactor 9787
FIX::Tags::EventTime Messaging::FIX::Tags::EventTime 1145
FIX::Tags::EventType Messaging::FIX::Tags::EventType 865
FIX::Tags::FXBenchmarkRateFix Messaging::FIX::Tags::FxBenchmarkRateFix 2796
FIX::Tags::FXCurrencySymbol Messaging::FIX::Tags::FxCurrencySymbol 37725
FIX::Tags::FinancialInstrumentFullName Messaging::FIX::Tags::FinancialInstrumentFullName 2714
FIX::Tags::FixRateLocalTime Messaging::FIX::Tags::FixRateLocalTime 37726
FIX::Tags::FixRateLocalTimeZone Messaging::FIX::Tags::FixRateLocalTimeZone 37727
FIX::Tags::FlowScheduleType Messaging::FIX::Tags::FlowScheduleType 1439
FIX::Tags::HaltReason Messaging::FIX::Tags::HaltReason 327
FIX::Tags::HeartBtInt Messaging::FIX::Tags::HeartBtInt 108
FIX::Tags::HighLimitPrice Messaging::FIX::Tags::HighLimitPrice 1149
FIX::Tags::InstAttribType Messaging::FIX::Tags::InstAttribType 871
FIX::Tags::InstAttribValue Messaging::FIX::Tags::InstAttribValue 872
FIX::Tags::InstrumentGUID Messaging::FIX::Tags::InstrumentGUId 37513
FIX::Tags::InterveningDays Messaging::FIX::Tags::InterveningDays 37730
FIX::Tags::IssueDate Messaging::FIX::Tags::IssueDate 225
FIX::Tags::Issuer Messaging::FIX::Tags::Issuer 106
FIX::Tags::LastMsgSeqNumProcessed Messaging::FIX::Tags::LastMsgSeqNumProcessed 369
FIX::Tags::LastQty Messaging::FIX::Tags::LastQty 32
FIX::Tags::LastUpdateTime Messaging::FIX::Tags::LastUpdateTime 779
FIX::Tags::LegOptionDelta Messaging::FIX::Tags::LegOptionDelta 1017
FIX::Tags::LegPrice Messaging::FIX::Tags::LegPrice 566
FIX::Tags::LegRatioQty Messaging::FIX::Tags::LegRatioQty 623
FIX::Tags::LegSecurityID Messaging::FIX::Tags::LegSecurityId 602
FIX::Tags::LegSecurityIDSource Messaging::FIX::Tags::LegSecurityIdSource 603
FIX::Tags::LegSide Messaging::FIX::Tags::LegSide 624
FIX::Tags::LotType Messaging::FIX::Tags::LotType 1093
FIX::Tags::LowLimitPrice Messaging::FIX::Tags::LowLimitPrice 1148
FIX::Tags::MDDisplayQty Messaging::FIX::Tags::DisplayQty 37706
FIX::Tags::MDEntryPx Messaging::FIX::Tags::EntryPx 270
FIX::Tags::MDEntrySize Messaging::FIX::Tags::EntrySize 271
FIX::Tags::MDEntryType Messaging::FIX::Tags::EntryType 269
FIX::Tags::MDFeedType Messaging::FIX::Tags::FeedType 1022
FIX::Tags::MDOrderPriority Messaging::FIX::Tags::OrderPriority 37707
FIX::Tags::MDPriceLevel Messaging::FIX::Tags::PriceLevel 1023
FIX::Tags::MDSecurityTradingStatus Messaging::FIX::Tags::MdSecurityTradingStatus 1682
FIX::Tags::MDTradeEntryID Messaging::FIX::Tags::TradeEntryId 37711
FIX::Tags::MDUpdateAction Messaging::FIX::Tags::UpdateAction 279
FIX::Tags::MainFraction Messaging::FIX::Tags::MainFraction 37702
FIX::Tags::MarketDepth Messaging::FIX::Tags::MarketDepth 264
FIX::Tags::MarketSegmentID Messaging::FIX::Tags::MarketSegmentId 1300
FIX::Tags::MarketSet Messaging::FIX::Tags::MarketSet 37722
FIX::Tags::MatchAlgorithm Messaging::FIX::Tags::MatchAlgorithm 1142
FIX::Tags::MatchEventIndicator Messaging::FIX::Tags::MatchEventIndicator 5799
FIX::Tags::MaturityDate Messaging::FIX::Tags::MaturityDate 541
FIX::Tags::MaturityMonthYear Messaging::FIX::Tags::MaturityMonthYear 200
FIX::Tags::MaxBidAskConstraint Messaging::FIX::Tags::MaxBidAskConstraint 37743
FIX::Tags::MaxPriceDiscretionOffset Messaging::FIX::Tags::MaxPriceDiscretionOffset 37728
FIX::Tags::MaxPriceVariation Messaging::FIX::Tags::MaxPriceVariation 1143
FIX::Tags::MaxTradeVol Messaging::FIX::Tags::MaxTradeVol 1140
FIX::Tags::MinCabPrice Messaging::FIX::Tags::MinCabPrice 9850
FIX::Tags::MinLotSize Messaging::FIX::Tags::MinLotSize 1231
FIX::Tags::MinPriceIncrement Messaging::FIX::Tags::MinPriceIncrement 969
FIX::Tags::MinPriceIncrementAmount Messaging::FIX::Tags::MinPriceIncrementAmount 1146
FIX::Tags::MinQuoteLife Messaging::FIX::Tags::MinQuoteLife 37731
FIX::Tags::MinTradeVol Messaging::FIX::Tags::MinTradeVol 562
FIX::Tags::NoChunks Messaging::FIX::Tags::Chunks 37709
FIX::Tags::NoEvents Messaging::FIX::Tags::Events 864
FIX::Tags::NoInstAttrib Messaging::FIX::Tags::InstAttrib 870
FIX::Tags::NoLegs Messaging::FIX::Tags::Legs 555
FIX::Tags::NoLotTypeRules Messaging::FIX::Tags::LotTypeRules 1234
FIX::Tags::NoMDEntries Messaging::FIX::Tags::Entries 268
FIX::Tags::NoMDFeedTypes Messaging::FIX::Tags::FeedTypes 1141
FIX::Tags::NoOrderIDEntries Messaging::FIX::Tags::OrderIdEntries 37705
FIX::Tags::NoRelatedInstruments Messaging::FIX::Tags::RelatedInstruments 1647
FIX::Tags::NoRelatedSym Messaging::FIX::Tags::RelatedSym 146
FIX::Tags::NoTradingSessions Messaging::FIX::Tags::TradingSessions 386
FIX::Tags::NoUnderlyings Messaging::FIX::Tags::Underlyings 711
FIX::Tags::NumberOfOrders Messaging::FIX::Tags::NumberOfOrders 346
FIX::Tags::OpenCloseSettlFlag Messaging::FIX::Tags::OpenCloseSettlFlag 286
FIX::Tags::OpenInterestQty Messaging::FIX::Tags::OpenInterestQty 5792
FIX::Tags::OrderID Messaging::FIX::Tags::OrderId 37
FIX::Tags::OrderQty Messaging::FIX::Tags::OrderQty 38
FIX::Tags::OrderUpdateAction Messaging::FIX::Tags::OrderUpdateAction 37708
FIX::Tags::OriginalContractSize Messaging::FIX::Tags::OriginalContractSize 5849
FIX::Tags::ParValue Messaging::FIX::Tags::ParValue 37723
FIX::Tags::PartyRoleClearingOrg Messaging::FIX::Tags::PartyRoleClearingOrg 9736
FIX::Tags::PriceDisplayFormat Messaging::FIX::Tags::PriceDisplayFormat 9800
FIX::Tags::PricePrecision Messaging::FIX::Tags::PricePrecision 2349
FIX::Tags::PriceQuoteCurrency Messaging::FIX::Tags::PriceQuoteCurrency 1524
FIX::Tags::PriceQuoteMethod Messaging::FIX::Tags::PriceQuoteMethod 1196
FIX::Tags::PriceRatio Messaging::FIX::Tags::PriceRatio 5770
FIX::Tags::PutOrCall Messaging::FIX::Tags::PutOrCall 201
FIX::Tags::QuoteReqID Messaging::FIX::Tags::QuoteReqId 131
FIX::Tags::QuoteType Messaging::FIX::Tags::QuoteType 537
FIX::Tags::RateSource Messaging::FIX::Tags::RateSource 1446
FIX::Tags::ReferenceID Messaging::FIX::Tags::ReferenceId 9633
FIX::Tags::RelatedSecurityID Messaging::FIX::Tags::RelatedSecurityId 1650
FIX::Tags::RelatedSecurityIDSource Messaging::FIX::Tags::RelatedSecurityIdSource 1651
FIX::Tags::RelatedSymbol Messaging::FIX::Tags::RelatedSymbol 1649
FIX::Tags::RiskSet Messaging::FIX::Tags::RiskSet 37721
FIX::Tags::RptSeq Messaging::FIX::Tags::RptSeq 83
FIX::Tags::SecurityAltID Messaging::FIX::Tags::SecurityAltId 455
FIX::Tags::SecurityAltIDSource Messaging::FIX::Tags::SecurityAltIdSource 456
FIX::Tags::SecurityExchange Messaging::FIX::Tags::SecurityExchange 207
FIX::Tags::SecurityGroup Messaging::FIX::Tags::SecurityGroup 1151
FIX::Tags::SecurityID Messaging::FIX::Tags::SecurityId 48
FIX::Tags::SecurityIDSource Messaging::FIX::Tags::SecurityIdSource 22
FIX::Tags::SecuritySubType Messaging::FIX::Tags::SecuritySubType 762
FIX::Tags::SecurityTradingEvent Messaging::FIX::Tags::SecurityTradingEvent 1174
FIX::Tags::SecurityTradingStatus Messaging::FIX::Tags::SecurityTradingStatus 326
FIX::Tags::SecurityType Messaging::FIX::Tags::SecurityType 167
FIX::Tags::SecurityUpdateAction Messaging::FIX::Tags::SecurityUpdateAction 980
FIX::Tags::SettlCurrency Messaging::FIX::Tags::SettlCurrency 120
FIX::Tags::SettlDate Messaging::FIX::Tags::SettlDate 64
FIX::Tags::SettlPriceType Messaging::FIX::Tags::SettlPriceType 731
FIX::Tags::SettlType Messaging::FIX::Tags::SettlType 63
FIX::Tags::SettlementLocale Messaging::FIX::Tags::SettlementLocale 37734
FIX::Tags::Side Messaging::FIX::Tags::Side 54
FIX::Tags::StrikeCurrency Messaging::FIX::Tags::StrikeCurrency 947
FIX::Tags::StrikePrice Messaging::FIX::Tags::StrikePrice 202
FIX::Tags::SubFraction Messaging::FIX::Tags::SubFraction 37703
FIX::Tags::Symbol Messaging::FIX::Tags::Symbol 55
FIX::Tags::Text Messaging::FIX::Tags::Text 58
FIX::Tags::TickRule Messaging::FIX::Tags::TickRule 6350
FIX::Tags::TotNumReports Messaging::FIX::Tags::TotNumReports 911
FIX::Tags::TradeDate Messaging::FIX::Tags::TradeDate 75
FIX::Tags::TradeableSize Messaging::FIX::Tags::TradeableSize 37719
FIX::Tags::TradingReferenceDate Messaging::FIX::Tags::TradingReferenceDate 5796
FIX::Tags::TradingReferencePrice Messaging::FIX::Tags::TradingReferencePrice 1150
FIX::Tags::TransactTime Messaging::FIX::Tags::TransactTime 60
FIX::Tags::UnderlyingProduct Messaging::FIX::Tags::UnderlyingProduct 462
FIX::Tags::UnderlyingSecurityID Messaging::FIX::Tags::UnderlyingSecurityId 309
FIX::Tags::UnderlyingSecurityIDSource Messaging::FIX::Tags::UnderlyingSecurityIdSource 305
FIX::Tags::UnderlyingSymbol Messaging::FIX::Tags::UnderlyingSymbol 311
FIX::Tags::UnitOfMeasure Messaging::FIX::Tags::UnitOfMeasure 996
FIX::Tags::UnitOfMeasureQty Messaging::FIX::Tags::UnitOfMeasureQty 1147
FIX::Tags::UserDefinedInstrument Messaging::FIX::Tags::UserDefinedInstrument 9779

Non-Mechanical Changes

These changes are not just a namespace prefix and deserve source review.

Field Conversion

Field::cast<T>() still exists for throwing conversions. The old generic non-throwing tryCast(...) style was replaced by named non-throwing methods.

Old use New method
convert to StrRef toStringRef(value)
convert to Char toChar(value)
convert to integer or decimal toNumber(value)
convert to timestamp toTimestamp(value)
convert to maturity month-year toMaturityMonthYear(value)
convert to enum toEnumeration<EnumType>(value)
convert to bitset toBitSet(value)

Before:

using namespace OnixS::CME::MDH;
using namespace OnixS::CME::MDH::FIX;
Int32 size;
if (entry[Tags::MDEntrySize].tryCast(size))
{
// use size
}

After:

Msg::Int32 size;
if (entry[FIX::Tags::EntrySize].toNumber(size))
{
// use size
}

Enum conversion also names the enum type explicitly:

Msg::SecurityUpdateAction::Enum action;
if (message.field(FIX::Tags::SecurityUpdateAction)
.toEnumeration<Msg::SecurityUpdateAction>(action))
{
// use action
}

String References

StrRef moved to Messaging::StrRef. In C++17 builds, Messaging::StrRef is an alias for std::basic_string_view<Messaging::Char>. In older language modes, it remains a lightweight string-reference class with a string-view-like API.

The old StrRef::items() member is compatibility-only. Use data() or begin().

Before:

StrRef ref = security.symbol();
std::string value(ref.items(), ref.size());
stream.write(ref.items(), ref.size());

After:

Messaging::StrRef ref = security.symbol();
std::string value(ref.data(), ref.size());
stream.write(ref.data(), ref.size());
std::basic_string_view< Char > StrRef
Definition StrRef.h:46

Listener Signatures

Most public listener callback argument aliases remain in OnixS::CME::MDH, but their wrapped message types moved into Messaging.

Old pattern New pattern
BinaryMessage message = args.message(); Messaging::SbeMessage message = args.message();
FIX::MultiContainerArgs MultiContainerArgs
FIX::MultiContainer Messaging::FIX::MultiContainer
SnapshotFullRefresh69Args SnapshotFullRefreshLongQty69Args
primitive aliases in callback signatures, such as UInt32 or Char Messaging::UInt32, Messaging::Char

Before:

void onRecovery(Handler&, const Security&, const SnapshotFullRefresh69Args&) override;
void onMessage(Handler&, const FIX::MultiContainerArgs& args) override
{
const auto definition = args.message();
}
const Message & message() const noexcept
Instance of message being processed.
Attributes associated with security.
Definition Security.h:31
OnixS::CME::MDH::MultiContainerArgs MultiContainerArgs
SnapshotFullRefreshLongQty69Args SnapshotFullRefresh69Args

After:

void onRecovery(Handler&, const Security&, const SnapshotFullRefreshLongQty69Args&) override;
void onMessage(Handler&, const MultiContainerArgs& args) override
{
const auto definition = args.message();
}
MessageArgs< Messaging::SnapshotFullRefreshLongQty69 > SnapshotFullRefreshLongQty69Args
MessageArgs template instantiation for SnapshotFullRefreshLongQty69 message type.
MessageArgs< Messaging::FIX::MultiContainer > MultiContainerArgs
MessageArgs template instantiation for a FIX multi-container.

SecurityListener Signatures

SecurityListener remains in OnixS::CME::MDH. Its callback argument aliases also remain in OnixS::CME::MDH, but those aliases now wrap Messaging::* message types. This matters most for exact override signatures and for code that names the message or entry type returned from an argument object.

Common SecurityListener aliases to check include:

  • MultiContainerArgs
  • SecurityStatus30Args
  • TradeSummary48Args and TradeSummary65Args
  • Recovery52EntryArgs, Recovery69EntryArgs, and MboRecovery53EntryArgs
  • SnapshotFullRefresh52Args, SnapshotFullRefreshLongQty69Args, and SnapshotFullRefreshOrderBook53Args
  • MbpBook46AtomicUpdateArgs, MbpBook64AtomicUpdateArgs, and the MBO book atomic update aliases

Before:

struct Listener : SecurityListener
{
void onRecovery(Handler&, const Security&, const SnapshotFullRefresh69Args&) override;
void onGap(Handler&, const Security&, UInt32) override;
};
Callbacks invoked by Handler to expose market data entities.

After:

struct Listener : SecurityListener
{
void onRecovery(Handler&, const Security&, const SnapshotFullRefreshLongQty69Args&) override;
void onGap(Handler&, const Security&, Messaging::UInt32) override;
};
std::uint32_t UInt32
uInt32.
Definition Integral.h:35

If an implementation inspects the wrapped message, qualify that message with Messaging:::

void onTrade(Handler&, const Security&, const TradeSummary48Args& args) override
{
const auto message = args.message();
const auto entry = args.entry();
}
const Message & message() const noexcept
Instance of message containing market data entry.
const Entry & entry() const noexcept
Instance of market data being referenced.
TradeSummaryArgs< Messaging::IncrementalRefreshTradeSummary48 > TradeSummary48Args

Accessor Helpers

FIX accessor helpers moved out of the old FIX namespace and now accept Messaging::FIX::MultiContainer.

Before:

FIX::MultiContainer definition = args.message();
SecurityId id = FIX::securityId(definition);
StrRef group = FIX::securityGroup(definition);
Timestamp lastUpdate = FIX::timestamp(definition, FIX::Tags::LastUpdateTime);
Messaging::Int32 SecurityId
Unique security identifier.
Definition Domain.h:31

After:

SecurityId id = securityId(definition);
Messaging::StrRef group = securityGroup(definition);
The time point without the time-zone information.
Definition Time.h:455
SecurityId securityId(const Messaging::FIX::MultiContainer &message)
Definition Accessors.h:43
Messaging::Timestamp timestamp(const Messaging::FIX::MultiContainer &, Messaging::FIX::Tag)
Retrieves last update time field value.
Messaging::StrRef securityGroup(const Messaging::FIX::MultiContainer &message)
Definition Accessors.h:59

SBE Messages in Packets

BinaryMessage was replaced by Messaging::SbeMessage. BinaryMessageIterator and BinaryMessages still exist in OnixS::CME::MDH, but dereferencing the iterator now returns Messaging::SbeMessage.

for (Messaging::SbeMessage message : packet.messages())
{
// inspect message
}
Messaging::Timestamp sendingTime = packet.sendingTime();
Messaging::Timestamp receiveTime = netPacket.receiveTime();

SBE Group Types

The old SBE group helper names from BinaryMessage.h are deprecated compatibility aliases. Use the Sbe* names under Messaging when manually inspecting SBE repeating groups:

Old group helper New group helper
BinaryGroupEntry<Length> Messaging::SbeGroupEntry<Length>
BinaryGroupEntries<EntryType, Length, NumInGroup, EncodedLength> Messaging::SbeGroupEntries<EntryType, Length, NumInGroup, EncodedLength>
BinaryGroup<EntryType, DimensionType, LengthType> Messaging::SbeGroup<EntryType, DimensionType, LengthType>
BinaryGroups<Length> Messaging::SbeGroupList<Length>

End-to-End Example

Before:

#include <OnixS/CME/MDH.h>
using namespace OnixS::CME::MDH;
class Listener : public MarketDataListener
{
void onMessage(Handler&, const IncrementalRefreshBook46Args& args) override
{
const auto message = args.message();
const auto indicator = message.matchEventIndicator();
const auto text = toStr(indicator);
}
};
void inspect(const FIX::Message& message)
{
using namespace OnixS::CME::MDH::FIX;
const Group entries = message.group(Tags::NoMDEntries);
if (entries)
{
const auto entry = entries[0];
Int32 size;
if (entry[Tags::MDEntrySize].tryCast(size))
{
std::cout << size << std::endl;
}
}
}
std::int32_t Int32
int32.
Definition Integral.h:34
MessageArgs< Messaging::IncrementalRefreshBook46 > IncrementalRefreshBook46Args
MessageArgs template instantiation for IncrementalRefreshBook46 message type.
void toStr(std::string &, BookState::Enum)
Serializes book state value into a string.
MatchEventIndicator matchEventIndicator() const noexcept
Definition Messages.h:15288

After:

#include <OnixS/CME/MDH.h>
using namespace OnixS::CME::MDH;
class Listener : public MarketDataListener
{
void onMessage(Handler&, const IncrementalRefreshBook46Args& args) override
{
const auto message = args.message();
const auto indicator = message.matchEventIndicator();
const auto text = Msg::toStr(indicator);
}
};
void inspect(const FIX::Message& message)
{
const auto entries = message.group(FIX::Tags::Entries);
if (entries)
{
const auto entry = entries[0];
Msg::Int32 size;
if (entry[FIX::Tags::EntrySize].toNumber(size))
{
std::cout << size << std::endl;
}
}
}

Common Hard-Cutover Errors

Most projects should see warnings before errors. Hard errors for the messaging API usually appear only when ONIXS_CMEMDH_MESSAGING_NO_DEPRECATED is defined, when old headers are removed from include paths, or when code touches an API that was actually renamed or removed. Deprecated non-messaging API members are excluded separately by ONIXS_CMEMDH_NO_DEPRECATED, for example in handler, settings, replay, and logging headers.

Error Fix
old header deprecation warning Replace the include using the header table.
‘'Timestamp’ was not declared in this scope \ilinebr </td> <td class="markdownTableBodyNone"> Use Messaging::Timestamp or a namespace alias such as Msg::Timestamp. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> 'FIX' is not a namespace-name \ilinebr </td> <td class="markdownTableBodyNone"> Use namespace FIX = OnixS::CME::MDH::Messaging::FIX;. \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> class StrRef has no member named items \ilinebr </td> <td class="markdownTableBodyNone"> Use ref.data() or ref.begin(). \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> marked override, but does not override \ilinebr </td> <td class="markdownTableBodyNone"> Check listener aliases and primitive types in the signature. \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> tryCast is not a member of Messaging::FIX::Field \ilinebr </td> <td class="markdownTableBodyNone"> Use the named non-throwing conversion methods. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> Tags::MDEntryPx or Tags::NoMDEntries` is not found Use the normalized tag names from the tag table.

Most business logic should remain unchanged after these API updates are complete.