aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02921.html
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
committerneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
commit0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch)
tree2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /docs/doxygen/nel/a02921.html
downloadnevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.tar.xz
nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.zip
Initial commit
Diffstat (limited to 'docs/doxygen/nel/a02921.html')
-rw-r--r--docs/doxygen/nel/a02921.html977
1 files changed, 977 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02921.html b/docs/doxygen/nel/a02921.html
new file mode 100644
index 00000000..86c17ddc
--- /dev/null
+++ b/docs/doxygen/nel/a02921.html
@@ -0,0 +1,977 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>NeL: NLNET::CMessageRecorder class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"> <form class="search" action="search.php" method="get">
+<a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
+<h1>NLNET::CMessageRecorder Class Reference</h1><code>#include &lt;<a class="el" href="a06029.html">message_recorder.h</a>&gt;</code>
+<p>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Message recorder. The service performs sends normally. They are intercepted and the recorder plays the receives back. No communication with other hosts. Warning: it works only with messages as plain text. <dl compact><dt><b>Author:</b></dt><dd>Olivier Cado <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06029.html#l00116">116</a> of file <a class="el" href="a06029.html">message_recorder.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05379.html#a225">TNetworkEvent</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera0">checkNextOne</a> (<a class="el" href="a04558.html#a12">sint64</a> updatecounter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera1">CMessageRecorder</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <a href="#NLNET_1_1CMessageRecordera1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera2">recordNext</a> (<a class="el" href="a04558.html#a12">sint64</a> updatecounter, <a class="el" href="a05379.html#a225">TNetworkEvent</a> event, <a class="el" href="a02303.html">TSockId</a> sockid, <a class="el" href="a02918.html">CMessage</a> &amp;message)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a record. <a href="#NLNET_1_1CMessageRecordera2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05379.html#a225">TNetworkEvent</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera3">replayConnectionAttempt</a> (const <a class="el" href="a02665.html">CInetAddress</a> &amp;<a class="el" href="a04223.html#a657">addr</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the first stored connection attempt corresponding to addr. <a href="#NLNET_1_1CMessageRecordera3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera4">replayNextDataAvailable</a> (<a class="el" href="a04558.html#a12">sint64</a> updatecounter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Push the received blocks for this counter into the receive queue. <a href="#NLNET_1_1CMessageRecordera4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera5">startRecord</a> (const std::string &amp;<a class="el" href="a04560.html#a1">filename</a>, bool recordall=true)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start recording. <a href="#NLNET_1_1CMessageRecordera5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera6">startReplay</a> (const std::string &amp;<a class="el" href="a04560.html#a1">filename</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start replaying. <a href="#NLNET_1_1CMessageRecordera6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera7">stopRecord</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop recording. <a href="#NLNET_1_1CMessageRecordera7"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera8">stopReplay</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop playback. <a href="#NLNET_1_1CMessageRecordera8"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordera9">~CMessageRecorder</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#NLNET_1_1CMessageRecordera9"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::queue&lt; <a class="el" href="a03909.html">NLNET::TMessageRecord</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecordero0">ReceivedMessages</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Receive queue (corresponding to one update count). Use empty(), front(), pop(). <a href="#NLNET_1_1CMessageRecordero0"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecorderb0">getNext</a> (<a class="el" href="a03909.html">TMessageRecord</a> &amp;record, <a class="el" href="a04558.html#a12">sint64</a> updatecounter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the next record (from the preloaded records, or from the file). <a href="#NLNET_1_1CMessageRecorderb0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecorderb1">loadNext</a> (<a class="el" href="a03909.html">TMessageRecord</a> &amp;record)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the next record from the file (throws EStreamOverflow). <a href="#NLNET_1_1CMessageRecorderb1"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::deque&lt; <a class="el" href="a03909.html">TMessageRecord</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr0">_ConnectionAttempts</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::fstream&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::deque&lt; <a class="el" href="a03909.html">TMessageRecord</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr4">_RecordAll</a></td></tr>
+
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NLNET_1_1CMessageRecordera1" doxytag="NLNET::CMessageRecorder::CMessageRecorder" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NLNET::CMessageRecorder::CMessageRecorder </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00079">79</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a05622.html#l00154">nlerror</a>.
+<p>
+<div class="fragment"><pre>00079 : <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr4">_RecordAll</a>(<span class="keyword">true</span>)
+00080 {
+00081 <span class="preprocessor">#ifndef MESSAGES_PLAIN_TEXT</span>
+00082 <span class="preprocessor"></span> <a class="code" href="a04199.html#a3">nlerror</a>( <span class="stringliteral">"The message recorder works only with plain text messages. Please #define MESSAGES_PLAIN_TEXT"</span> );
+00083 <span class="preprocessor">#endif</span>
+00084 <span class="preprocessor"></span>}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecordera9" doxytag="NLNET::CMessageRecorder::~CMessageRecorder" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NLNET::CMessageRecorder::~<a class="el" href="a02921.html">CMessageRecorder</a> </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destructor.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00090">90</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a05622.html#l00101">nldebug</a>, <a class="el" href="a06028.html#l00168">stopRecord()</a>, and <a class="el" href="a06028.html#l00404">stopReplay()</a>.
+<p>
+<div class="fragment"><pre>00091 {
+00092 <span class="keywordflow">if</span> ( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a> != <span class="stringliteral">""</span> )
+00093 {
+00094 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR:%s: End of recording"</span>, <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a>.c_str() );
+00095 }
+00096 <a class="code" href="a02921.html#NLNET_1_1CMessageRecordera7">stopRecord</a>();
+00097 <a class="code" href="a02921.html#NLNET_1_1CMessageRecordera8">stopReplay</a>();
+00098 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NLNET_1_1CMessageRecordera0" doxytag="NLNET::CMessageRecorder::checkNextOne" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a05379.html#a225">TNetworkEvent</a> NLNET::CMessageRecorder::checkNextOne </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a12">sint64</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>updatecounter</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the event type if the counter of the next event is updatecounter, and skip it; otherwise return Error.
+<p>
+Definition at line <a class="el" href="a06028.html#l00308">308</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a05379.html#a225a92">NLNET::Error</a>, <a class="el" href="a06029.html#l00100">NLNET::TMessageRecord::Event</a>, <a class="el" href="a06028.html#l00039">NLNET::EventToString()</a>, <a class="el" href="a06028.html#l00230">getNext()</a>, <a class="el" href="a05981.html#l00107">NL_I64</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, <a class="el" href="a05981.html#l00101">sint64</a>, and <a class="el" href="a06029.html#l00049">NLNET::TNetworkEvent</a>.
+<p>
+<div class="fragment"><pre>00309 {
+00310 TMessageRecord record;
+00311 <span class="keywordflow">if</span> ( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderb0">getNext</a>( record, updatecounter ) )
+00312 {
+00313 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR: Check next one: %s at update %"</span>NL_I64<span class="stringliteral">"u"</span>, <a class="code" href="a05379.html#a157">EventToString</a>(record.Event).c_str(), updatecounter );
+00314 <span class="keywordflow">return</span> record.Event;
+00315 }
+00316 <span class="keywordflow">else</span>
+00317 {
+00318 <span class="keywordflow">return</span> <a class="code" href="a05379.html#a225a92">Error</a>;
+00319 }
+00320 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecorderb0" doxytag="NLNET::CMessageRecorder::getNext" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NLNET::CMessageRecorder::getNext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03909.html">TMessageRecord</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>record</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a12">sint64</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>updatecounter</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the next record (from the preloaded records, or from the file).
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00230">230</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a06029.html#l00173">_PreloadedRecords</a>, <a class="el" href="a06028.html#l00198">loadNext()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, and <a class="el" href="a05981.html#l00101">sint64</a>.
+<p>
+Referenced by <a class="el" href="a06028.html#l00308">checkNextOne()</a>, and <a class="el" href="a06028.html#l00276">replayNextDataAvailable()</a>.
+<p>
+<div class="fragment"><pre>00231 {
+00232 <span class="keywordflow">if</span> ( ! <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.empty() )
+00233 {
+00234 <span class="keywordflow">if</span> ( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.front().UpdateCounter == updatecounter )
+00235 {
+00236 <span class="comment">// The requested record is in the preload</span>
+00237 record = <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.front();
+00238 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.pop_front();
+00239 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00240 }
+00241 <span class="keywordflow">else</span>
+00242 {
+00243 <span class="comment">// The requested record is not in the file</span>
+00244 <a class="code" href="a04199.html#a6">nlassert</a>( updatecounter &lt; _PreloadedRecords.front().UpdateCounter ); // not &gt;
+00245 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00246 }
+00247 }
+00248 <span class="keywordflow">else</span>
+00249 {
+00250 <span class="keywordflow">if</span> ( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderb1">loadNext</a>( record ) )
+00251 {
+00252 <span class="keywordflow">if</span> ( record.UpdateCounter == updatecounter )
+00253 {
+00254 <span class="comment">// The requested record has been loaded</span>
+00255 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00256 }
+00257 <span class="keywordflow">else</span>
+00258 {
+00259 <span class="comment">// The next loaded record is a new one</span>
+00260 <a class="code" href="a04199.html#a6">nlassert</a>( updatecounter &lt; record.UpdateCounter ); // not &gt;
+00261 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.push_back( record ); <span class="comment">// when we read one too far</span>
+00262 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00263 }
+00264 }
+00265 <span class="keywordflow">else</span>
+00266 {
+00267 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00268 }
+00269 }
+00270 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecorderb1" doxytag="NLNET::CMessageRecorder::loadNext" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NLNET::CMessageRecorder::loadNext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03909.html">TMessageRecord</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>record</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [protected]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Load the next record from the file (throws EStreamOverflow).
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00198">198</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a06029.html#l00167">_File</a>, <a class="el" href="a05646.html#l00235">len</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, <a class="el" href="a05622.html#l00416">nlstop</a>, <a class="el" href="a06029.html#l00072">NLNET::TMessageRecord::serial()</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06028.html#l00230">getNext()</a>, and <a class="el" href="a06028.html#l00326">replayConnectionAttempt()</a>.
+<p>
+<div class="fragment"><pre>00199 {
+00200 <span class="comment">// WARNING!!! This features doesn't work anymore becaues bufferAsVector() is not available with new CMemStream</span>
+00201 <a class="code" href="a04199.html#a12">nlstop</a>;
+00202 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00203
+00204 <a class="code" href="a04199.html#a6">nlassert</a>( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.is_open() );
+00205
+00206 <span class="comment">// Dump from file</span>
+00207 CMemStream stream ( <span class="keyword">true</span>, <span class="keyword">true</span> );
+00208 <a class="code" href="a04558.html#a11">uint32</a> <a class="code" href="a04223.html#a571">len</a>;
+00209 <span class="keywordtype">char</span> c;
+00210 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a> &gt;&gt; c; <span class="comment">// skip "* ";</span>
+00211 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a> &gt;&gt; (<span class="keywordtype">int</span>&amp;)<a class="code" href="a04223.html#a571">len</a>;
+00212 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.ignore(); <span class="comment">// skip delimiter</span>
+00213 <span class="keywordflow">if</span> ( ! <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.fail() )
+00214 {
+00215 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.get( (<span class="keywordtype">char</span>*)stream.bufferToFill( len+1 ), <a class="code" href="a04223.html#a571">len</a>+1, <span class="charliteral">'\0'</span> );
+00216 <span class="comment">//stream.bufferAsVector().resize( len ); // cut end of cstring</span>
+00217 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR:%s: Reading [%s]"</span>, <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a>.c_str(), stream.buffer() );
+00218
+00219 <span class="comment">// Serial from stream</span>
+00220 record.serial( stream ); <span class="comment">// may throw EStreamOverflow if _File.fail()</span>
+00221 }
+00222
+00223 <span class="keywordflow">return</span> ! <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.fail(); <span class="comment">// retest</span>
+00224 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecordera2" doxytag="NLNET::CMessageRecorder::recordNext" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NLNET::CMessageRecorder::recordNext </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a12">sint64</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>updatecounter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a05379.html#a225">TNetworkEvent</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>event</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02303.html">TSockId</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>sockid</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02918.html">CMessage</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>message</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Add a record.
+<p>
+
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000036">Todo:</a></b></dt><dd>cado: Does a silent Access Violation</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00141">141</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a06029.html#l00167">_File</a>, <a class="el" href="a06029.html#l00179">_RecordAll</a>, <a class="el" href="a05646.html#l00235">len</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, <a class="el" href="a05379.html#a225a86">NLNET::Sending</a>, <a class="el" href="a06029.html#l00072">NLNET::TMessageRecord::serial()</a>, <a class="el" href="a05981.html#l00101">sint64</a>, and <a class="el" href="a05511.html#l00042">NLNET::TSockId</a>.
+<p>
+<div class="fragment"><pre>00142 {
+00143 <a class="code" href="a04199.html#a6">nlassert</a>( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.is_open() );
+00144
+00145 <span class="keywordflow">if</span> ( (<a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr4">_RecordAll</a>) || (event != <a class="code" href="a05379.html#a225a86">Sending</a>) )
+00146 {
+00147 <span class="comment">// Serial to stream</span>
+00148 TMessageRecord rec ( event, sockid, message, updatecounter <span class="comment">/*CTime::getLocalTime()*/</span> );
+00149 CMemStream stream ( <span class="keyword">false</span>, <span class="keyword">true</span> );
+00150 rec.serial( stream );
+00151 <span class="keywordtype">char</span> c = <span class="charliteral">'\0'</span>; <span class="comment">// end of cstring</span>
+00152 stream.serial( c ); <span class="comment">// added to the stream for _File &lt;&lt; (char*)stream.buffer()</span>
+00153
+00154 <span class="comment">// Dump to file</span>
+00155 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR:%s: Recording [%s]"</span>, <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a>.c_str(), stream.buffer() );
+00156 <span class="keywordtype">int</span> <a class="code" href="a04223.html#a571">len</a> = (<span class="keywordtype">int</span>)(stream.length()-2); <span class="comment">// not the null character (and its separator) at the end of the buffer</span>
+00157 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a> &lt;&lt; <span class="stringliteral">"* "</span>;
+00158 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a> &lt;&lt; <a class="code" href="a04223.html#a571">len</a>; <span class="comment">// if we put the expression directly, it makes an access violation ! Weird.</span>
+00159 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a> &lt;&lt; <span class="stringliteral">" "</span>;
+00160 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a> &lt;&lt; (<span class="keywordtype">char</span>*)stream.buffer() &lt;&lt; endl;
+00161 }
+00162 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecordera3" doxytag="NLNET::CMessageRecorder::replayConnectionAttempt" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a05379.html#a225">TNetworkEvent</a> NLNET::CMessageRecorder::replayConnectionAttempt </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02665.html">CInetAddress</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>addr</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the first stored connection attempt corresponding to addr.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00326">326</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a06029.html#l00176">_ConnectionAttempts</a>, <a class="el" href="a06029.html#l00173">_PreloadedRecords</a>, <a class="el" href="a05646.html#l01127">addr</a>, <a class="el" href="a05379.html#a225a88">NLNET::Connecting</a>, <a class="el" href="a05379.html#a225a89">NLNET::ConnFailing</a>, <a class="el" href="a05379.html#a225a92">NLNET::Error</a>, <a class="el" href="a06029.html#l00100">NLNET::TMessageRecord::Event</a>, <a class="el" href="a06028.html#l00198">loadNext()</a>, <a class="el" href="a06029.html#l00102">NLNET::TMessageRecord::Message</a>, <a class="el" href="a05981.html#l00107">NL_I64</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, <a class="el" href="a05622.html#l00416">nlstop</a>, <a class="el" href="a05979.html#l00420">NLMISC::CMemStream::serial()</a>, <a class="el" href="a06029.html#l00049">NLNET::TNetworkEvent</a>, and <a class="el" href="a06029.html#l00099">NLNET::TMessageRecord::UpdateCounter</a>.
+<p>
+<div class="fragment"><pre>00327 {
+00328 <a class="code" href="a05379.html#a225">TNetworkEvent</a> event;
+00329 deque&lt;TMessageRecord&gt;::iterator ipr;
+00330
+00331 <span class="keywordflow">if</span> ( ! <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr0">_ConnectionAttempts</a>.empty() )
+00332 {
+00333 <span class="comment">// Search in the already processed connection attempts</span>
+00334 <span class="keywordflow">for</span> ( ipr=<a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr0">_ConnectionAttempts</a>.begin(); ipr!=<a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr0">_ConnectionAttempts</a>.end(); ++ipr )
+00335 {
+00336 <a class="code" href="a02665.html">CInetAddress</a> stored_addr;
+00337 (*ipr).Message.serial( stored_addr );
+00338 <span class="keywordflow">if</span> ( stored_addr == <a class="code" href="a04223.html#a657">addr</a> )
+00339 {
+00340 <span class="comment">// Found</span>
+00341 event = (*ipr).Event;
+00342 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR: Connection attempt found at update %"</span>NL_I64<span class="stringliteral">"u"</span>, (*ipr).UpdateCounter );
+00343 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr0">_ConnectionAttempts</a>.erase( ipr );
+00344 <span class="keywordflow">return</span> event;
+00345 }
+00346 }
+00347 }
+00348
+00349 <span class="comment">// Seek in the preloaded records</span>
+00350 <span class="keywordflow">for</span> ( ipr=<a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.begin(); ipr!=<a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.end(); ++ipr )
+00351 {
+00352 event = (*ipr).Event;
+00353 <span class="keywordflow">if</span> ( (event == <a class="code" href="a05379.html#a225a88">Connecting</a>) || (event == <a class="code" href="a05379.html#a225a89">ConnFailing</a>) )
+00354 {
+00355 <a class="code" href="a02665.html">CInetAddress</a> stored_addr;
+00356 (*ipr).Message.serial( stored_addr );
+00357 <span class="keywordflow">if</span> ( stored_addr == <a class="code" href="a04223.html#a657">addr</a> )
+00358 {
+00359 <span class="comment">// Found</span>
+00360 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR: Connection attempt found at update %"</span>NL_I64<span class="stringliteral">"u"</span>, (*ipr).UpdateCounter );
+00361 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.erase( ipr );
+00362 <span class="keywordflow">return</span> event;
+00363 }
+00364 }
+00365 }
+00366 <span class="keywordflow">if</span> ( ipr==<a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.end() )
+00367 {
+00368 <span class="comment">// If not found, load next records until found !</span>
+00369 TMessageRecord rec( <span class="keyword">true</span> );
+00370 <span class="keywordflow">while</span> ( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderb1">loadNext</a>( rec ) )
+00371 {
+00372 <span class="keywordflow">if</span> ( ( rec.Event == <a class="code" href="a05379.html#a225a88">Connecting</a> ) || ( rec.Event == <a class="code" href="a05379.html#a225a89">ConnFailing</a> ) )
+00373 {
+00374 <a class="code" href="a02665.html">CInetAddress</a> stored_addr;
+00375 rec.Message.serial( stored_addr );
+00376 <span class="keywordflow">if</span> ( stored_addr == <a class="code" href="a04223.html#a657">addr</a> )
+00377 {
+00378 <span class="comment">// Found</span>
+00379 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR: Connection attempt found at update %"</span>NL_I64<span class="stringliteral">"u"</span>, rec.UpdateCounter );
+00380 <span class="keywordflow">return</span> rec.Event;
+00381 }
+00382 <span class="keywordflow">else</span>
+00383 {
+00384 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.push_back( rec );
+00385 }
+00386 }
+00387 <span class="keywordflow">else</span>
+00388 {
+00389 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr3">_PreloadedRecords</a>.push_back( rec );
+00390 }
+00391 }
+00392 <span class="comment">// Not found</span>
+00393 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR: Connection attempt not found"</span> );
+00394 <span class="keywordflow">return</span> <a class="code" href="a05379.html#a225a92">Error</a>;
+00395 }
+00396 <a class="code" href="a04199.html#a12">nlstop</a>;
+00397 <span class="keywordflow">return</span> <a class="code" href="a05379.html#a225a92">Error</a>;
+00398 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecordera4" doxytag="NLNET::CMessageRecorder::replayNextDataAvailable" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NLNET::CMessageRecorder::replayNextDataAvailable </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a12">sint64</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>updatecounter</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Push the received blocks for this counter into the receive queue.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00276">276</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a06029.html#l00176">_ConnectionAttempts</a>, <a class="el" href="a05379.html#a225a90">NLNET::Accepting</a>, <a class="el" href="a05379.html#a225a88">NLNET::Connecting</a>, <a class="el" href="a05379.html#a225a89">NLNET::ConnFailing</a>, <a class="el" href="a05379.html#a225a91">NLNET::Disconnecting</a>, <a class="el" href="a06029.html#l00100">NLNET::TMessageRecord::Event</a>, <a class="el" href="a06028.html#l00230">getNext()</a>, <a class="el" href="a05622.html#l00416">nlstop</a>, <a class="el" href="a06029.html#l00154">ReceivedMessages</a>, <a class="el" href="a05379.html#a225a87">NLNET::Receiving</a>, <a class="el" href="a05379.html#a225a86">NLNET::Sending</a>, and <a class="el" href="a05981.html#l00101">sint64</a>.
+<p>
+<div class="fragment"><pre>00277 {
+00278 TMessageRecord rec( <span class="keyword">true</span> ); <span class="comment">// input message</span>
+00279
+00280 <span class="keywordflow">while</span> ( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderb0">getNext</a>( rec, updatecounter ) )
+00281 {
+00282 <span class="keywordflow">switch</span> ( rec.Event )
+00283 {
+00284 <span class="keywordflow">case</span> <a class="code" href="a05379.html#a225a87">Receiving</a> :
+00285 <span class="keywordflow">case</span> <a class="code" href="a05379.html#a225a90">Accepting</a> :
+00286 <span class="keywordflow">case</span> <a class="code" href="a05379.html#a225a91">Disconnecting</a> :
+00287 <a class="code" href="a02921.html#NLNET_1_1CMessageRecordero0">ReceivedMessages</a>.push( rec );
+00288 <span class="keywordflow">break</span>;
+00289
+00290 <span class="keywordflow">case</span> <a class="code" href="a05379.html#a225a86">Sending</a> :
+00291 <span class="keywordflow">break</span>;
+00292
+00293 <span class="keywordflow">case</span> <a class="code" href="a05379.html#a225a88">Connecting</a> :
+00294 <span class="keywordflow">case</span> <a class="code" href="a05379.html#a225a89">ConnFailing</a> :
+00295 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr0">_ConnectionAttempts</a>.push_back( rec );
+00296 <span class="keywordflow">break</span>;
+00297
+00298 <span class="keywordflow">default</span> :
+00299 <a class="code" href="a04199.html#a12">nlstop</a>;
+00300 }
+00301 }
+00302 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecordera5" doxytag="NLNET::CMessageRecorder::startRecord" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NLNET::CMessageRecorder::startRecord </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::string &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>filename</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>recordall</em> = true</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Start recording.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00104">104</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a06029.html#l00167">_File</a>, <a class="el" href="a06029.html#l00179">_RecordAll</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, and <a class="el" href="a05622.html#l00135">nlwarning</a>.
+<p>
+<div class="fragment"><pre>00105 {
+00106 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a> = <a class="code" href="a05377.html#a2">filename</a>;
+00107 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.open( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a>.c_str(), ios_base::out );
+00108 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a> &lt;&lt; endl;
+00109 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr4">_RecordAll</a> = recordall;
+00110 <span class="keywordflow">if</span> ( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.fail() )
+00111 {
+00112 <a class="code" href="a04199.html#a2">nlwarning</a>( <span class="stringliteral">"MR: Record: Cannot open file %s"</span>, <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a>.c_str() );
+00113 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00114 }
+00115 <span class="keywordflow">else</span>
+00116 {
+00117 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR: Start recording into %s"</span>, <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a>.c_str() );
+00118 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00119 }
+00120 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecordera6" doxytag="NLNET::CMessageRecorder::startReplay" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NLNET::CMessageRecorder::startReplay </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::string &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>filename</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Start replaying.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00178">178</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a06029.html#l00167">_File</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, and <a class="el" href="a05622.html#l00154">nlerror</a>.
+<p>
+<div class="fragment"><pre>00179 {
+00180 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a> = <a class="code" href="a05377.html#a2">filename</a>;
+00181 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.open( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a>.c_str(), ios_base::in );
+00182 <span class="keywordflow">if</span> ( <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.fail() )
+00183 {
+00184 <a class="code" href="a04199.html#a3">nlerror</a>( <span class="stringliteral">"MR: Replay: Cannot open file %s"</span>, <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a>.c_str() );
+00185 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00186 }
+00187 <span class="keywordflow">else</span>
+00188 {
+00189 <a class="code" href="a04199.html#a0">nldebug</a>( <span class="stringliteral">"MR: Start replaying from %s"</span>, <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a>.c_str() );
+00190 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00191 }
+00192 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecordera7" doxytag="NLNET::CMessageRecorder::stopRecord" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NLNET::CMessageRecorder::stopRecord </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Stop recording.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00168">168</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a06029.html#l00167">_File</a>.
+<p>
+Referenced by <a class="el" href="a06028.html#l00090">~CMessageRecorder()</a>.
+<p>
+<div class="fragment"><pre>00169 {
+00170 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.close();
+00171 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a> = <span class="stringliteral">""</span>;
+00172 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecordera8" doxytag="NLNET::CMessageRecorder::stopReplay" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NLNET::CMessageRecorder::stopReplay </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Stop playback.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06028.html#l00404">404</a> of file <a class="el" href="a06028.html">message_recorder.cpp</a>.
+<p>
+References <a class="el" href="a06029.html#l00167">_File</a>.
+<p>
+Referenced by <a class="el" href="a06028.html#l00090">~CMessageRecorder()</a>.
+<p>
+<div class="fragment"><pre>00405 {
+00406 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr1">_File</a>.close();
+00407 <a class="code" href="a02921.html#NLNET_1_1CMessageRecorderr2">_Filename</a> = <span class="stringliteral">""</span>;
+00408 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NLNET_1_1CMessageRecorderr0" doxytag="NLNET::CMessageRecorder::_ConnectionAttempts" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::deque&lt;<a class="el" href="a03909.html">TMessageRecord</a>&gt; <a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr0">NLNET::CMessageRecorder::_ConnectionAttempts</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06029.html#l00176">176</a> of file <a class="el" href="a06029.html">message_recorder.h</a>.
+<p>
+Referenced by <a class="el" href="a06028.html#l00326">replayConnectionAttempt()</a>, and <a class="el" href="a06028.html#l00276">replayNextDataAvailable()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecorderr1" doxytag="NLNET::CMessageRecorder::_File" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::fstream <a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr1">NLNET::CMessageRecorder::_File</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06029.html#l00167">167</a> of file <a class="el" href="a06029.html">message_recorder.h</a>.
+<p>
+Referenced by <a class="el" href="a06028.html#l00198">loadNext()</a>, <a class="el" href="a06028.html#l00141">recordNext()</a>, <a class="el" href="a06028.html#l00104">startRecord()</a>, <a class="el" href="a06028.html#l00178">startReplay()</a>, <a class="el" href="a06028.html#l00168">stopRecord()</a>, and <a class="el" href="a06028.html#l00404">stopReplay()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecorderr2" doxytag="NLNET::CMessageRecorder::_Filename" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::string <a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr2">NLNET::CMessageRecorder::_Filename</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06029.html#l00170">170</a> of file <a class="el" href="a06029.html">message_recorder.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecorderr3" doxytag="NLNET::CMessageRecorder::_PreloadedRecords" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::deque&lt;<a class="el" href="a03909.html">TMessageRecord</a>&gt; <a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr3">NLNET::CMessageRecorder::_PreloadedRecords</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06029.html#l00173">173</a> of file <a class="el" href="a06029.html">message_recorder.h</a>.
+<p>
+Referenced by <a class="el" href="a06028.html#l00230">getNext()</a>, and <a class="el" href="a06028.html#l00326">replayConnectionAttempt()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecorderr4" doxytag="NLNET::CMessageRecorder::_RecordAll" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a02921.html#NLNET_1_1CMessageRecorderr4">NLNET::CMessageRecorder::_RecordAll</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06029.html#l00179">179</a> of file <a class="el" href="a06029.html">message_recorder.h</a>.
+<p>
+Referenced by <a class="el" href="a06028.html#l00141">recordNext()</a>, and <a class="el" href="a06028.html#l00104">startRecord()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CMessageRecordero0" doxytag="NLNET::CMessageRecorder::ReceivedMessages" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::queue&lt;<a class="el" href="a03909.html">NLNET::TMessageRecord</a>&gt; <a class="el" href="a02921.html#NLNET_1_1CMessageRecordero0">NLNET::CMessageRecorder::ReceivedMessages</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Receive queue (corresponding to one update count). Use empty(), front(), pop().
+<p>
+
+<p>
+Definition at line <a class="el" href="a06029.html#l00154">154</a> of file <a class="el" href="a06029.html">message_recorder.h</a>.
+<p>
+Referenced by <a class="el" href="a06028.html#l00276">replayNextDataAvailable()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a06029.html">message_recorder.h</a><li><a class="el" href="a06028.html">message_recorder.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 14:00:11 2004 for NeL by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.6 </small></address>
+</body>
+</html>