OnixS C++ FIX Engine  4.12.0
API Documentation
Decoder Class Reference

#include <OnixS/FIXEngine/FIX/FAST.h>

Public Member Functions

 Decoder (const std::string &xmlTemplates, const OnixS::FIX::Dictionary &fixDictionary, bool decodeEachMessageIndependently, InputDataTraits::Enum inputDataTraits)
 
 Decoder (const std::string &xmlTemplates, bool decodeEachMessageIndependently, InputDataTraits::Enum inputDataTraits)
 
 Decoder (ProtocolVersion::Enum baseVersionForGeneratedDictionary, const std::string &xmlTemplates, bool decodeEachMessageIndependently, InputDataTraits::Enum inputDataTraits)
 
 Decoder (ProtocolVersion::Enum baseVersionForGeneratedDictionary, const std::string &xmlTemplates, const std::string &genericFixDictionaryId, bool decodeEachMessageIndependently, InputDataTraits::Enum inputDataTraits)
 
 ~Decoder ()
 
InputDataTraits::Enum inputDataTraits () const
 
const OnixS::FIX::Messagedecode (const char *buffer, size_t bufferSize)
 
const OnixS::FIX::Messagedecode (const unsigned char *buffer, size_t bufferSize)
 
const OnixS::FIX::Messagedecode (const std::vector< char > &chunk)
 
const OnixS::FIX::Messagedecode (const OnixS::Sockets::Bytes &chunk)
 
bool tryDecode (const char *buffer, size_t offset, size_t count, OnixS::FIX::Message *message, size_t *numberOfDecodedBytes)
 
bool tryDecode (const unsigned char *buffer, size_t offset, size_t count, OnixS::FIX::Message *message, size_t *numberOfDecodedBytes)
 
void reset ()
 
OnixS::FIX::Dictionary fixDictionary () const
 
void maximumNumberOfRepeatingGroupEntries (int value)
 
int maximumNumberOfRepeatingGroupEntries () const
 

Static Public Member Functions

static bool tryDecodeUnsignedInteger (const char *buffer, size_t bufferSize, unsigned int *value, size_t *fieldLength)
 
static bool tryDecodeUnsignedInteger (const unsigned char *buffer, size_t bufferSize, unsigned int *value, size_t *fieldLength)
 
static void generateFixDictionary (const std::string &fastTemplateXml, const std::string &fixDictionaryId, std::string *fixDictionaryXml)
 
static void generateFixDictionary (ProtocolVersion::Enum baseVersion, const std::string &fastTemplateXml, const std::string &fixDictionaryId, std::string *fixDictionaryXml)
 

Detailed Description

Definition at line 129 of file FAST.h.

Constructor & Destructor Documentation

Decoder ( const std::string &  xmlTemplates,
const OnixS::FIX::Dictionary fixDictionary,
bool  decodeEachMessageIndependently,
InputDataTraits::Enum  inputDataTraits 
)

Creates a FAST to FIX Decoder.

Parameters
xmlTemplatesXML-based FAST templates.
fixDictionaryThe customized FIX dictionary used for the decoded message.
decodeEachMessageIndependentlyThe option to reset the previous values dictionaries before decoding a new FAST stream chunk.
inputDataTraitsTraits of input data, has effect only when decodeEachMessageIndependently is false. See InputDataTraits::Enum for details.
Decoder ( const std::string &  xmlTemplates,
bool  decodeEachMessageIndependently,
InputDataTraits::Enum  inputDataTraits 
)

Creates a FAST to FIX Decoder for the FIX dictionary-independent mode.

The generic FIX dictionary is created by the provided FAST-template content, it uses the FIX 4.0 as a base FIX dictionary and has a generic name.

Parameters
xmlTemplatesXML-based FAST templates.
decodeEachMessageIndependentlyThe option to reset the previous values dictionaries before decoding a new FAST stream chunk.
inputDataTraitsTraits of input data, has effect only when decodeEachMessageIndependently is false. See InputDataTraits::Enum for details.
Decoder ( ProtocolVersion::Enum  baseVersionForGeneratedDictionary,
const std::string &  xmlTemplates,
bool  decodeEachMessageIndependently,
InputDataTraits::Enum  inputDataTraits 
)

Creates a FAST to FIX Decoder for the FIX dictionary-independent mode.

The generic FIX dictionary is created by the provided FAST-template content, it uses the specified FIX dictionary as a base and has a generic name.

Parameters
baseVersionForGeneratedDictionaryThis version of the FIX protocol becomes the base for the newly generated FIX dictionary.
xmlTemplatesXML-based FAST templates used to generate the FIX dictionary. This FIX dictionary takes a generic identifier generated on a base of the XML content and baseVersion
decodeEachMessageIndependentlyThe option to reset the previous values dictionaries before decoding a new FAST stream chunk.
inputDataTraitsTraits of input data, has effect only when decodeEachMessageIndependently is false. See InputDataTraits::Enum for details.
Decoder ( ProtocolVersion::Enum  baseVersionForGeneratedDictionary,
const std::string &  xmlTemplates,
const std::string &  genericFixDictionaryId,
bool  decodeEachMessageIndependently,
InputDataTraits::Enum  inputDataTraits 
)

Creates a FAST to FIX Decoder for the FIX dictionary-independent mode.

The generic FIX dictionary is created by the provided FAST-template content, it uses the specified FIX dictionary as a base and has the specified name.

Note
The new FIX dictionary instance will be generated if and only if there is no a FIX dictionary with the same name.
Parameters
baseVersionForGeneratedDictionaryThis version of the FIX protocol becomes the base for the newly generated FIX dictionary.
xmlTemplatesXML-based FAST templates.
genericFixDictionaryIdThe identifier which is applied to the generic FIX dictionary. This FIX dictionary is generated using xmlTemplates and baseVersion.
decodeEachMessageIndependentlyThe option to reset the previous values dictionaries before decoding a new FAST stream chunk.
inputDataTraitsTraits of input data, has effect only when decodeEachMessageIndependently is false. See InputDataTraits::Enum for details.
~Decoder ( )

The destructor.

Member Function Documentation

const OnixS::FIX::Message& decode ( const char *  buffer,
size_t  bufferSize 
)

Decodes the given FAST stream chunk into the corresponding FIX Message.

Parameters
bufferThe buffer that contains the FAST stream chunk to be decoded.
bufferSizeThe size of the buffer.
Warning
The returned message is 'owned' by the Decoder.
The previously decoded message is freed by the Decoder when this method is called again.
Exceptions
Anexception if the message cannot be decoded.
Returns
the decoded FIX message.
const OnixS::FIX::Message& decode ( const unsigned char *  buffer,
size_t  bufferSize 
)
const OnixS::FIX::Message& decode ( const std::vector< char > &  chunk)

Decodes the given FAST stream chunk into the corresponding FIX Message.

Parameters
chunkThe FAST stream chunk to be decoded.
Warning
The returned message is 'owned' by the Decoder.
The previously decoded message is freed by the Decoder when this method is called again.
Exceptions
Anexception if the message cannot be decoded.
Returns
the decoded FIX message.
const OnixS::FIX::Message& decode ( const OnixS::Sockets::Bytes chunk)
OnixS::FIX::Dictionary fixDictionary ( ) const

The FIX dictionary used by the decoder instance.

Returns
The FIX dictionary currently used by the decoder instance. If the decoder was initialized with the FIX dictionary-independent mode, the method returns a reference to the internally generated FIX dictionary.
static void generateFixDictionary ( const std::string &  fastTemplateXml,
const std::string &  fixDictionaryId,
std::string *  fixDictionaryXml 
)
static

Generates the FIX dictionary XML.

Parameters
[in]fastTemplateXmlThe XML content of FAST template (the same as used to initialize Decoder).
[in]fixDictionaryIdThe output FIX dictionary identifier (see "id" attribute of "FIX" node).
[out]fixDictionaryXmlThe XML with the generated FIX dictionary.
static void generateFixDictionary ( ProtocolVersion::Enum  baseVersion,
const std::string &  fastTemplateXml,
const std::string &  fixDictionaryId,
std::string *  fixDictionaryXml 
)
static

Generates the FIX dictionary XML.

Parameters
[in]fastTemplateXmlThe XML content of the FAST template (the same as used to initialize the Decoder).
[in]baseVersionThis version of the FIX protocol becomes the base for the newly generated FIX dictionary.
[in]fixDictionaryIdThe output FIX dictionary identifier (see "id" attribute of "FIX" node).
[out]fixDictionaryXmlThe XML with the generated FIX dictionary.
InputDataTraits::Enum inputDataTraits ( ) const

Input data traits of the decoder.

Returns
Input data traits provided during the construction of the decoder.
void maximumNumberOfRepeatingGroupEntries ( int  value)

Manages the maximum number of repeating groups, allowed for decoded messages.

This parameter is used during the decoding and is useful to detect a broken data, which, in particular cases, can 'need' to allocate an unexpectedly huge number of entries (for instance - billions of entries, while normally there are just a few ones). This situation results in memory exhausting and (often) significantly decreases the overall system performance.

To prevent the memory exhausting and negative consequences of that, this parameter should be configured with the value, which is greater then the maximum possible number of entries in valid input data, but less then the maximum integer value (default one). In a lot of real cases the value of 10000 is good enough to detect broken data without the memory overloading.

Default is the maximum positive value for int type.

Parameters
valueThe number of repeating groups, allowed for decoded messages.
int maximumNumberOfRepeatingGroupEntries ( ) const

The maximum number of repeating groups, allowed for decoded messages.

Returns
The current number of repeating groups, allowed for decoded messages. The default value is the maximum positive value for int type.
void reset ( )

Resets the state of the previous values dictionaries (sets the state of the previous values to undefined).

See also
decodeEachMessageIndependently.
bool tryDecode ( const char *  buffer,
size_t  offset,
size_t  count,
OnixS::FIX::Message message,
size_t *  numberOfDecodedBytes 
)

Tries to decode the given FAST stream buffer into the corresponding FIX Message.

Parameters
[in]bufferThe FAST stream chunk to be decoded.
[in]offsetThe index in the buffer at which decoding begins.
[in]countThe number of bytes to analyze during the decoding.
[out]messageThe pointer to the decoded FIX Message.
[out]numberOfDecodedBytesThe number of bytes that contained the encoded FIX Message.
Warning
The message should point to an existing object. This object is not owned by the Decoder and should be managed by a user.
Exceptions
Anexception if the decoding error is detected.
Returns
'true' if the given bytes could be decoded into a FIX message, otherwise - 'false'.
bool tryDecode ( const unsigned char *  buffer,
size_t  offset,
size_t  count,
OnixS::FIX::Message message,
size_t *  numberOfDecodedBytes 
)
static bool tryDecodeUnsignedInteger ( const char *  buffer,
size_t  bufferSize,
unsigned int *  value,
size_t *  fieldLength 
)
static

Decodes the FAST-encoded unsigned integer.

Parameters
bufferThe buffer that contains the FAST stream chunk to be decoded.
bufferSizeThe size of the buffer.
valueThe decoded value.
fieldLengthThe number of bytes that contained the encoded value.
Returns
'true' if the stop bit was found and the value was decoded, otherwise - 'false'.
static bool tryDecodeUnsignedInteger ( const unsigned char *  buffer,
size_t  bufferSize,
unsigned int *  value,
size_t *  fieldLength 
)
static

The documentation for this class was generated from the following file: