1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>QuickFIX: /home/omiller/Development/autobuild/quickfix/src/C++/Application.h Source File</title>
<link href="quickfix.css" rel="stylesheet" type="text/css">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td>
<img src="images/QuickFIX.jpg" align="middle" border=0>
<a href="index.html">Index</a>
<a href="files.html">Source Files</a>
<a href="annotated.html">Annotated Class List</a>
<a href="classes.html">Alphabetical Class List</a>
<a href="hierarchy.html">Class Hierarchy</a>
<a href="inherits.html">Graphical Class Hierarchy</a>
</td>
</tr>
</table>
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.6.1 -->
<div class="navpath"><a class="el" href="dir_a9003438d6daff57482a26b22b6121a1.html">src</a> » <a class="el" href="dir_348ef16cf184025134029522e7f02883.html">C++</a>
</div>
<div class="contents">
<h1>Application.h</h1><a href="_application_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* -*- C++ -*- */</span>
<a name="l00002"></a>00002
<a name="l00003"></a>00003 <span class="comment">/****************************************************************************</span>
<a name="l00004"></a>00004 <span class="comment">** Copyright (c) quickfixengine.org All rights reserved.</span>
<a name="l00005"></a>00005 <span class="comment">**</span>
<a name="l00006"></a>00006 <span class="comment">** This file is part of the QuickFIX FIX Engine</span>
<a name="l00007"></a>00007 <span class="comment">**</span>
<a name="l00008"></a>00008 <span class="comment">** This file may be distributed under the terms of the quickfixengine.org</span>
<a name="l00009"></a>00009 <span class="comment">** license as defined by quickfixengine.org and appearing in the file</span>
<a name="l00010"></a>00010 <span class="comment">** LICENSE included in the packaging of this file.</span>
<a name="l00011"></a>00011 <span class="comment">**</span>
<a name="l00012"></a>00012 <span class="comment">** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE</span>
<a name="l00013"></a>00013 <span class="comment">** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</span>
<a name="l00014"></a>00014 <span class="comment">**</span>
<a name="l00015"></a>00015 <span class="comment">** See http://www.quickfixengine.org/LICENSE for licensing information.</span>
<a name="l00016"></a>00016 <span class="comment">**</span>
<a name="l00017"></a>00017 <span class="comment">** Contact ask@quickfixengine.org if any conditions of this licensing are</span>
<a name="l00018"></a>00018 <span class="comment">** not clear to you.</span>
<a name="l00019"></a>00019 <span class="comment">**</span>
<a name="l00020"></a>00020 <span class="comment">****************************************************************************/</span>
<a name="l00021"></a>00021
<a name="l00022"></a>00022 <span class="preprocessor">#ifndef FIX_APPLICATION_H</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#define FIX_APPLICATION_H</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span>
<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="_message_8h.html">Message.h</a>"</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="_session_i_d_8h.html">SessionID.h</a>"</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="_mutex_8h.html">Mutex.h</a>"</span>
<a name="l00028"></a>00028
<a name="l00029"></a>00029 <span class="keyword">namespace </span>FIX
<a name="l00030"></a>00030 {
<a name="l00043"></a><a class="code" href="class_f_i_x_1_1_application.html">00043</a> <span class="keyword">class </span><a class="code" href="class_f_i_x_1_1_application.html" title="This interface must be implemented to define what your FIX application does.">Application</a>
<a name="l00044"></a>00044 {
<a name="l00045"></a>00045 <span class="keyword">public</span>:
<a name="l00046"></a><a class="code" href="class_f_i_x_1_1_application.html#af24f206ee346f6ca63c443a06be697e9">00046</a> <span class="keyword">virtual</span> <a class="code" href="class_f_i_x_1_1_application.html#af24f206ee346f6ca63c443a06be697e9">~Application</a>() {};
<a name="l00048"></a>00048 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a3a5ac4cc9cb178336abcc6e2c6dfa59b" title="Notification of a session begin created.">onCreate</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& ) = 0;
<a name="l00050"></a>00050 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#ad565d69adb18f02a2effdb3ca4d1d8fa" title="Notification of a session successfully logging on.">onLogon</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& ) = 0;
<a name="l00052"></a>00052 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a8e17c6f9f4692d34812d1084292105ee" title="Notification of a session logging off or disconnecting.">onLogout</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& ) = 0;
<a name="l00054"></a>00054 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a608013bd0443b2f5309913d459f0b44e" title="Notification of admin message being sent to target.">toAdmin</a>( <a class="code" href="class_f_i_x_1_1_message.html" title="Base class for all FIX messages.">Message</a>&, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& ) = 0;
<a name="l00056"></a>00056 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a95f1534c957d2985a18a24637a583f4b" title="Notification of app message being sent to target.">toApp</a>( <a class="code" href="class_f_i_x_1_1_message.html" title="Base class for all FIX messages.">Message</a>&, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& )
<a name="l00057"></a>00057 throw( <a class="code" href="struct_f_i_x_1_1_do_not_send.html" title="Indicates user does not want to send a message.">DoNotSend</a> ) = 0;
<a name="l00059"></a>00059 virtual <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a47506b8e6673d4a6e408b7dd8be39038" title="Notification of admin message being received from target.">fromAdmin</a>( const <a class="code" href="class_f_i_x_1_1_message.html" title="Base class for all FIX messages.">Message</a>&, const <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& )
<a name="l00060"></a>00060 throw( <a class="code" href="struct_f_i_x_1_1_field_not_found.html" title="Field not found inside a message.">FieldNotFound</a>, <a class="code" href="struct_f_i_x_1_1_incorrect_data_format.html" title="Field has a badly formatted value.">IncorrectDataFormat</a>, <a class="code" href="struct_f_i_x_1_1_incorrect_tag_value.html" title="Field has a value that is out of range.">IncorrectTagValue</a>, <a class="code" href="struct_f_i_x_1_1_reject_logon.html" title="User wants to reject permission to logon.">RejectLogon</a> ) = 0;
<a name="l00062"></a>00062 virtual <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a35a4e75eeb0908d56c87be5f8ec7dfd9" title="Notification of app message being received from target.">fromApp</a>( const Message&, const <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& )
<a name="l00063"></a>00063 throw( FieldNotFound, IncorrectDataFormat, IncorrectTagValue, <a class="code" href="struct_f_i_x_1_1_unsupported_message_type.html" title="Message type not supported by application.">UnsupportedMessageType</a> ) = 0;
<a name="l00064"></a>00064 };
<a name="l00065"></a>00065
<a name="l00076"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html">00076</a> class <a class="code" href="class_f_i_x_1_1_synchronized_application.html" title="This is a special implementation of the Application interface that takes in another...">SynchronizedApplication</a> : public <a class="code" href="class_f_i_x_1_1_application.html" title="This interface must be implemented to define what your FIX application does.">Application</a>
<a name="l00077"></a>00077 {
<a name="l00078"></a>00078 <span class="keyword">public</span>:
<a name="l00079"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#ad63cd18cc212c2974837e2b6d83d2e3b">00079</a> <a class="code" href="class_f_i_x_1_1_synchronized_application.html#ad63cd18cc212c2974837e2b6d83d2e3b">SynchronizedApplication</a>( Application& app ) : m_app( app ) {}
<a name="l00080"></a>00080
<a name="l00081"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#adec06f35ae27f210af4102182d10bbbf">00081</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a3a5ac4cc9cb178336abcc6e2c6dfa59b" title="Notification of a session begin created.">onCreate</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& sessionID )
<a name="l00082"></a>00082 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( m_mutex ); app().onCreate( sessionID ); }
<a name="l00083"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#a2c823d9106430f3876bd3979e1b3e0bd">00083</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#ad565d69adb18f02a2effdb3ca4d1d8fa" title="Notification of a session successfully logging on.">onLogon</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& sessionID )
<a name="l00084"></a>00084 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( m_mutex ); app().onLogon( sessionID ); }
<a name="l00085"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#a23b9f92e9f2104878062694230dc4846">00085</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a8e17c6f9f4692d34812d1084292105ee" title="Notification of a session logging off or disconnecting.">onLogout</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& sessionID )
<a name="l00086"></a>00086 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( m_mutex ); app().onLogout( sessionID ); }
<a name="l00087"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#a68ca874a193f3fba95c77a4b42f70491">00087</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a608013bd0443b2f5309913d459f0b44e" title="Notification of admin message being sent to target.">toAdmin</a>( Message& message, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& sessionID )
<a name="l00088"></a>00088 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( m_mutex ); app().toAdmin( message, sessionID ); }
<a name="l00089"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#a4ea435dfff6bb6c6e1f0926c55742a4e">00089</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a95f1534c957d2985a18a24637a583f4b" title="Notification of app message being sent to target.">toApp</a>( Message& message, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& sessionID )
<a name="l00090"></a>00090 <span class="keywordflow">throw</span>( DoNotSend )
<a name="l00091"></a>00091 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( m_mutex ); app().toApp( message, sessionID ); }
<a name="l00092"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#a5113801ffd82e36dc43adb10289e2af7">00092</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a47506b8e6673d4a6e408b7dd8be39038" title="Notification of admin message being received from target.">fromAdmin</a>( <span class="keyword">const</span> Message& message, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& sessionID )
<a name="l00093"></a>00093 <span class="keywordflow">throw</span>( FieldNotFound, IncorrectDataFormat, IncorrectTagValue, RejectLogon )
<a name="l00094"></a>00094 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( m_mutex ); app().fromAdmin( message, sessionID ); }
<a name="l00095"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#ae859a94b9eb24d2ba54edb133c8664ca">00095</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a35a4e75eeb0908d56c87be5f8ec7dfd9" title="Notification of app message being received from target.">fromApp</a>( <span class="keyword">const</span> Message& message, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& sessionID )
<a name="l00096"></a>00096 <span class="keywordflow">throw</span>( FieldNotFound, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType )
<a name="l00097"></a>00097 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( m_mutex ); app().fromApp( message, sessionID ); }
<a name="l00098"></a>00098
<a name="l00099"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#a8407d683f16a7623860946ff3a38f6d1">00099</a> <a class="code" href="class_f_i_x_1_1_mutex.html" title="Portable implementation of a mutex.">Mutex</a> m_mutex;
<a name="l00100"></a>00100
<a name="l00101"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#aa6a502b977403b787b31e646349a8e39">00101</a> Application& <a class="code" href="class_f_i_x_1_1_synchronized_application.html#aa6a502b977403b787b31e646349a8e39">app</a>() { <span class="keywordflow">return</span> m_app; }
<a name="l00102"></a><a class="code" href="class_f_i_x_1_1_synchronized_application.html#a01ec0e825ba12e4f14ed2e26fb35715f">00102</a> Application& m_app;
<a name="l00103"></a>00103 };
<a name="l00104"></a>00104
<a name="l00111"></a><a class="code" href="class_f_i_x_1_1_null_application.html">00111</a> <span class="keyword">class </span><a class="code" href="class_f_i_x_1_1_null_application.html" title="An empty implementation of an Application.">NullApplication</a> : <span class="keyword">public</span> Application
<a name="l00112"></a>00112 {
<a name="l00113"></a><a class="code" href="class_f_i_x_1_1_null_application.html#a0720fa867fd217978cd2caa546ecabfc">00113</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_null_application.html#a0720fa867fd217978cd2caa546ecabfc" title="Notification of a session begin created.">onCreate</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& ) {}
<a name="l00114"></a><a class="code" href="class_f_i_x_1_1_null_application.html#ad34cd9d21f6fd3ad2999a0128cb5ef9e">00114</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_null_application.html#ad34cd9d21f6fd3ad2999a0128cb5ef9e" title="Notification of a session successfully logging on.">onLogon</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& ) {}
<a name="l00115"></a><a class="code" href="class_f_i_x_1_1_null_application.html#a23c886aae7ad3911f3f73474163f6e35">00115</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_null_application.html#a23c886aae7ad3911f3f73474163f6e35" title="Notification of a session logging off or disconnecting.">onLogout</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& ) {}
<a name="l00116"></a><a class="code" href="class_f_i_x_1_1_null_application.html#a697aa8783ced1360d54e73da7bf6f6de">00116</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_null_application.html#a697aa8783ced1360d54e73da7bf6f6de" title="Notification of admin message being sent to target.">toAdmin</a>( Message&, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& ) {}
<a name="l00117"></a><a class="code" href="class_f_i_x_1_1_null_application.html#a522f42dbb1615df7226c7d15094b4043">00117</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a95f1534c957d2985a18a24637a583f4b" title="Notification of app message being sent to target.">toApp</a>( Message&, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& )
<a name="l00118"></a>00118 throw( DoNotSend ) {}
<a name="l00119"></a><a class="code" href="class_f_i_x_1_1_null_application.html#a44bc0e49ef318e5a5de1b1bbb5b90a82">00119</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a47506b8e6673d4a6e408b7dd8be39038" title="Notification of admin message being received from target.">fromAdmin</a>( <span class="keyword">const</span> Message&, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& )
<a name="l00120"></a>00120 throw( FieldNotFound, IncorrectDataFormat, IncorrectTagValue, RejectLogon ) {}
<a name="l00121"></a><a class="code" href="class_f_i_x_1_1_null_application.html#a0b2f438a5d1f034e454b19b0619a611b">00121</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_application.html#a35a4e75eeb0908d56c87be5f8ec7dfd9" title="Notification of app message being received from target.">fromApp</a>( <span class="keyword">const</span> Message&, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_session_i_d.html" title="Unique session id consists of BeginString, SenderCompID and TargetCompID.">SessionID</a>& )
<a name="l00122"></a>00122 throw( FieldNotFound, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType ) {}
<a name="l00123"></a>00123 };
<a name="l00125"></a>00125 }
<a name="l00126"></a>00126
<a name="l00127"></a>00127 <span class="preprocessor">#endif //FIX_APPLICATION_H</span>
</pre></div></div>
<hr><address><small>
Generated on Mon Apr 5 20:59:50 2010 for QuickFIX by <a href="http://www.doxygen.org/index.html">
<img src="doxygen.gif" alt="doxygen" align="middle" border=0 width=110 height=53>
</a> 1.6.1 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
© 1997-2001</small></address>
</body>
</html>
|