File: _session_state_8h_source.html

package info (click to toggle)
quickfix 1.13.3%2Bdfsg-9
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 152,548 kB
  • ctags: 679,426
  • sloc: cpp: 639,331; xml: 129,200; python: 108,722; ruby: 85,152; sh: 10,492; ansic: 9,025; java: 1,827; cs: 1,145; makefile: 523; sql: 313; perl: 108
file content (260 lines) | stat: -rw-r--r-- 59,402 bytes parent folder | download
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>
	&nbsp;&nbsp;
	<a href="index.html">Index</a>&nbsp;
	<a href="files.html">Source Files</a>&nbsp;
	<a href="annotated.html">Annotated Class List</a>&nbsp;
	<a href="classes.html">Alphabetical Class List</a>&nbsp;
	<a href="hierarchy.html">Class Hierarchy</a>&nbsp;
	<a href="inherits.html">Graphical Class Hierarchy</a>&nbsp;
   </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>&nbsp;&raquo&nbsp;<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 &quot;<a class="code" href="_field_types_8h.html">FieldTypes.h</a>&quot;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &quot;<a class="code" href="_message_store_8h.html">MessageStore.h</a>&quot;</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &quot;<a class="code" href="_log_8h.html">Log.h</a>&quot;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &quot;<a class="code" href="_mutex_8h.html">Mutex.h</a>&quot;</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 &lt; int, Message &gt; <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 &amp;&amp; <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&lt;int, int&gt; <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>&amp; 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>&amp; <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>&amp; <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>&amp; 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>&amp; <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>&amp; <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>&amp; 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>&amp; <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>&amp; <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>() &amp;&amp; !<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>() &amp;&amp; <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>() &gt;= <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>() &amp;&amp; ( ( now - <a class="code" href="class_f_i_x_1_1_session_state.html#a2328abb8753ffe562b6fb02f2a55c207">lastSentTime</a>() ) &gt;= <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>() ) &lt; <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>() ) &amp;&amp;
<a name="l00131"></a>00131            ( ( now - <a class="code" href="class_f_i_x_1_1_session_state.html#a3a843044f10dff2163e9e3b41ea2b523">lastReceivedTime</a>() ) &lt; <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>() ) &gt;= ( 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>() ) &gt;= <a class="code" href="class_f_i_x_1_1_session_state.html#a6756df65c9c41b166e7dd23287b809d9">heartBtInt</a>() ) &amp;&amp; !<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>() ) &gt;=
<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&amp; 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>&amp; 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>&amp; 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-&gt;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&amp; 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>-&gt;<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 &lt; std::string &gt; &amp;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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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&amp; <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>-&gt;<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&amp; <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>-&gt;<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&amp; <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>-&gt;<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>,
 &copy;&nbsp;1997-2001</small></address>
</body>
</html>