00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FIX_MESSAGECRACKER_H
00023 #define FIX_MESSAGECRACKER_H
00024
00025 #include "fix40/MessageCracker.h"
00026 #include "fix41/MessageCracker.h"
00027 #include "fix42/MessageCracker.h"
00028 #include "fix43/MessageCracker.h"
00029 #include "fix44/MessageCracker.h"
00030 #include "Values.h"
00031
00032 namespace FIX
00033 {
00037 class MessageCracker
00038 : public FIX40::MessageCracker,
00039 public FIX41::MessageCracker,
00040 public FIX42::MessageCracker,
00041 public FIX43::MessageCracker,
00042 public FIX44::MessageCracker
00043 {
00044 public:
00045 void crack( const Message& message,
00046 const SessionID& sessionID )
00047 {
00048 FIX::BeginString beginString;
00049 message.getHeader().getField( beginString );
00050 if ( beginString == BeginString_FIX40 )
00051 {
00052 ( ( FIX40::MessageCracker& ) ( *this ) )
00053 .crack( ( const FIX40::Message& ) message, sessionID );
00054 }
00055 else if ( beginString == BeginString_FIX41 )
00056 {
00057 ( ( FIX41::MessageCracker& ) ( *this ) )
00058 .crack( ( const FIX41::Message& ) message, sessionID );
00059 }
00060 else if ( beginString == BeginString_FIX42 )
00061 {
00062 ( ( FIX42::MessageCracker& ) ( *this ) )
00063 .crack( ( const FIX42::Message& ) message, sessionID );
00064 }
00065 else if ( beginString == BeginString_FIX43 )
00066 {
00067 ( ( FIX43::MessageCracker& ) ( *this ) )
00068 .crack( ( const FIX43::Message& ) message, sessionID );
00069 }
00070 else if ( beginString == BeginString_FIX44 )
00071 {
00072 ( ( FIX44::MessageCracker& ) ( *this ) )
00073 .crack( ( const FIX44::Message& ) message, sessionID );
00074 }
00075 }
00076
00077 void crack( Message& message,
00078 const SessionID& sessionID )
00079 {
00080 FIX::BeginString beginString;
00081 message.getHeader().getField( beginString );
00082 if ( beginString == BeginString_FIX40 )
00083 {
00084 ( ( FIX40::MessageCracker& ) ( *this ) )
00085 .crack( ( FIX40::Message& ) message, sessionID );
00086 }
00087 else if ( beginString == BeginString_FIX41 )
00088 {
00089 ( ( FIX41::MessageCracker& ) ( *this ) )
00090 .crack( ( FIX41::Message& ) message, sessionID );
00091 }
00092 else if ( beginString == BeginString_FIX42 )
00093 {
00094 ( ( FIX42::MessageCracker& ) ( *this ) )
00095 .crack( ( FIX42::Message& ) message, sessionID );
00096 }
00097 else if ( beginString == BeginString_FIX43 )
00098 {
00099 ( ( FIX43::MessageCracker& ) ( *this ) )
00100 .crack( ( FIX43::Message& ) message, sessionID );
00101 }
00102 else if ( beginString == BeginString_FIX44 )
00103 {
00104 ( ( FIX44::MessageCracker& ) ( *this ) )
00105 .crack( ( FIX44::Message& ) message, sessionID );
00106 }
00107 }
00108 };
00109 }
00110
00111 #endif //FIX_MESSAGECRACKER_H