MessageCracker.h
Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 
00003 /****************************************************************************
00004 ** Copyright (c) 2001-2014
00005 **
00006 ** This file is part of the QuickFIX FIX Engine
00007 **
00008 ** This file may be distributed under the terms of the quickfixengine.org
00009 ** license as defined by quickfixengine.org and appearing in the file
00010 ** LICENSE included in the packaging of this file.
00011 **
00012 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00013 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00014 **
00015 ** See http://www.quickfixengine.org/LICENSE for licensing information.
00016 **
00017 ** Contact ask@quickfixengine.org if any conditions of this licensing are
00018 ** not clear to you.
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 "fix50/MessageCracker.h"
00031 #include "fix50sp1/MessageCracker.h"
00032 #include "fix50sp2/MessageCracker.h"
00033 #include "fixt11/MessageCracker.h"
00034 #include "Values.h"
00035 #include "Session.h"
00036 
00037 namespace FIX
00038 {
00042 class MessageCracker
00043       : 
00044       public FIX40::MessageCracker,
00045       public FIX41::MessageCracker,
00046       public FIX42::MessageCracker,
00047       public FIX43::MessageCracker,
00048       public FIX44::MessageCracker,
00049       public FIX50::MessageCracker,
00050       public FIX50SP1::MessageCracker,
00051       public FIX50SP2::MessageCracker,
00052       public FIXT11::MessageCracker
00053 {
00054 public:
00055   void crack( const Message& message,
00056               const SessionID& sessionID )
00057   {
00058     const FIX::BeginString& beginString = 
00059       FIELD_GET_REF( message.getHeader(), BeginString );
00060 
00061     crack( message, sessionID, beginString );
00062   }
00063 
00064   void crack( const Message& message,
00065               const SessionID& sessionID,
00066               const BeginString& beginString )
00067   {
00068     if ( beginString == BeginString_FIX40 )
00069       ((FIX40::MessageCracker&)(*this)).crack((const FIX40::Message&) message, sessionID);
00070     else if ( beginString == BeginString_FIX41 )
00071       ((FIX41::MessageCracker&)(*this)).crack((const FIX41::Message&) message, sessionID);
00072     else if ( beginString == BeginString_FIX42 )
00073       ((FIX42::MessageCracker&)(*this)).crack((const FIX42::Message&) message, sessionID);
00074     else if ( beginString == BeginString_FIX43 )
00075       ((FIX43::MessageCracker&)(*this)).crack((const FIX43::Message&) message, sessionID);
00076     else if ( beginString == BeginString_FIX44 )
00077       ((FIX44::MessageCracker&)(*this)).crack((const FIX44::Message&) message, sessionID);
00078     else if ( beginString == BeginString_FIXT11 )
00079     {
00080       if( message.isAdmin() )
00081       {
00082         ((FIXT11::MessageCracker&)(*this)).crack((const FIXT11::Message&) message, sessionID);
00083       }
00084       else
00085       {
00086         ApplVerID applVerID;
00087         if(!message.getHeader().getFieldIfSet(applVerID))
00088         {
00089           Session* pSession = Session::lookupSession( sessionID );
00090           applVerID = pSession->getSenderDefaultApplVerID();
00091         }
00092 
00093         crack( message, sessionID, applVerID );
00094       }
00095     }
00096   }
00097 
00098   void crack( const Message& message,
00099               const SessionID& sessionID,
00100               const ApplVerID& applVerID )
00101   {
00102     if ( applVerID == ApplVerID_FIX40 )
00103       ((FIX40::MessageCracker&)(*this)).crack((const FIX40::Message&) message, sessionID);
00104     if ( applVerID == ApplVerID_FIX41 )
00105       ((FIX41::MessageCracker&)(*this)).crack((const FIX41::Message&) message, sessionID);
00106     if ( applVerID == ApplVerID_FIX42 )
00107       ((FIX42::MessageCracker&)(*this)).crack((const FIX42::Message&) message, sessionID);
00108     if ( applVerID == ApplVerID_FIX43 )
00109       ((FIX43::MessageCracker&)(*this)).crack((const FIX43::Message&) message, sessionID);
00110     if ( applVerID == ApplVerID_FIX44 )
00111       ((FIX44::MessageCracker&)(*this)).crack((const FIX44::Message&) message, sessionID);
00112     if ( applVerID == ApplVerID_FIX50 )
00113       ((FIX50::MessageCracker&)(*this)).crack((const FIX50::Message&) message, sessionID);
00114     if ( applVerID == ApplVerID_FIX50SP1 )
00115       ((FIX50SP1::MessageCracker&)(*this)).crack((const FIX50SP1::Message&) message, sessionID);
00116     if ( applVerID == ApplVerID_FIX50SP2 )
00117       ((FIX50SP2::MessageCracker&)(*this)).crack((const FIX50SP2::Message&) message, sessionID);
00118   }
00119 
00120   void crack( Message& message,
00121               const SessionID& sessionID )
00122   {
00123     const FIX::BeginString& beginString = 
00124       FIELD_GET_REF( message.getHeader(), BeginString );
00125 
00126     crack( message, sessionID, beginString );
00127   }
00128 
00129   void crack( Message& message,
00130               const SessionID& sessionID,
00131               const BeginString& beginString )
00132   {
00133     if ( beginString == BeginString_FIX40 )
00134       ((FIX40::MessageCracker&)(*this)).crack((FIX40::Message&) message, sessionID);
00135     else if ( beginString == BeginString_FIX41 )
00136       ((FIX41::MessageCracker&)(*this)).crack((FIX41::Message&) message, sessionID);
00137     else if ( beginString == BeginString_FIX42 )
00138       ((FIX42::MessageCracker&)(*this)).crack((FIX42::Message&) message, sessionID);
00139     else if ( beginString == BeginString_FIX43 )
00140       ((FIX43::MessageCracker&)(*this)).crack((FIX43::Message&) message, sessionID);
00141     else if ( beginString == BeginString_FIX44 )
00142       ((FIX44::MessageCracker&)(*this)).crack((FIX44::Message&) message, sessionID);
00143     else if ( beginString == BeginString_FIXT11 )
00144     {
00145       if( message.isAdmin() )
00146       {
00147         ((FIXT11::MessageCracker&)(*this)).crack((FIXT11::Message&) message, sessionID);
00148       }
00149       else
00150       {
00151         ApplVerID applVerID;
00152         if(!message.getHeader().getFieldIfSet(applVerID))
00153         {
00154           Session* pSession = Session::lookupSession( sessionID );
00155           applVerID = pSession->getSenderDefaultApplVerID();
00156         }
00157 
00158         crack( message, sessionID, applVerID );
00159       }
00160     }
00161   }
00162 
00163   void crack( Message& message,
00164               const SessionID& sessionID,
00165               const ApplVerID& applVerID )
00166   {
00167     if ( applVerID == ApplVerID_FIX40 )
00168       ((FIX40::MessageCracker&)(*this)).crack((FIX40::Message&) message, sessionID);
00169     if ( applVerID == ApplVerID_FIX41 )
00170       ((FIX41::MessageCracker&)(*this)).crack((FIX41::Message&) message, sessionID);
00171     if ( applVerID == ApplVerID_FIX42 )
00172       ((FIX42::MessageCracker&)(*this)).crack((FIX42::Message&) message, sessionID);
00173     if ( applVerID == ApplVerID_FIX43 )
00174       ((FIX43::MessageCracker&)(*this)).crack((FIX43::Message&) message, sessionID);
00175     if ( applVerID == ApplVerID_FIX44 )
00176       ((FIX44::MessageCracker&)(*this)).crack((FIX44::Message&) message, sessionID);
00177     if ( applVerID == ApplVerID_FIX50 )
00178       ((FIX50::MessageCracker&)(*this)).crack((FIX50::Message&) message, sessionID);
00179     if ( applVerID == ApplVerID_FIX50SP1 )
00180       ((FIX50SP1::MessageCracker&)(*this)).crack((FIX50SP1::Message&) message, sessionID);
00181     if ( applVerID == ApplVerID_FIX50SP2 )
00182       ((FIX50SP2::MessageCracker&)(*this)).crack((FIX50SP2::Message&) message, sessionID);
00183   }
00184 
00185 };
00186 }
00187 
00188 #endif //FIX_MESSAGECRACKER_H

Generated on Mon Jun 23 2014 23:49:38 for QuickFIX by doxygen 1.7.6.1 written by Dimitri van Heesch, © 1997-2001