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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
|
<!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++/SessionState.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>SessionState.h</h1><a href="_session_state_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_SESSIONSTATE_H</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#define FIX_SESSIONSTATE_H</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span>
<a name="l00025"></a>00025 <span class="preprocessor">#ifdef _MSC_VER</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4503 4355 4786 4290 )</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span>
<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="_field_types_8h.html">FieldTypes.h</a>"</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="_message_store_8h.html">MessageStore.h</a>"</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="_log_8h.html">Log.h</a>"</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="_mutex_8h.html">Mutex.h</a>"</span>
<a name="l00033"></a>00033
<a name="l00034"></a>00034 <span class="keyword">namespace </span>FIX
<a name="l00035"></a>00035 {
<a name="l00037"></a><a class="code" href="class_f_i_x_1_1_session_state.html">00037</a> <span class="keyword">class </span><a class="code" href="class_f_i_x_1_1_session_state.html" title="Maintains all of state for the Session class.">SessionState</a> : <span class="keyword">public</span> <a class="code" href="class_f_i_x_1_1_message_store.html" title="This interface must be implemented to store and retrieve messages and sequence numbers...">MessageStore</a>, <span class="keyword">public</span> <a class="code" href="class_f_i_x_1_1_log.html" title="This interface must be implemented to log messages and events.">Log</a>
<a name="l00038"></a>00038 {
<a name="l00039"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a63a971f1e7a8eecd625a737aff64b93b">00039</a> <span class="keyword">typedef</span> std::map < int, Message > <a class="code" href="class_f_i_x_1_1_session_state.html#a63a971f1e7a8eecd625a737aff64b93b">Messages</a>;
<a name="l00040"></a>00040
<a name="l00041"></a>00041 <span class="keyword">public</span>:
<a name="l00042"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a4cd50ab7d4e8b1f7910fba4e244e6879">00042</a> <a class="code" href="class_f_i_x_1_1_session_state.html#a4cd50ab7d4e8b1f7910fba4e244e6879">SessionState</a>()
<a name="l00043"></a>00043 : <a class="code" href="class_f_i_x_1_1_session_state.html#a161eaaa6a7057f5e9b4d6ba80e7e970b">m_enabled</a>( true ), <a class="code" href="class_f_i_x_1_1_session_state.html#ab04873d30398ce7b1ad069d46433a370">m_receivedLogon</a>( false ),
<a name="l00044"></a>00044 <a class="code" href="class_f_i_x_1_1_session_state.html#a8b64dad1cf8ee959de399843224b56dc">m_sentLogout</a>( false ), <a class="code" href="class_f_i_x_1_1_session_state.html#a50b5ac8a869e59d5431f529afa76eb5c">m_sentLogon</a>( false ),
<a name="l00045"></a>00045 <a class="code" href="class_f_i_x_1_1_session_state.html#aa364a219ffce9b9b94a0e286c514ea20">m_sentReset</a>( false ), <a class="code" href="class_f_i_x_1_1_session_state.html#aeddcda9ec8711482dc48a0adb900e596">m_receivedReset</a>( false ),
<a name="l00046"></a>00046 <a class="code" href="class_f_i_x_1_1_session_state.html#a3dff5f09cf7c2cdf9622526f20a31de7">m_initiate</a>( false ), <a class="code" href="class_f_i_x_1_1_session_state.html#a8c4fe0dc7ebf1660598c001d36aa8d7f">m_logonTimeout</a>( 10 ),
<a name="l00047"></a>00047 <a class="code" href="class_f_i_x_1_1_session_state.html#adaef041c4399964e57d657cadd82f16b">m_logoutTimeout</a>( 2 ), <a class="code" href="class_f_i_x_1_1_session_state.html#aeaa383887a30e78c75bbc1172e152b08">m_testRequest</a>( 0 ),
<a name="l00048"></a>00048 <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>( 0 ), <a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a>( 0 ) {}
<a name="l00049"></a>00049
<a name="l00050"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ae781ba7184e6f2d7e6355a17c2e6f350">00050</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ae781ba7184e6f2d7e6355a17c2e6f350">enabled</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a161eaaa6a7057f5e9b4d6ba80e7e970b">m_enabled</a>; }
<a name="l00051"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a7cffce7578d302f5d1183481bbe79796">00051</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a7cffce7578d302f5d1183481bbe79796">enabled</a>( <span class="keywordtype">bool</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#a161eaaa6a7057f5e9b4d6ba80e7e970b">m_enabled</a> = value; }
<a name="l00052"></a>00052
<a name="l00053"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a048416ada3e1ac493955831f2d70a45a">00053</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a048416ada3e1ac493955831f2d70a45a">receivedLogon</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab04873d30398ce7b1ad069d46433a370">m_receivedLogon</a>; }
<a name="l00054"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a23132fc08e0a494b015e1098b3b1f8bf">00054</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a23132fc08e0a494b015e1098b3b1f8bf">receivedLogon</a>( <span class="keywordtype">bool</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#ab04873d30398ce7b1ad069d46433a370">m_receivedLogon</a> = value; }
<a name="l00055"></a>00055
<a name="l00056"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ab1e065f9ce84a2d69b00bd9035918ec4">00056</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab1e065f9ce84a2d69b00bd9035918ec4">sentLogout</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a8b64dad1cf8ee959de399843224b56dc">m_sentLogout</a>; }
<a name="l00057"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a41d6590413f82997c141133a6daeedd8">00057</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a41d6590413f82997c141133a6daeedd8">sentLogout</a>( <span class="keywordtype">bool</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#a8b64dad1cf8ee959de399843224b56dc">m_sentLogout</a> = value; }
<a name="l00058"></a>00058
<a name="l00059"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a2b13ebb232c2fb5fe7656cb78f18e6f3">00059</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a2b13ebb232c2fb5fe7656cb78f18e6f3">sentLogon</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a50b5ac8a869e59d5431f529afa76eb5c">m_sentLogon</a>; }
<a name="l00060"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a3489ccbf3fa68331d02cfa570ee10e28">00060</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a3489ccbf3fa68331d02cfa570ee10e28">sentLogon</a>( <span class="keywordtype">bool</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#a50b5ac8a869e59d5431f529afa76eb5c">m_sentLogon</a> = value; }
<a name="l00061"></a>00061
<a name="l00062"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ab1dd3d7d25fd2b1a912473dabf67628e">00062</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab1dd3d7d25fd2b1a912473dabf67628e">receivedReset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#aeddcda9ec8711482dc48a0adb900e596">m_receivedReset</a>; }
<a name="l00063"></a><a class="code" href="class_f_i_x_1_1_session_state.html#adc6b07a042aeb729eaaa0089bcd0feca">00063</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#adc6b07a042aeb729eaaa0089bcd0feca">receivedReset</a>( <span class="keywordtype">bool</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#aeddcda9ec8711482dc48a0adb900e596">m_receivedReset</a> = value; }
<a name="l00064"></a>00064
<a name="l00065"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a7c851bb2fae7771b0e4cc56995231c58">00065</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a7c851bb2fae7771b0e4cc56995231c58">sentReset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#aa364a219ffce9b9b94a0e286c514ea20">m_sentReset</a>; }
<a name="l00066"></a><a class="code" href="class_f_i_x_1_1_session_state.html#afec6137972ec6978a92f73479e59dc42">00066</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#afec6137972ec6978a92f73479e59dc42">sentReset</a>( <span class="keywordtype">bool</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#aa364a219ffce9b9b94a0e286c514ea20">m_sentReset</a> = value; }
<a name="l00067"></a>00067
<a name="l00068"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a5c42c1e3153b91ce815a28aec34638a4">00068</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a5c42c1e3153b91ce815a28aec34638a4">initiate</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a3dff5f09cf7c2cdf9622526f20a31de7">m_initiate</a>; }
<a name="l00069"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a422609425a0ec913446e765f66867eea">00069</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a422609425a0ec913446e765f66867eea">initiate</a>( <span class="keywordtype">bool</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#a3dff5f09cf7c2cdf9622526f20a31de7">m_initiate</a> = value; }
<a name="l00070"></a>00070
<a name="l00071"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a0603b118f7092c8dcdda4f0d52912ef0">00071</a> <span class="keywordtype">int</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a0603b118f7092c8dcdda4f0d52912ef0">logonTimeout</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a8c4fe0dc7ebf1660598c001d36aa8d7f">m_logonTimeout</a>; }
<a name="l00072"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a98994123788271ebe5ed55d53be6ebb5">00072</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a98994123788271ebe5ed55d53be6ebb5">logonTimeout</a>( <span class="keywordtype">int</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#a8c4fe0dc7ebf1660598c001d36aa8d7f">m_logonTimeout</a> = value; }
<a name="l00073"></a>00073
<a name="l00074"></a><a class="code" href="class_f_i_x_1_1_session_state.html#abc7a6915222549ad4ef2bf874e4cfb81">00074</a> <span class="keywordtype">int</span> <a class="code" href="class_f_i_x_1_1_session_state.html#abc7a6915222549ad4ef2bf874e4cfb81">logoutTimeout</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#adaef041c4399964e57d657cadd82f16b">m_logoutTimeout</a>; }
<a name="l00075"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ac6c5c78884d9fc0ca04e19542413ae2d">00075</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ac6c5c78884d9fc0ca04e19542413ae2d">logoutTimeout</a>( <span class="keywordtype">int</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#adaef041c4399964e57d657cadd82f16b">m_logoutTimeout</a> = value; }
<a name="l00076"></a>00076
<a name="l00077"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a3feb270abf3bc086f76686b2c2994475">00077</a> <span class="keywordtype">int</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a3feb270abf3bc086f76686b2c2994475">testRequest</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#aeaa383887a30e78c75bbc1172e152b08">m_testRequest</a>; }
<a name="l00078"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ab6f59f790d82f5916cd1b3b39b47824b">00078</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab6f59f790d82f5916cd1b3b39b47824b">testRequest</a>( <span class="keywordtype">int</span> value ) { <a class="code" href="class_f_i_x_1_1_session_state.html#aeaa383887a30e78c75bbc1172e152b08">m_testRequest</a> = value; }
<a name="l00079"></a>00079
<a name="l00080"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a3eac932463e7711b7a1c77f154a1a30d">00080</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a3eac932463e7711b7a1c77f154a1a30d">resendRequested</a>()<span class="keyword"> const</span>
<a name="l00081"></a>00081 <span class="keyword"> </span>{ <span class="keywordflow">return</span> !(<a class="code" href="class_f_i_x_1_1_session_state.html#a50fe1bdf7fa202c1e5bccf73041ae688">m_resendRange</a>.first == 0 && <a class="code" href="class_f_i_x_1_1_session_state.html#a50fe1bdf7fa202c1e5bccf73041ae688">m_resendRange</a>.second == 0); }
<a name="l00082"></a>00082
<a name="l00083"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a4d3c77197cead4f5199463a96991c987">00083</a> <span class="keyword">typedef</span> std::pair<int, int> <a class="code" href="class_f_i_x_1_1_session_state.html#a4d3c77197cead4f5199463a96991c987">ResendRange</a>;
<a name="l00084"></a>00084
<a name="l00085"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ad1a55a94e55063ec400828de20457958">00085</a> <a class="code" href="class_f_i_x_1_1_session_state.html#a4d3c77197cead4f5199463a96991c987">ResendRange</a> <a class="code" href="class_f_i_x_1_1_session_state.html#ad1a55a94e55063ec400828de20457958">resendRange</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a50fe1bdf7fa202c1e5bccf73041ae688">m_resendRange</a>; }
<a name="l00086"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a7362336ca5759553bfd928f939ea4476">00086</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ad1a55a94e55063ec400828de20457958">resendRange</a> (<span class="keywordtype">int</span> begin, <span class="keywordtype">int</span> end)
<a name="l00087"></a>00087 { <a class="code" href="class_f_i_x_1_1_session_state.html#a50fe1bdf7fa202c1e5bccf73041ae688">m_resendRange</a> = std::make_pair( begin, end ); }
<a name="l00088"></a>00088
<a name="l00089"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ad917237f95770eacda4d80e11c18f5a8">00089</a> <a class="code" href="class_f_i_x_1_1_message_store.html" title="This interface must be implemented to store and retrieve messages and sequence numbers...">MessageStore</a>* <a class="code" href="class_f_i_x_1_1_session_state.html#ad917237f95770eacda4d80e11c18f5a8">store</a>() { <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>; }
<a name="l00090"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a97e46daf7d75776b2299ee452b529265">00090</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a97e46daf7d75776b2299ee452b529265">store</a>( <a class="code" href="class_f_i_x_1_1_message_store.html" title="This interface must be implemented to store and retrieve messages and sequence numbers...">MessageStore</a>* pValue ) { <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a> = pValue; }
<a name="l00091"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a07dbf22f8c36cea4b4c3be9ea77a63b4">00091</a> <a class="code" href="class_f_i_x_1_1_log.html" title="This interface must be implemented to log messages and events.">Log</a>* <a class="code" href="class_f_i_x_1_1_session_state.html#a07dbf22f8c36cea4b4c3be9ea77a63b4">log</a>() { <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a>; }
<a name="l00092"></a><a class="code" href="class_f_i_x_1_1_session_state.html#afb7daf593015b7323d653cbb473eb903">00092</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#afb7daf593015b7323d653cbb473eb903">log</a>( <a class="code" href="class_f_i_x_1_1_log.html" title="This interface must be implemented to log messages and events.">Log</a>* pValue ) { <a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a> = pValue; }
<a name="l00093"></a>00093
<a name="l00094"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ae2c1d7d2d123814f63c40fa3a468ccce">00094</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>( <span class="keyword">const</span> <a class="code" href="namespace_f_i_x_1_1_f_i_e_l_d.html#afe12d099b976430da7c02db0b32b397c">HeartBtInt</a>& value )
<a name="l00095"></a>00095 { <a class="code" href="class_f_i_x_1_1_session_state.html#ac51c22c0159e42c568e76f91bc226ac8">m_heartBtInt</a> = value; }
<a name="l00096"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">00096</a> <a class="code" href="namespace_f_i_x_1_1_f_i_e_l_d.html#afe12d099b976430da7c02db0b32b397c">HeartBtInt</a>& <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>()
<a name="l00097"></a>00097 { <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ac51c22c0159e42c568e76f91bc226ac8">m_heartBtInt</a>; }
<a name="l00098"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a8d4e36555875470057554b0975e9c1e2">00098</a> <span class="keyword">const</span> <a class="code" href="namespace_f_i_x_1_1_f_i_e_l_d.html#afe12d099b976430da7c02db0b32b397c">HeartBtInt</a>& <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>()<span class="keyword"> const</span>
<a name="l00099"></a>00099 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ac51c22c0159e42c568e76f91bc226ac8">m_heartBtInt</a>; }
<a name="l00100"></a>00100
<a name="l00101"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a1db9e7662704af6f1664ca37de373aa9">00101</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a2328abb8753ffe562b6fb02f2a55c207">lastSentTime</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a>& value )
<a name="l00102"></a>00102 { <a class="code" href="class_f_i_x_1_1_session_state.html#a77e5150263ea248ed0375f603a6fe2c7">m_lastSentTime</a> = value; }
<a name="l00103"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a2328abb8753ffe562b6fb02f2a55c207">00103</a> <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a>& <a class="code" href="class_f_i_x_1_1_session_state.html#a2328abb8753ffe562b6fb02f2a55c207">lastSentTime</a>()
<a name="l00104"></a>00104 { <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a77e5150263ea248ed0375f603a6fe2c7">m_lastSentTime</a>; }
<a name="l00105"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a92c15e6809e706073de8396835a50eb3">00105</a> <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a>& <a class="code" href="class_f_i_x_1_1_session_state.html#a2328abb8753ffe562b6fb02f2a55c207">lastSentTime</a>()<span class="keyword"> const</span>
<a name="l00106"></a>00106 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a77e5150263ea248ed0375f603a6fe2c7">m_lastSentTime</a>; }
<a name="l00107"></a>00107
<a name="l00108"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a8ae4097e8ef26fbe6b053743dbbf837b">00108</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a3a843044f10dff2163e9e3b41ea2b523">lastReceivedTime</a>( <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a>& value )
<a name="l00109"></a>00109 { <a class="code" href="class_f_i_x_1_1_session_state.html#a08d9a5e74f99ce1d68cce0f45fdb6f1c">m_lastReceivedTime</a> = value; }
<a name="l00110"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a3a843044f10dff2163e9e3b41ea2b523">00110</a> <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a>& <a class="code" href="class_f_i_x_1_1_session_state.html#a3a843044f10dff2163e9e3b41ea2b523">lastReceivedTime</a>()
<a name="l00111"></a>00111 { <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a08d9a5e74f99ce1d68cce0f45fdb6f1c">m_lastReceivedTime</a>; }
<a name="l00112"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a824f0362d89ac91d04b90b8982a203b4">00112</a> <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a>& <a class="code" href="class_f_i_x_1_1_session_state.html#a3a843044f10dff2163e9e3b41ea2b523">lastReceivedTime</a>()<span class="keyword"> const</span>
<a name="l00113"></a>00113 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a08d9a5e74f99ce1d68cce0f45fdb6f1c">m_lastReceivedTime</a>; }
<a name="l00114"></a>00114
<a name="l00115"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a1e0ca21ac5c9bc0529d733711b905f43">00115</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a1e0ca21ac5c9bc0529d733711b905f43">shouldSendLogon</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a5c42c1e3153b91ce815a28aec34638a4">initiate</a>() && !<a class="code" href="class_f_i_x_1_1_session_state.html#a2b13ebb232c2fb5fe7656cb78f18e6f3">sentLogon</a>(); }
<a name="l00116"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ac32a0fab7dadd7102027652851d70b8c">00116</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ac32a0fab7dadd7102027652851d70b8c">alreadySentLogon</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a5c42c1e3153b91ce815a28aec34638a4">initiate</a>() && <a class="code" href="class_f_i_x_1_1_session_state.html#a2b13ebb232c2fb5fe7656cb78f18e6f3">sentLogon</a>(); }
<a name="l00117"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a26bcfbd0a2d47a582f6a0984fe486daa">00117</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a26bcfbd0a2d47a582f6a0984fe486daa">logonTimedOut</a>()<span class="keyword"> const</span>
<a name="l00118"></a>00118 <span class="keyword"> </span>{
<a name="l00119"></a>00119 <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a> now;
<a name="l00120"></a>00120 <span class="keywordflow">return</span> now - <a class="code" href="class_f_i_x_1_1_session_state.html#a3a843044f10dff2163e9e3b41ea2b523">lastReceivedTime</a>() >= <a class="code" href="class_f_i_x_1_1_session_state.html#a0603b118f7092c8dcdda4f0d52912ef0">logonTimeout</a>();
<a name="l00121"></a>00121 }
<a name="l00122"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ae95cb94c028b372339b9ebfeb9b5d81a">00122</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ae95cb94c028b372339b9ebfeb9b5d81a">logoutTimedOut</a>()<span class="keyword"> const</span>
<a name="l00123"></a>00123 <span class="keyword"> </span>{
<a name="l00124"></a>00124 <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a> now;
<a name="l00125"></a>00125 <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab1e065f9ce84a2d69b00bd9035918ec4">sentLogout</a>() && ( ( now - <a class="code" href="class_f_i_x_1_1_session_state.html#a2328abb8753ffe562b6fb02f2a55c207">lastSentTime</a>() ) >= <a class="code" href="class_f_i_x_1_1_session_state.html#abc7a6915222549ad4ef2bf874e4cfb81">logoutTimeout</a>() );
<a name="l00126"></a>00126 }
<a name="l00127"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ac04ac5db42f3d354a44216fb533295ae">00127</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ac04ac5db42f3d354a44216fb533295ae">withinHeartBeat</a>()<span class="keyword"> const</span>
<a name="l00128"></a>00128 <span class="keyword"> </span>{
<a name="l00129"></a>00129 <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a> now;
<a name="l00130"></a>00130 <span class="keywordflow">return</span> ( ( now - <a class="code" href="class_f_i_x_1_1_session_state.html#a2328abb8753ffe562b6fb02f2a55c207">lastSentTime</a>() ) < <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>() ) &&
<a name="l00131"></a>00131 ( ( now - <a class="code" href="class_f_i_x_1_1_session_state.html#a3a843044f10dff2163e9e3b41ea2b523">lastReceivedTime</a>() ) < <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>() );
<a name="l00132"></a>00132 }
<a name="l00133"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ab06c020c52ed9d644e05309599064feb">00133</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab06c020c52ed9d644e05309599064feb">timedOut</a>()<span class="keyword"> const</span>
<a name="l00134"></a>00134 <span class="keyword"> </span>{
<a name="l00135"></a>00135 <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a> now;
<a name="l00136"></a>00136 <span class="keywordflow">return</span> ( now - <a class="code" href="class_f_i_x_1_1_session_state.html#a3a843044f10dff2163e9e3b41ea2b523">lastReceivedTime</a>() ) >= ( 2.4 * ( double ) <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>() );
<a name="l00137"></a>00137 }
<a name="l00138"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a29266dca18a9d879613de751895baca3">00138</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a29266dca18a9d879613de751895baca3">needHeartbeat</a>()<span class="keyword"> const</span>
<a name="l00139"></a>00139 <span class="keyword"> </span>{
<a name="l00140"></a>00140 <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a> now;
<a name="l00141"></a>00141 <span class="keywordflow">return</span> ( ( now - <a class="code" href="class_f_i_x_1_1_session_state.html#a2328abb8753ffe562b6fb02f2a55c207">lastSentTime</a>() ) >= <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>() ) && !<a class="code" href="class_f_i_x_1_1_session_state.html#a3feb270abf3bc086f76686b2c2994475">testRequest</a>();
<a name="l00142"></a>00142 }
<a name="l00143"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a0fdc93ffb2bc0a7bef963783ab84640f">00143</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a0fdc93ffb2bc0a7bef963783ab84640f">needTestRequest</a>()<span class="keyword"> const</span>
<a name="l00144"></a>00144 <span class="keyword"> </span>{
<a name="l00145"></a>00145 <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a> now;
<a name="l00146"></a>00146 <span class="keywordflow">return</span> ( now - <a class="code" href="class_f_i_x_1_1_session_state.html#a3a843044f10dff2163e9e3b41ea2b523">lastReceivedTime</a>() ) >=
<a name="l00147"></a>00147 ( ( 1.2 * ( ( double ) <a class="code" href="class_f_i_x_1_1_session_state.html#a3feb270abf3bc086f76686b2c2994475">testRequest</a>() + 1 ) ) * ( double ) <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>() );
<a name="l00148"></a>00148 }
<a name="l00149"></a>00149
<a name="l00150"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ae178c2fc5a34932e1a583a758ab06143">00150</a> std::string <a class="code" href="class_f_i_x_1_1_session_state.html#ae178c2fc5a34932e1a583a758ab06143">logoutReason</a>()<span class="keyword"> const </span>
<a name="l00151"></a>00151 <span class="keyword"> </span>{ <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a84ecb17a97e0bc0fe408c0be20c968c9">m_logoutReason</a>; }
<a name="l00152"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a3eb2bf784c50b365380590d984c8b2cb">00152</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ae178c2fc5a34932e1a583a758ab06143">logoutReason</a>( <span class="keyword">const</span> std::string& value )
<a name="l00153"></a>00153 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#a84ecb17a97e0bc0fe408c0be20c968c9">m_logoutReason</a> = value; }
<a name="l00154"></a>00154
<a name="l00155"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ad7e2a487e68682865a3a328400ae90c5">00155</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ad7e2a487e68682865a3a328400ae90c5">queue</a>( <span class="keywordtype">int</span> msgSeqNum, <span class="keyword">const</span> <a class="code" href="class_f_i_x_1_1_message.html" title="Base class for all FIX messages.">Message</a>& message )
<a name="l00156"></a>00156 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#a20cc1ff3f63bb646b93dfd1d7036419a">m_queue</a>[ msgSeqNum ] = message; }
<a name="l00157"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a84ce74a7d1a403f20a9dcc226b7f9271">00157</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a84ce74a7d1a403f20a9dcc226b7f9271">retrieve</a>( <span class="keywordtype">int</span> msgSeqNum, <a class="code" href="class_f_i_x_1_1_message.html" title="Base class for all FIX messages.">Message</a>& message )
<a name="l00158"></a>00158 {
<a name="l00159"></a>00159 <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> );
<a name="l00160"></a>00160 Messages::iterator i = <a class="code" href="class_f_i_x_1_1_session_state.html#a20cc1ff3f63bb646b93dfd1d7036419a">m_queue</a>.find( msgSeqNum );
<a name="l00161"></a>00161 <span class="keywordflow">if</span> ( i != <a class="code" href="class_f_i_x_1_1_session_state.html#a20cc1ff3f63bb646b93dfd1d7036419a">m_queue</a>.end() )
<a name="l00162"></a>00162 {
<a name="l00163"></a>00163 message = i->second;
<a name="l00164"></a>00164 <a class="code" href="class_f_i_x_1_1_session_state.html#a20cc1ff3f63bb646b93dfd1d7036419a">m_queue</a>.erase( i );
<a name="l00165"></a>00165 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00166"></a>00166 }
<a name="l00167"></a>00167 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00168"></a>00168 }
<a name="l00169"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a8f5e09f315cd731ad5d0d3bb00691761">00169</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a8f5e09f315cd731ad5d0d3bb00691761">clearQueue</a>()
<a name="l00170"></a>00170 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#a20cc1ff3f63bb646b93dfd1d7036419a">m_queue</a>.clear(); }
<a name="l00171"></a>00171
<a name="l00172"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ad16d5dcf9867d0f0c5111250c6d05e10">00172</a> <span class="keywordtype">bool</span> <span class="keyword">set</span>( <span class="keywordtype">int</span> s, <span class="keyword">const</span> std::string& m ) <span class="keywordflow">throw</span> ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00173"></a>00173 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#a3fd435703adaa8997d4946e7516e0665">set</a>( s, m ); }
<a name="l00174"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a6b263278521a694fb1f219a1f48d6216">00174</a> <span class="keywordtype">void</span> <span class="keyword">get</span>( <span class="keywordtype">int</span> b, <span class="keywordtype">int</span> e, std::vector < std::string > &m ) <span class="keyword">const</span>
<a name="l00175"></a>00175 <span class="keywordflow">throw</span> ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00176"></a>00176 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#ac18d0ffb6c64cba0ea1e7159fffb5cd2">get</a>( b, e, m ); }
<a name="l00177"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ab5651bf8d420890a64b3a4a573423cf1">00177</a> <span class="keywordtype">int</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab5651bf8d420890a64b3a4a573423cf1">getNextSenderMsgSeqNum</a>() <span class="keyword">const</span> throw ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00178"></a>00178 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#a4cc9364008a563de2ff8468b2999352d">getNextSenderMsgSeqNum</a>(); }
<a name="l00179"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a85532007092b6f5a217194484afe76e7">00179</a> <span class="keywordtype">int</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a85532007092b6f5a217194484afe76e7">getNextTargetMsgSeqNum</a>() <span class="keyword">const</span> throw ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00180"></a>00180 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#a88504d3706a2223794993906b7e0b1f6">getNextTargetMsgSeqNum</a>(); }
<a name="l00181"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a56a749f78196a7cf0d834bf57648b842">00181</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a56a749f78196a7cf0d834bf57648b842">setNextSenderMsgSeqNum</a>( <span class="keywordtype">int</span> n ) <span class="keywordflow">throw</span> ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00182"></a>00182 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#ae88d1a811c2247a9d71ea1ab5a631056">setNextSenderMsgSeqNum</a>( n ); }
<a name="l00183"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a4254b3c5de5a7e22d2f365978a6a0537">00183</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a4254b3c5de5a7e22d2f365978a6a0537">setNextTargetMsgSeqNum</a>( <span class="keywordtype">int</span> n ) <span class="keywordflow">throw</span> ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00184"></a>00184 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#a583e90d01e138a8362e91e97fa09080b">setNextTargetMsgSeqNum</a>( n ); }
<a name="l00185"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a763f3675bb1fa26ba877e862000043a6">00185</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a763f3675bb1fa26ba877e862000043a6">incrNextSenderMsgSeqNum</a>() throw ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00186"></a>00186 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#a5a560114935dc4feaaad3292eaa76b99">incrNextSenderMsgSeqNum</a>(); }
<a name="l00187"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ab3da832df88991170d19ce1b9d305566">00187</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab3da832df88991170d19ce1b9d305566">incrNextTargetMsgSeqNum</a>() throw ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00188"></a>00188 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#a7469f5e33e0a8bc0cb7f6e04d268ad13">incrNextTargetMsgSeqNum</a>(); }
<a name="l00189"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a9cd2bab8e77ae38a10a8f693a1355352">00189</a> <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a> <a class="code" href="class_f_i_x_1_1_session_state.html#a9cd2bab8e77ae38a10a8f693a1355352">getCreationTime</a>() <span class="keyword">const</span> throw ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00190"></a>00190 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <span class="keywordflow">return</span> <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#aacf71bb307dbcba2bac7199158a95b92">getCreationTime</a>(); }
<a name="l00191"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ab541a81a6898eaff5bf4442eedd3ccfd">00191</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab541a81a6898eaff5bf4442eedd3ccfd">reset</a>() throw ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00192"></a>00192 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#abdf94e753cf7cbb70c6867fa92df96a1">reset</a>(); }
<a name="l00193"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a8e09ce4202e74a43d9c9836286ebe3dc">00193</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a8e09ce4202e74a43d9c9836286ebe3dc">refresh</a>() throw ( <a class="code" href="struct_f_i_x_1_1_i_o_exception.html" title="IO Error.">IOException</a> )
<a name="l00194"></a>00194 { <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>-><a class="code" href="class_f_i_x_1_1_message_store.html#aefb8ae58052f21b8c2fc50b14d14609d">refresh</a>(); }
<a name="l00195"></a>00195
<a name="l00196"></a><a class="code" href="class_f_i_x_1_1_session_state.html#aa4407981535ba92b5c6818fe17706a41">00196</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#aa4407981535ba92b5c6818fe17706a41">clear</a>()
<a name="l00197"></a>00197 { <span class="keywordflow">if</span> ( !<a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a> ) return ; <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a>-><a class="code" href="class_f_i_x_1_1_log.html#aa0600c26c5555bc443d3a0728fa85960">clear</a>(); }
<a name="l00198"></a><a class="code" href="class_f_i_x_1_1_session_state.html#af02c937dc63ba6c286eb9df29223445b">00198</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#af02c937dc63ba6c286eb9df29223445b">backup</a>()
<a name="l00199"></a>00199 { <span class="keywordflow">if</span> ( !<a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a> ) return ; <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a>-><a class="code" href="class_f_i_x_1_1_log.html#a25901fd81e66c00abe99f261277e211e">backup</a>(); }
<a name="l00200"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a415d1a12c0d73d364ee30fee9c24f1df">00200</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a415d1a12c0d73d364ee30fee9c24f1df">onIncoming</a>( <span class="keyword">const</span> std::string& <span class="keywordtype">string</span> )
<a name="l00201"></a>00201 { <span class="keywordflow">if</span> ( !<a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a> ) return ; <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a>-><a class="code" href="class_f_i_x_1_1_log.html#a549b58000475f8f4ab21df1f2b43a09c">onIncoming</a>( <span class="keywordtype">string</span> ); }
<a name="l00202"></a><a class="code" href="class_f_i_x_1_1_session_state.html#acd99531f5da5ec47a2f920f3a04a45f3">00202</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#acd99531f5da5ec47a2f920f3a04a45f3">onOutgoing</a>( <span class="keyword">const</span> std::string& <span class="keywordtype">string</span> )
<a name="l00203"></a>00203 { <span class="keywordflow">if</span> ( !<a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a> ) return ; <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a>-><a class="code" href="class_f_i_x_1_1_log.html#a73d414ef6c9b0148ecd08fa27cb4972d">onOutgoing</a>( <span class="keywordtype">string</span> ); }
<a name="l00204"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ae0113046fb54687ed3d42f376a28997f">00204</a> <span class="keywordtype">void</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ae0113046fb54687ed3d42f376a28997f">onEvent</a>( <span class="keyword">const</span> std::string& <span class="keywordtype">string</span> )
<a name="l00205"></a>00205 { <span class="keywordflow">if</span> ( !<a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a> ) return ; <a class="code" href="class_f_i_x_1_1_locker.html" title="Locks/Unlocks a mutex using RAII.">Locker</a> l( <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a> ); <a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a>-><a class="code" href="class_f_i_x_1_1_log.html#ad84410b0d7bb873d308f779f3269d454">onEvent</a>( <span class="keywordtype">string</span> ); }
<a name="l00206"></a>00206
<a name="l00207"></a>00207 <span class="keyword">private</span>:
<a name="l00208"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a161eaaa6a7057f5e9b4d6ba80e7e970b">00208</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a161eaaa6a7057f5e9b4d6ba80e7e970b">m_enabled</a>;
<a name="l00209"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ab04873d30398ce7b1ad069d46433a370">00209</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#ab04873d30398ce7b1ad069d46433a370">m_receivedLogon</a>;
<a name="l00210"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a8b64dad1cf8ee959de399843224b56dc">00210</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a8b64dad1cf8ee959de399843224b56dc">m_sentLogout</a>;
<a name="l00211"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a50b5ac8a869e59d5431f529afa76eb5c">00211</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a50b5ac8a869e59d5431f529afa76eb5c">m_sentLogon</a>;
<a name="l00212"></a><a class="code" href="class_f_i_x_1_1_session_state.html#aa364a219ffce9b9b94a0e286c514ea20">00212</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#aa364a219ffce9b9b94a0e286c514ea20">m_sentReset</a>;
<a name="l00213"></a><a class="code" href="class_f_i_x_1_1_session_state.html#aeddcda9ec8711482dc48a0adb900e596">00213</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#aeddcda9ec8711482dc48a0adb900e596">m_receivedReset</a>;
<a name="l00214"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a3dff5f09cf7c2cdf9622526f20a31de7">00214</a> <span class="keywordtype">bool</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a3dff5f09cf7c2cdf9622526f20a31de7">m_initiate</a>;
<a name="l00215"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a8c4fe0dc7ebf1660598c001d36aa8d7f">00215</a> <span class="keywordtype">int</span> <a class="code" href="class_f_i_x_1_1_session_state.html#a8c4fe0dc7ebf1660598c001d36aa8d7f">m_logonTimeout</a>;
<a name="l00216"></a><a class="code" href="class_f_i_x_1_1_session_state.html#adaef041c4399964e57d657cadd82f16b">00216</a> <span class="keywordtype">int</span> <a class="code" href="class_f_i_x_1_1_session_state.html#adaef041c4399964e57d657cadd82f16b">m_logoutTimeout</a>;
<a name="l00217"></a><a class="code" href="class_f_i_x_1_1_session_state.html#aeaa383887a30e78c75bbc1172e152b08">00217</a> <span class="keywordtype">int</span> <a class="code" href="class_f_i_x_1_1_session_state.html#aeaa383887a30e78c75bbc1172e152b08">m_testRequest</a>;
<a name="l00218"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a50fe1bdf7fa202c1e5bccf73041ae688">00218</a> <a class="code" href="class_f_i_x_1_1_session_state.html#a4d3c77197cead4f5199463a96991c987">ResendRange</a> <a class="code" href="class_f_i_x_1_1_session_state.html#a50fe1bdf7fa202c1e5bccf73041ae688">m_resendRange</a>;
<a name="l00219"></a><a class="code" href="class_f_i_x_1_1_session_state.html#ac51c22c0159e42c568e76f91bc226ac8">00219</a> <a class="code" href="namespace_f_i_x_1_1_f_i_e_l_d.html#afe12d099b976430da7c02db0b32b397c">HeartBtInt</a> <a class="code" href="class_f_i_x_1_1_session_state.html#ac51c22c0159e42c568e76f91bc226ac8">m_heartBtInt</a>;
<a name="l00220"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a77e5150263ea248ed0375f603a6fe2c7">00220</a> <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a> <a class="code" href="class_f_i_x_1_1_session_state.html#a77e5150263ea248ed0375f603a6fe2c7">m_lastSentTime</a>;
<a name="l00221"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a08d9a5e74f99ce1d68cce0f45fdb6f1c">00221</a> <a class="code" href="class_f_i_x_1_1_utc_time_stamp.html" title="Date and Time represented in UTC.">UtcTimeStamp</a> <a class="code" href="class_f_i_x_1_1_session_state.html#a08d9a5e74f99ce1d68cce0f45fdb6f1c">m_lastReceivedTime</a>;
<a name="l00222"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a84ecb17a97e0bc0fe408c0be20c968c9">00222</a> std::string <a class="code" href="class_f_i_x_1_1_session_state.html#a84ecb17a97e0bc0fe408c0be20c968c9">m_logoutReason</a>;
<a name="l00223"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a20cc1ff3f63bb646b93dfd1d7036419a">00223</a> <a class="code" href="class_f_i_x_1_1_session_state.html#a63a971f1e7a8eecd625a737aff64b93b">Messages</a> <a class="code" href="class_f_i_x_1_1_session_state.html#a20cc1ff3f63bb646b93dfd1d7036419a">m_queue</a>;
<a name="l00224"></a><a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">00224</a> <a class="code" href="class_f_i_x_1_1_message_store.html" title="This interface must be implemented to store and retrieve messages and sequence numbers...">MessageStore</a>* <a class="code" href="class_f_i_x_1_1_session_state.html#add0b888d1e0406fc67093e17b6fbc9b1">m_pStore</a>;
<a name="l00225"></a><a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">00225</a> <a class="code" href="class_f_i_x_1_1_log.html" title="This interface must be implemented to log messages and events.">Log</a>* <a class="code" href="class_f_i_x_1_1_session_state.html#a057cd013a5a5cc6e136071017121982b">m_pLog</a>;
<a name="l00226"></a><a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">00226</a> <span class="keyword">mutable</span> <a class="code" href="class_f_i_x_1_1_mutex.html" title="Portable implementation of a mutex.">Mutex</a> <a class="code" href="class_f_i_x_1_1_session_state.html#afcf00e8aec97063970049ddb8c95f1db">m_mutex</a>;
<a name="l00227"></a>00227 };
<a name="l00228"></a>00228 }
<a name="l00229"></a>00229
<a name="l00230"></a>00230 <span class="preprocessor">#endif //FIX_SESSIONSTATE_H</span>
</pre></div></div>
<hr><address><small>
Generated on Mon Apr 5 20:59:51 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>
|