Public Member Functions | Private Attributes | List of all members
FIX::Parser Class Reference

Parses FIX messages off an input stream. More...

#include <Parser.h>

Public Member Functions

 Parser ()
 
 ~Parser ()
 
bool extractLength (int &length, std::string::size_type &pos, const std::string &buffer) throw ( MessageParseError )
 
bool readFixMessage (std::string &str) throw ( MessageParseError )
 
void addToStream (const char *str, size_t len)
 
void addToStream (const std::string &str)
 

Private Attributes

std::string m_buffer
 

Detailed Description

Parses FIX messages off an input stream.

Definition at line 51 of file Parser.h.

Constructor & Destructor Documentation

◆ Parser()

FIX::Parser::Parser ( )
inline

Definition at line 70 of file Parser.h.

◆ ~Parser()

FIX::Parser::~Parser ( )
inline

Definition at line 71 of file Parser.h.

Member Function Documentation

◆ addToStream() [1/2]

void FIX::Parser::addToStream ( const char *  str,
size_t  len 
)
inline

Definition at line 79 of file Parser.h.

◆ addToStream() [2/2]

void FIX::Parser::addToStream ( const std::string &  str)
inline

Definition at line 81 of file Parser.h.

◆ extractLength()

bool FIX::Parser::extractLength ( int &  length,
std::string::size_type &  pos,
const std::string &  buffer 
)
throw (MessageParseError
)

Definition at line 48 of file Parser.cpp.

48  {
49  length = IntConvertor::convert( strLength );
50  if( length < 0 ) throw MessageParseError();
51  }
52  catch( FieldConvertError& )
53  { throw MessageParseError(); }
54 
55  pos = endPos + 1;
56  return true;
57 }
58 
59 bool Parser::readFixMessage( std::string& str )
60 throw( MessageParseError )
61 {
62  std::string::size_type pos = 0;
63 
64  if( m_buffer.length() < 2 ) return false;
65  pos = m_buffer.find( "8=" );
66  if( pos == std::string::npos ) return false;
67  m_buffer.erase( 0, pos );
68 
69  int length = 0;
70 
71  try
72  {

References FIX::IntConvertor::convert().

◆ readFixMessage()

bool FIX::Parser::readFixMessage ( std::string &  str)
throw (MessageParseError
)

Definition at line 74 of file Parser.cpp.

74  {
75  pos += length;
76  if( m_buffer.size() < pos )
77  return false;
78 
79  pos = m_buffer.find( "\00110=", pos-1 );
80  if( pos == std::string::npos ) return false;
81  pos += 4;
82  pos = m_buffer.find( "\001", pos );
83  if( pos == std::string::npos ) return false;
84  pos += 1;
85 
86  str.assign( m_buffer, 0, pos );
87  m_buffer.erase( 0, pos );
88  return true;
89  }
90  }
91  catch( MessageParseError& e )
92  {
93  if( length > 0 )
94  m_buffer.erase( 0, pos + length );
95  else
96  m_buffer.erase();
97 
98  throw e;
99  }
100 
101  return false;
102 }
103 }

Member Data Documentation

◆ m_buffer

std::string FIX::Parser::m_buffer
private

Definition at line 85 of file Parser.h.


The documentation for this class was generated from the following files:
FIX::IntConvertor::convert
static std::string convert(signed_int value)
Definition: FieldConvertors.h:168
FIX::Parser::m_buffer
std::string m_buffer
Definition: Parser.h:85
FIX::Parser::readFixMessage
bool readFixMessage(std::string &str)
Definition: Parser.cpp:74

Generated on Wed Apr 29 2020 19:41:30 for QuickFIX by doxygen 1.8.16 written by Dimitri van Heesch, © 1997-2001