aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02306.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/doxygen/nel/a02306.html')
-rw-r--r--docs/doxygen/nel/a02306.html2295
1 files changed, 2295 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02306.html b/docs/doxygen/nel/a02306.html
new file mode 100644
index 00000000..054019dd
--- /dev/null
+++ b/docs/doxygen/nel/a02306.html
@@ -0,0 +1,2295 @@
+<!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::CCallbackNetBase 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::CCallbackNetBase Class Reference</h1><code>#include &lt;<a class="el" href="a05527.html">callback_net_base.h</a>&gt;</code>
+<p>
+<p>Inheritance diagram for NLNET::CCallbackNetBase:
+<p><center><img src="a02306.png" usemap="#NLNET::CCallbackNetBase_map" border="0" alt=""></center>
+<map name="NLNET::CCallbackNetBase_map">
+<area href="a02305.html" alt="NLNET::CCallbackClient" shape="rect" coords="0,56,163,80">
+<area href="a02307.html" alt="NLNET::CCallbackServer" shape="rect" coords="173,56,336,80">
+</map>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Layer 3 <dl compact><dt><b>Author:</b></dt><dd>Vianney Lecroart <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="a05527.html#l00075">75</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerw8">TRecordingState</a> { <a class="el" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw3">Off</a>,
+<a class="el" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw4">Record</a>,
+<a class="el" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw5">Replay</a>
+ }</td></tr>
+
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServera0">addCallbackArray</a> (const <a class="el" href="a03900.html">TCallbackItem</a> *callbackarray, <a class="el" href="a03449.html#NLMISC_1_1CStringIdArrayw0">NLMISC::CStringIdArray::TStringId</a> arraysize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServera1">authorizeOnly</a> (const char *callbackName, <a class="el" href="a02303.html">TSockId</a> hostid=<a class="el" href="a05379.html#a75">InvalidSockId</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea2">connected</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function is implemented in the client and server class. <a href="#NLNET_1_1CCallbackNetBasea2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea3">dataAvailable</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function is implemented in the client and server class. <a href="#NLNET_1_1CCallbackNetBasea3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea4">disconnect</a> (<a class="el" href="a02303.html">TSockId</a> hostid=<a class="el" href="a05379.html#a75">InvalidSockId</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function is implemented in the client and server class. <a href="#NLNET_1_1CCallbackNetBasea4"></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="a02306.html#NLNET_1_1CCallbackServera8">displayAllMyAssociations</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea6">displayReceiveQueueStat</a> (<a class="el" href="a02813.html">NLMISC::CLog</a> *log=<a class="el" href="a05378.html#a12">NLMISC::InfoLog</a>)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea7">displaySendQueueStat</a> (<a class="el" href="a02813.html">NLMISC::CLog</a> *log=<a class="el" href="a05378.html#a12">NLMISC::InfoLog</a>, <a class="el" href="a02303.html">TSockId</a> destid=<a class="el" href="a05379.html#a75">InvalidSockId</a>)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea8">displayThreadStat</a> (<a class="el" href="a02813.html">NLMISC::CLog</a> *log=<a class="el" href="a05378.html#a12">NLMISC::InfoLog</a>)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea9">flush</a> (<a class="el" href="a02303.html">TSockId</a> hostid=<a class="el" href="a05379.html#a75">InvalidSockId</a>)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a13">uint64</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServera13">getBytesReceived</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a13">uint64</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServera14">getBytesSent</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a04558.html#a13">uint64</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea12">getReceiveQueueSize</a> ()=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a04558.html#a13">uint64</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea13">getSendQueueSize</a> ()=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03449.html">NLMISC::CStringIdArray</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServera18">getSIDA</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use this function to get the String ID Array needed when you want to create a message. <a href="#NLNET_1_1CCallbackServera18"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a02303.html">TSockId</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea15">getSockId</a> (<a class="el" href="a02303.html">TSockId</a> hostid=<a class="el" href="a05379.html#a75">InvalidSockId</a>)=0</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns the sockid of a connection. On a server, this function returns the parameter. On a client, it returns the connection. <a href="#NLNET_1_1CCallbackNetBasea15"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual const <a class="el" href="a02665.html">CInetAddress</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea16">hostAddress</a> (<a class="el" href="a02303.html">TSockId</a> hostid)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the address of the specified host. <a href="#NLNET_1_1CCallbackNetBasea16"></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="a02306.html#NLNET_1_1CCallbackServera21">ignoreAllUnknownId</a> (bool b)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServera23">isAServer</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if this is a <a class="el" href="a02307.html">CCallbackServer</a>. <a href="#NLNET_1_1CCallbackServera23"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea19">send</a> (const <a class="el" href="a02918.html">CMessage</a> &amp;<a class="el" href="a04223.html#a589">buffer</a>, <a class="el" href="a02303.html">TSockId</a> hostid=<a class="el" href="a05379.html#a75">InvalidSockId</a>, bool log=true)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea20">sendAllMyAssociations</a> (<a class="el" href="a02303.html">TSockId</a> to)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used by client and server class. <a href="#NLNET_1_1CCallbackNetBasea20"></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="a02306.html#NLNET_1_1CCallbackServera33">setDefaultCallback</a> (<a class="el" href="a05379.html#a83">TMsgCallback</a> defaultCallback)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets default callback for unknown message types. <a href="#NLNET_1_1CCallbackServera33"></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="a02306.html#NLNET_1_1CCallbackNetBasea22">setDisconnectionCallback</a> (<a class="el" href="a05379.html#a76">TNetCallback</a> cb, void *arg)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets callback for disconnections (or NULL to disable callback). <a href="#NLNET_1_1CCallbackNetBasea22"></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="a02306.html#NLNET_1_1CCallbackServera37">setOtherSideAssociations</a> (const char **associationarray, <a class="el" href="a03449.html#NLMISC_1_1CStringIdArrayw0">NLMISC::CStringIdArray::TStringId</a> arraysize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea24">update</a> (<a class="el" href="a04558.html#a10">sint32</a> timeout=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function is implemented in the client and server class. <a href="#NLNET_1_1CCallbackNetBasea24"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea25">~CCallbackNetBase</a> ()</td></tr>
+
+<tr><td colspan=2><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerb3">baseUpdate</a> (<a class="el" href="a04558.html#a10">sint32</a> timeout=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used by client and server class. <a href="#NLNET_1_1CCallbackServerb3"></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="a02306.html#NLNET_1_1CCallbackNetBaseb1">CCallbackNetBase</a> (<a class="el" href="a02306.html#NLNET_1_1CCallbackServerw8">TRecordingState</a> rec=Off, const std::string &amp;recfilename="", bool recordall=true)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <a href="#NLNET_1_1CCallbackNetBaseb1"></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="a02306.html#NLNET_1_1CCallbackServerb4">checkThreadId</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerb10">processOneMessage</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a message from the network and process it. <a href="#NLNET_1_1CCallbackServerb10"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaseb4">receive</a> (<a class="el" href="a02918.html">CMessage</a> &amp;<a class="el" href="a04223.html#a589">buffer</a>, <a class="el" href="a02303.html">TSockId</a> *hostid)=0</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">On this layer, you can't call directly receive, It s the <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea24">update()</a> function that receive and call your callaback. <a href="#NLNET_1_1CCallbackNetBaseb4"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a13">uint64</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp0">_BytesReceived</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a13">uint64</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp1">_BytesSent</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a03900.html">TCallbackItem</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp2">_CallbackArray</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05379.html#a83">TMsgCallback</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp3">_DefaultCallback</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp4">_FirstUpdate</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03449.html">NLMISC::CStringIdArray</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp5">_InputSIDA</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp6">_IsAServer</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05379.html#a76">TNetCallback</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp7">_NewDisconnectionCallback</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used by client and server class. <a href="#NLNET_1_1CCallbackServerp7"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03449.html">NLMISC::CStringIdArray</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp8">_OutputSIDA</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackServerp9">_ThreadId</a></td></tr>
+
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05379.html#a76">TNetCallback</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaser0">_DisconnectionCallback</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaser1">_DisconnectionCbArg</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05378.html#a242">NLMISC::TTime</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaser2">_LastMovedStringArray</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05378.html#a242">NLMISC::TTime</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaser3">_LastUpdateTime</a></td></tr>
+
+<tr><td colspan=2><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasen0">cbnbMessageAskAssociations</a> (<a class="el" href="a02918.html">CMessage</a> &amp;msgin, <a class="el" href="a02303.html">TSockId</a> <a class="el" href="a04113.html#a70">from</a>, <a class="el" href="a02306.html">CCallbackNetBase</a> &amp;netbase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasen1">cbnbMessageRecvAssociations</a> (<a class="el" href="a02918.html">CMessage</a> &amp;msgin, <a class="el" href="a02303.html">TSockId</a> <a class="el" href="a04113.html#a70">from</a>, <a class="el" href="a02306.html">CCallbackNetBase</a> &amp;netbase)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasen2">cbnbNewDisconnection</a> (<a class="el" href="a02303.html">TSockId</a> <a class="el" href="a04113.html#a70">from</a>, void *<a class="el" href="a04223.html#a637">data</a>)</td></tr>
+
+</table>
+<hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="NLNET_1_1CCallbackServerw8" doxytag="NLNET::CCallbackNetBase::TRecordingState" ></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"> enum <a class="el" href="a02306.html#NLNET_1_1CCallbackServerw8">NLNET::CCallbackNetBase::TRecordingState</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumeration values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em><a class="anchor" name="NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw3" doxytag="Off" ></a>Off</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw4" doxytag="Record" ></a>Record</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw5" doxytag="Replay" ></a>Replay</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05527.html#l00163">163</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+<div class="fragment"><pre>00163 { <a class="code" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw3">Off</a>, <a class="code" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw4">Record</a>, <a class="code" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw5">Replay</a> };
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea25" doxytag="NLNET::CCallbackNetBase::~CCallbackNetBase" ></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"> virtual NLNET::CCallbackNetBase::~<a class="el" href="a02306.html">CCallbackNetBase</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><code> [inline, virtual]</code></td>
+ </tr>
+
+ </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="a05527.html#l00078">78</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+<div class="fragment"><pre>00078 {}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBaseb1" doxytag="NLNET::CCallbackNetBase::CCallbackNetBase" ></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::CCallbackNetBase::CCallbackNetBase </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02306.html#NLNET_1_1CCallbackServerw8">TRecordingState</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>rec</em> = Off, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const std::string &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>recfilename</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"><code> [protected]</code></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="a05526.html#l00148">148</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+References <a class="el" href="a05527.html#l00167">_BytesReceived</a>, <a class="el" href="a05527.html#l00167">_BytesSent</a>, <a class="el" href="a05527.html#l00170">_NewDisconnectionCallback</a>, <a class="el" href="a05527.html#l00232">_ThreadId</a>, <a class="el" href="a05526.html#l00184">addCallbackArray()</a>, <a class="el" href="a05526.html#l00117">NLNET::cbnbMessageAssociationArray</a>, <a class="el" href="a05526.html#l00127">NLNET::cbnbNewDisconnection()</a>, <a class="el" href="a05621.html#l00900">NLMISC::createDebug()</a>, <a class="el" href="a05586.html#l00093">NLMISC::getThreadId()</a>, <a class="el" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw4">Record</a>, and <a class="el" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw5">Replay</a>.
+<p>
+<div class="fragment"><pre>00148 :
+00149 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp4">_FirstUpdate</a> (<span class="keyword">true</span>), <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser0">_DisconnectionCallback</a>(NULL), <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser1">_DisconnectionCbArg</a>(NULL)
+00150 #ifdef USE_MESSAGE_RECORDER
+00151 , _MR_RecordingState(rec), _MR_UpdateCounter(0)
+00152 #endif
+00153 {
+00154 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp9">_ThreadId</a> = <a class="code" href="a05378.html#a257">getThreadId</a> ();
+00155 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp7">_NewDisconnectionCallback</a> = <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBasen2">cbnbNewDisconnection</a>;
+00156
+00157 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp1">_BytesSent</a> = 0;
+00158 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp0">_BytesReceived</a> = 0;
+00159
+00160 <a class="code" href="a05378.html#a298">createDebug</a>(); <span class="comment">// for addNegativeFilter to work even in release and releasedebug modes</span>
+00161
+00162 <span class="comment">// add the callback needed to associate messages with id</span>
+00163 <a class="code" href="a02306.html#NLNET_1_1CCallbackServera0">addCallbackArray</a> (cbnbMessageAssociationArray, <span class="keyword">sizeof</span> (cbnbMessageAssociationArray) / <span class="keyword">sizeof</span> (cbnbMessageAssociationArray[0]));
+00164
+00165 <span class="preprocessor">#ifdef USE_MESSAGE_RECORDER</span>
+00166 <span class="preprocessor"></span> <span class="keywordflow">switch</span> ( _MR_RecordingState )
+00167 {
+00168 <span class="keywordflow">case</span> <a class="code" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw4">Record</a> :
+00169 _MR_Recorder.startRecord( recfilename, recordall );
+00170 <span class="keywordflow">break</span>;
+00171 <span class="keywordflow">case</span> <a class="code" href="a02306.html#NLNET_1_1CCallbackServerw8NLNET_1_1CCallbackServerw5">Replay</a> :
+00172 _MR_Recorder.startReplay( recfilename );
+00173 <span class="keywordflow">break</span>;
+00174 <span class="keywordflow">default</span>:;
+00175 <span class="comment">// No recording</span>
+00176 }
+00177 <span class="preprocessor">#endif</span>
+00178 <span class="preprocessor"></span>}
+
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NLNET_1_1CCallbackServera0" doxytag="NLNET::CCallbackNetBase::addCallbackArray" ></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::CCallbackNetBase::addCallbackArray </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03900.html">TCallbackItem</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>callbackarray</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03449.html#NLMISC_1_1CStringIdArrayw0">NLMISC::CStringIdArray::TStringId</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>arraysize</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>
+Appends callback array with the specified array. You can add callback only *after* adding the server or the client. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>arraysize</em>&nbsp;</td><td>is the number of callback items.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05526.html#l00184">184</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+References <a class="el" href="a05527.html#l00196">_CallbackArray</a>, <a class="el" href="a05527.html#l00193">_OutputSIDA</a>, <a class="el" href="a06468.html#l00059">NLMISC::CStringIdArray::addString()</a>, <a class="el" href="a05527.html#l00064">NLNET::TCallbackItem::Callback</a>, <a class="el" href="a05526.html#l00533">checkThreadId()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06468.html#l00142">NLMISC::CStringIdArray::resize()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06468.html#l00148">NLMISC::CStringIdArray::size()</a>, <a class="el" href="a06468.html#l00054">NLMISC::CStringIdArray::TStringId</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05524.html#l00059">NLNET::CCallbackClient::CCallbackClient()</a>, <a class="el" href="a05526.html#l00148">CCallbackNetBase()</a>, <a class="el" href="a06138.html#l00577">NLNET::CPacsClient::connect()</a>, <a class="el" href="a06089.html#l00239">NLNET::CNamingClient::connect()</a>, <a class="el" href="a05958.html#l00063">NLNET::CLoginClient::connectToShard()</a>, <a class="el" href="a06645.html#l00479">NLNET::CUnifiedNetwork::init()</a>, <a class="el" href="a05962.html#l00338">NLNET::CLoginServer::init()</a>, and <a class="el" href="a06650.html#l00280">NLNET::_CUniTime::installServer()</a>.
+<p>
+<div class="fragment"><pre>00185 {
+00186 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerb4">checkThreadId</a> ();
+00187
+00188 <span class="comment">// be sure that the 2 array have the same size</span>
+00189 <a class="code" href="a04199.html#a6">nlassert</a> (<a class="code" href="a02306.html#NLNET_1_1CCallbackServerp2">_CallbackArray</a>.size () == (<a class="code" href="a04558.html#a15">uint</a>)<a class="code" href="a02306.html#NLNET_1_1CCallbackServerp8">_OutputSIDA</a>.<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya12">size</a> ());
+00190
+00191 <span class="keywordflow">if</span> (arraysize == 1 &amp;&amp; callbackarray[0].Callback == NULL &amp;&amp; string(<span class="stringliteral">""</span>) == callbackarray[0].Key)
+00192 {
+00193 <span class="comment">// it's an empty array, ignore it</span>
+00194 <span class="keywordflow">return</span>;
+00195 }
+00196
+00197 <span class="comment">// resize the array</span>
+00198 <a class="code" href="a04558.html#a14">sint</a> oldsize = <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp2">_CallbackArray</a>.size();
+00199
+00200 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp2">_CallbackArray</a>.resize (oldsize + arraysize);
+00201 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp8">_OutputSIDA</a>.<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya11">resize</a> (oldsize + arraysize);
+00202
+00203 <span class="comment">//TOO MUCH MESSAGE nldebug ("L3NB_CB: Adding %d callback to the array", arraysize);</span>
+00204
+00205 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a14">sint</a> i = 0; i &lt; arraysize; i++)
+00206 {
+00207 <a class="code" href="a03449.html#NLMISC_1_1CStringIdArrayw0">CStringIdArray::TStringId</a> ni = oldsize + i;
+00208 <span class="comment">//TOO MUCH MESSAGE nldebug ("L3NB_CB: Adding callback to message '%s', id '%d'", callbackarray[i].Key, ni);</span>
+00209 <span class="comment">// copy callback value</span>
+00210
+00211 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp2">_CallbackArray</a>[ni] = callbackarray[i];
+00212 <span class="comment">// add the string to the string id array</span>
+00213 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp8">_OutputSIDA</a>.<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya1">addString</a> (callbackarray[i].Key, ni);
+00214
+00215 }
+00216 <span class="comment">// nldebug ("LNETL3NB_CB: Added %d callback Now, there're %d callback associated with message type", arraysize, _CallbackArray.size ());</span>
+00217 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServera1" doxytag="NLNET::CCallbackNetBase::authorizeOnly" ></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::CCallbackNetBase::authorizeOnly </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>callbackName</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>hostid</em> = <a class="el" href="a05379.html#a75">InvalidSockId</a></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>
+Sets the callback that you want the other side calls. If it didn't call this callback, it will be disconnected If cb is NULL, we authorize *all* callback. On a client, the hostid must be InvalidSockId (or ommited). On a server, you must provide a hostid.
+<p>
+Definition at line <a class="el" href="a05526.html#l00471">471</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+References <a class="el" href="a05514.html#l00329">NLNET::CBufSock::asString()</a>, <a class="el" href="a05515.html#l00070">NLNET::CBufSock::AuthorizedCallback</a>, <a class="el" href="a05526.html#l00533">checkThreadId()</a>, <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea15">getSockId()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, and <a class="el" href="a05511.html#l00042">NLNET::TSockId</a>.
+<p>
+Referenced by <a class="el" href="a05962.html#l00181">NLNET::cbShardValidation()</a>, and <a class="el" href="a05962.html#l00230">NLNET::ClientConnection()</a>.
+<p>
+<div class="fragment"><pre>00472 {
+00473 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerb4">checkThreadId</a> ();
+00474
+00475 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB: authorizeOnly (%s, %s)"</span>, callbackName, hostid-&gt;asString().c_str());
+00476
+00477 hostid = <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBasea15">getSockId</a> (hostid);
+00478
+00479 <a class="code" href="a04199.html#a6">nlassert</a> (hostid != InvalidSockId);
+00480
+00481 hostid-&gt;AuthorizedCallback = (callbackName == NULL)?<span class="stringliteral">""</span>:callbackName;
+00482 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerb3" doxytag="NLNET::CCallbackNetBase::baseUpdate" ></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::CCallbackNetBase::baseUpdate </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a10">sint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>timeout</em> = 0 </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>
+Used by client and server class.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05526.html#l00328">328</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+References <a class="el" href="a05527.html#l00202">_FirstUpdate</a>, <a class="el" href="a05527.html#l00188">_InputSIDA</a>, <a class="el" href="a05527.html#l00220">_LastMovedStringArray</a>, <a class="el" href="a05527.html#l00219">_LastUpdateTime</a>, <a class="el" href="a05526.html#l00533">checkThreadId()</a>, <a class="el" href="a05527.html#l00132">dataAvailable()</a>, <a class="el" href="a06468.html#l00160">NLMISC::CStringIdArray::getAskedStringArray()</a>, <a class="el" href="a06468.html#l00154">NLMISC::CStringIdArray::getNeedToAskedStringArray()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a06468.html#l00166">NLMISC::CStringIdArray::moveNeedToAskToAskedStringArray()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, <a class="el" href="a05586.html#l00073">NLMISC::nlSleep()</a>, <a class="el" href="a05526.html#l00223">processOneMessage()</a>, <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea19">send()</a>, <a class="el" href="a05979.html#l00420">NLMISC::CMemStream::serial()</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05646.html#l00645">size</a>, <a class="el" href="a06468.html#l00054">NLMISC::CStringIdArray::TStringId</a>, and <a class="el" href="a06553.html#l00047">NLMISC::TTime</a>.
+<p>
+Referenced by <a class="el" href="a05528.html#l00175">NLNET::CCallbackServer::update()</a>, and <a class="el" href="a05524.html#l00162">NLNET::CCallbackClient::update()</a>.
+<p>
+<div class="fragment"><pre>00329 {
+00330 <a class="code" href="a04365.html#a4">H_AUTO</a>(L3UpdateCallbackNetBase);
+00331
+00332 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerb4">checkThreadId</a> ();
+00333
+00334 <span class="comment">// slow down the layer H_AUTO (CCallbackNetBase_baseUpdate);</span>
+00335
+00336 <a class="code" href="a04199.html#a6">nlassert</a>( timeout &gt;= -1 );
+00337 <a class="code" href="a05378.html#a242">TTime</a> t0 = CTime::getLocalTime();
+00338
+00339 <span class="comment">//</span>
+00340 <span class="comment">// The first time, we init time counters</span>
+00341 <span class="comment">//</span>
+00342 <span class="keywordflow">if</span> (<a class="code" href="a02306.html#NLNET_1_1CCallbackServerp4">_FirstUpdate</a>)
+00343 {
+00344 <span class="comment">// nldebug("LNETL3NB: First update()");</span>
+00345 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp4">_FirstUpdate</a> = <span class="keyword">false</span>;
+00346 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser3">_LastUpdateTime</a> = t0;
+00347 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser2">_LastMovedStringArray</a> = t0;
+00348 }
+00349
+00350 <span class="comment">//</span>
+00351 <span class="comment">// Every 1 seconds if we have new unknown association, we ask them to the other side</span>
+00352 <span class="comment">//</span>
+00353 <span class="keywordflow">if</span> (t0 - <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser3">_LastUpdateTime</a> &gt; 1000)
+00354 {
+00355 <span class="comment">// nldebug("LNETL3NB: baseUpdate()");</span>
+00356 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser3">_LastUpdateTime</a> = t0;
+00357
+00358 <span class="keyword">const</span> set&lt;string&gt; &amp;sa = <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp5">_InputSIDA</a>.<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya7">getNeedToAskedStringArray</a> ();
+00359 <span class="keywordflow">if</span> (!sa.empty ())
+00360 {
+00361 <a class="code" href="a02918.html">CMessage</a> msgout (_InputSIDA, <span class="stringliteral">"AA"</span>);
+00362 <span class="comment">//nlassert (sa.size () &lt; 65536); // no size limit anymore</span>
+00363 <a class="code" href="a03449.html#NLMISC_1_1CStringIdArrayw0">CStringIdArray::TStringId</a> <a class="code" href="a04223.html#a587">size</a> = sa.size ();
+00364 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: I need %d string association, ask them to the other side"</span>, size);
+00365 msgout.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (size);
+00366 <span class="keywordflow">for</span> (set&lt;string&gt;::iterator it = sa.begin(); it != sa.end(); it++)
+00367 {
+00368 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: what is the id of '%s'?"</span>, (*it).c_str ());
+00369 string str(*it);
+00370 msgout.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (str);
+00371 }
+00372 <span class="comment">// send the message to the other side</span>
+00373 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBasea19">send</a> (msgout, 0);
+00374 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp5">_InputSIDA</a>.<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya10">moveNeedToAskToAskedStringArray</a>();
+00375 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser2">_LastMovedStringArray</a> = t0;
+00376 }
+00377 }
+00378
+00379 <span class="comment">//</span>
+00380 <span class="comment">// Every 60 seconds if we have not answered association, we ask again to get them!</span>
+00381 <span class="comment">//</span>
+00382 <span class="keywordflow">if</span> (!<a class="code" href="a02306.html#NLNET_1_1CCallbackServerp5">_InputSIDA</a>.<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya5">getAskedStringArray</a>().empty() &amp;&amp; t0 - <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser2">_LastMovedStringArray</a> &gt; 60000)
+00383 {
+00384 <span class="comment">// we didn't have an answer for the association, resend them</span>
+00385 <span class="keyword">const</span> set&lt;string&gt; sa = <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp5">_InputSIDA</a>.<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya5">getAskedStringArray</a> ();
+00386 <a class="code" href="a02918.html">CMessage</a> msgout (_InputSIDA, <span class="stringliteral">"AA"</span>);
+00387 <span class="comment">//nlassert (sa.size () &lt; 65536); // no size limit anymore</span>
+00388 <a class="code" href="a03449.html#NLMISC_1_1CStringIdArrayw0">CStringIdArray::TStringId</a> <a class="code" href="a04223.html#a587">size</a> = sa.size ();
+00389 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: client didn't answer my asked association, retry! I need %d string association, ask them to the other side"</span>, size);
+00390 msgout.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (size);
+00391 <span class="keywordflow">for</span> (set&lt;string&gt;::iterator it = sa.begin(); it != sa.end(); it++)
+00392 {
+00393 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: what is the id of '%s'?"</span>, (*it).c_str ());
+00394 string str(*it);
+00395 msgout.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (str);
+00396 }
+00397 <span class="comment">// sends the message to the other side</span>
+00398 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBasea19">send</a> (msgout, 0);
+00399 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser2">_LastMovedStringArray</a> = t0;
+00400 }
+00401
+00402 <span class="comment">/*</span>
+00403 <span class="comment"> * timeout -1 =&gt; read one message in the queue or nothing if no message in queue</span>
+00404 <span class="comment"> * timeout 0 =&gt; read all messages in the queue</span>
+00405 <span class="comment"> * timeout other =&gt; read all messages in the queue until timeout expired (at least all one time)</span>
+00406 <span class="comment"> */</span>
+00407
+00408 <span class="keywordtype">bool</span> exit = <span class="keyword">false</span>;
+00409
+00410 <span class="keywordflow">while</span> (!exit)
+00411 {
+00412 <span class="comment">// process all messages in the queue</span>
+00413 <span class="keywordflow">while</span> (<a class="code" href="a02306.html#NLNET_1_1CCallbackNetBasea3">dataAvailable</a> ())
+00414 {
+00415 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerb10">processOneMessage</a> ();
+00416 <span class="keywordflow">if</span> (timeout == -1)
+00417 {
+00418 exit = <span class="keyword">true</span>;
+00419 <span class="keywordflow">break</span>;
+00420 }
+00421 }
+00422
+00423 <span class="comment">// need to exit?</span>
+00424 <span class="keywordflow">if</span> (timeout == 0 || (<a class="code" href="a04558.html#a10">sint32</a>)(CTime::getLocalTime() - t0) &gt; timeout)
+00425 {
+00426 exit = <span class="keyword">true</span>;
+00427 }
+00428 <span class="keywordflow">else</span>
+00429 {
+00430 <span class="comment">// enable multithreading on windows :-/</span>
+00431 <span class="comment">// slow down the layer H_AUTO (CCallbackNetBase_baseUpdate_nlSleep);</span>
+00432 <a class="code" href="a05378.html#a256">nlSleep</a> (10);
+00433 }
+00434 }
+00435
+00436 <span class="preprocessor">#ifdef USE_MESSAGE_RECORDER</span>
+00437 <span class="preprocessor"></span> _MR_UpdateCounter++;
+00438 <span class="preprocessor">#endif</span>
+00439 <span class="preprocessor"></span>
+00440 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerb4" doxytag="NLNET::CCallbackNetBase::checkThreadId" ></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::CCallbackNetBase::checkThreadId </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> const<code> [protected]</code></td>
+ </tr>
+
+ </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="a05526.html#l00533">533</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00184">addCallbackArray()</a>, <a class="el" href="a05526.html#l00471">authorizeOnly()</a>, <a class="el" href="a05526.html#l00328">baseUpdate()</a>, <a class="el" href="a05524.html#l00286">NLNET::CCallbackClient::connect()</a>, <a class="el" href="a05529.html#l00067">NLNET::CCallbackServer::connected()</a>, <a class="el" href="a05525.html#l00069">NLNET::CCallbackClient::connected()</a>, <a class="el" href="a05528.html#l00283">NLNET::CCallbackServer::dataAvailable()</a>, <a class="el" href="a05524.html#l00192">NLNET::CCallbackClient::dataAvailable()</a>, <a class="el" href="a05528.html#l00246">NLNET::CCallbackServer::disconnect()</a>, <a class="el" href="a05524.html#l00354">NLNET::CCallbackClient::disconnect()</a>, <a class="el" href="a05526.html#l00464">displayAllMyAssociations()</a>, <a class="el" href="a05529.html#l00055">NLNET::CCallbackServer::flush()</a>, <a class="el" href="a05524.html#l00134">NLNET::CCallbackClient::flush()</a>, <a class="el" href="a05528.html#l00268">NLNET::CCallbackServer::getSockId()</a>, <a class="el" href="a05524.html#l00272">NLNET::CCallbackClient::getSockId()</a>, <a class="el" href="a05529.html#l00077">NLNET::CCallbackServer::hostAddress()</a>, <a class="el" href="a05527.html#l00126">isAServer()</a>, <a class="el" href="a05526.html#l00223">processOneMessage()</a>, <a class="el" href="a05528.html#l00205">NLNET::CCallbackServer::receive()</a>, <a class="el" href="a05524.html#l00220">NLNET::CCallbackClient::receive()</a>, <a class="el" href="a05528.html#l00124">NLNET::CCallbackServer::send()</a>, <a class="el" href="a05524.html#l00079">NLNET::CCallbackClient::send()</a>, <a class="el" href="a05528.html#l00091">NLNET::CCallbackServer::sendAllMyAssociations()</a>, <a class="el" href="a05529.html#l00061">NLNET::CCallbackServer::setConnectionCallback()</a>, <a class="el" href="a05529.html#l00064">NLNET::CCallbackServer::setDisconnectionCallback()</a>, <a class="el" href="a05527.html#l00113">setDisconnectionCallback()</a>, <a class="el" href="a05525.html#l00080">NLNET::CCallbackClient::setDisconnectionCallback()</a>, <a class="el" href="a05526.html#l00451">setOtherSideAssociations()</a>, <a class="el" href="a05528.html#l00175">NLNET::CCallbackServer::update()</a>, and <a class="el" href="a05524.html#l00162">NLNET::CCallbackClient::update()</a>.
+<p>
+<div class="fragment"><pre>00534 {
+00535 <span class="comment">/* some people use this class in different thread but with a mutex to be sure to have</span>
+00536 <span class="comment"> no concurent access</span>
+00537 <span class="comment"> if (getThreadId () != _ThreadId)</span>
+00538 <span class="comment"> {</span>
+00539 <span class="comment"> nlerror ("You try to access to the same CCallbackClient or CCallbackServer with 2 differents thread (%d and %d)", _ThreadId, getThreadId());</span>
+00540 <span class="comment"> }</span>
+00541 <span class="comment">*/</span>
+00542 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea2" doxytag="NLNET::CCallbackNetBase::connected" ></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"> virtual bool NLNET::CCallbackNetBase::connected </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> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is implemented in the client and server class.
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta6">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera5">NLNET::CCallbackServer</a>.
+<p>
+Definition at line <a class="el" href="a05527.html#l00136">136</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05622.html#l00416">nlstop</a>.
+<p>
+<div class="fragment"><pre>00136 { <a class="code" href="a04199.html#a12">nlstop</a>; <span class="keywordflow">return</span> <span class="keyword">false</span>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea3" doxytag="NLNET::CCallbackNetBase::dataAvailable" ></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"> virtual bool NLNET::CCallbackNetBase::dataAvailable </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><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is implemented in the client and server class.
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClientd0">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServerd0">NLNET::CCallbackServer</a>.
+<p>
+Definition at line <a class="el" href="a05527.html#l00132">132</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05622.html#l00416">nlstop</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00328">baseUpdate()</a>.
+<p>
+<div class="fragment"><pre>00132 { <a class="code" href="a04199.html#a12">nlstop</a>; <span class="keywordflow">return</span> <span class="keyword">false</span>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea4" doxytag="NLNET::CCallbackNetBase::disconnect" ></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"> virtual void NLNET::CCallbackNetBase::disconnect </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02303.html">TSockId</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>hostid</em> = <a class="el" href="a05379.html#a75">InvalidSockId</a> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is implemented in the client and server class.
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta8">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera7">NLNET::CCallbackServer</a>.
+<p>
+Definition at line <a class="el" href="a05527.html#l00138">138</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05622.html#l00416">nlstop</a>, and <a class="el" href="a05511.html#l00042">NLNET::TSockId</a>.
+<p>
+Referenced by <a class="el" href="a05962.html#l00181">NLNET::cbShardValidation()</a>, <a class="el" href="a05526.html#l00223">processOneMessage()</a>, <a class="el" href="a06646.html#l00285">NLNET::CUnifiedNetwork::CUnifiedConnection::TConnection::reset()</a>, and <a class="el" href="a06645.html#l00284">NLNET::uncbServiceIdentification()</a>.
+<p>
+<div class="fragment"><pre>00138 { <a class="code" href="a04199.html#a12">nlstop</a>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServera8" doxytag="NLNET::CCallbackNetBase::displayAllMyAssociations" ></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::CCallbackNetBase::displayAllMyAssociations </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>
+
+<p>
+Definition at line <a class="el" href="a05526.html#l00464">464</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+References <a class="el" href="a05527.html#l00193">_OutputSIDA</a>, <a class="el" href="a05526.html#l00533">checkThreadId()</a>, and <a class="el" href="a06468.html#l00187">NLMISC::CStringIdArray::display()</a>.
+<p>
+Referenced by <a class="el" href="a05958.html#l00063">NLNET::CLoginClient::connectToShard()</a>.
+<p>
+<div class="fragment"><pre>00465 {
+00466 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerb4">checkThreadId</a> ();
+00467
+00468 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp8">_OutputSIDA</a>.<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya4">display</a> ();
+00469 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea6" doxytag="NLNET::CCallbackNetBase::displayReceiveQueueStat" ></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"> virtual void NLNET::CCallbackNetBase::displayReceiveQueueStat </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02813.html">NLMISC::CLog</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>log</em> = <a class="el" href="a05378.html#a12">NLMISC::InfoLog</a> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta10">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera9">NLNET::CCallbackServer</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea7" doxytag="NLNET::CCallbackNetBase::displaySendQueueStat" ></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"> virtual void NLNET::CCallbackNetBase::displaySendQueueStat </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02813.html">NLMISC::CLog</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>log</em> = <a class="el" href="a05378.html#a12">NLMISC::InfoLog</a>, </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>destid</em> = <a class="el" href="a05379.html#a75">InvalidSockId</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta12">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera10">NLNET::CCallbackServer</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea8" doxytag="NLNET::CCallbackNetBase::displayThreadStat" ></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"> virtual void NLNET::CCallbackNetBase::displayThreadStat </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02813.html">NLMISC::CLog</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>log</em> = <a class="el" href="a05378.html#a12">NLMISC::InfoLog</a> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta13">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera11">NLNET::CCallbackServer</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea9" doxytag="NLNET::CCallbackNetBase::flush" ></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"> virtual bool NLNET::CCallbackNetBase::flush </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02303.html">TSockId</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>hostid</em> = <a class="el" href="a05379.html#a75">InvalidSockId</a> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Force to send all data pending in the send queue. On a client, the hostid isn't used and must be InvalidSockId On a server, you must provide a hostid.
+<p>
+Implemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta15">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera12">NLNET::CCallbackServer</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServera13" doxytag="NLNET::CCallbackNetBase::getBytesReceived" ></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="a04558.html#a13">uint64</a> NLNET::CCallbackNetBase::getBytesReceived </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><code> [inline]</code></td>
+ </tr>
+
+ </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="a05527.html#l00088">88</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05527.html#l00167">_BytesReceived</a>, and <a class="el" href="a05981.html#l00102">uint64</a>.
+<p>
+Referenced by <a class="el" href="a06645.html#l01263">NLNET::CUnifiedNetwork::getBytesReceived()</a>.
+<p>
+<div class="fragment"><pre>00088 { <span class="keywordflow">return</span> <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp0">_BytesReceived</a>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServera14" doxytag="NLNET::CCallbackNetBase::getBytesSent" ></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="a04558.html#a13">uint64</a> NLNET::CCallbackNetBase::getBytesSent </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><code> [inline]</code></td>
+ </tr>
+
+ </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="a05527.html#l00087">87</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05527.html#l00167">_BytesSent</a>, and <a class="el" href="a05981.html#l00102">uint64</a>.
+<p>
+Referenced by <a class="el" href="a06645.html#l01239">NLNET::CUnifiedNetwork::getBytesSent()</a>.
+<p>
+<div class="fragment"><pre>00087 { <span class="keywordflow">return</span> <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp1">_BytesSent</a>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea12" doxytag="NLNET::CCallbackNetBase::getReceiveQueueSize" ></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"> virtual <a class="el" href="a04558.html#a13">uint64</a> NLNET::CCallbackNetBase::getReceiveQueueSize </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><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta18">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera15">NLNET::CCallbackServer</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea13" doxytag="NLNET::CCallbackNetBase::getSendQueueSize" ></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"> virtual <a class="el" href="a04558.html#a13">uint64</a> NLNET::CCallbackNetBase::getSendQueueSize </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><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta20">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera17">NLNET::CCallbackServer</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServera18" doxytag="NLNET::CCallbackNetBase::getSIDA" ></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="a03449.html">NLMISC::CStringIdArray</a>&amp; NLNET::CCallbackNetBase::getSIDA </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><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Use this function to get the String ID Array needed when you want to create a message.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05527.html#l00129">129</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05527.html#l00188">_InputSIDA</a>.
+<p>
+Referenced by <a class="el" href="a05524.html#l00043">NLNET::cbcMessageRecvAllAssociations()</a>, <a class="el" href="a05526.html#l00088">NLNET::cbnbMessageAskAssociations()</a>, <a class="el" href="a05526.html#l00055">NLNET::cbnbMessageRecvAssociations()</a>, <a class="el" href="a06650.html#l00262">NLNET::cbServerAskUniversalTime()</a>, <a class="el" href="a05962.html#l00181">NLNET::cbShardValidation()</a>, <a class="el" href="a05958.html#l00063">NLNET::CLoginClient::connectToShard()</a>, <a class="el" href="a06094.html#l00123">NLNET::CNetDisplayer::doDisplay()</a>, <a class="el" href="a06089.html#l00411">NLNET::CNamingClient::queryServicePort()</a>, <a class="el" href="a06089.html#l00302">NLNET::CNamingClient::registerService()</a>, <a class="el" href="a06089.html#l00340">NLNET::CNamingClient::registerServiceWithSId()</a>, <a class="el" href="a06089.html#l00373">NLNET::CNamingClient::resendRegisteration()</a>, <a class="el" href="a05528.html#l00091">NLNET::CCallbackServer::sendAllMyAssociations()</a>, <a class="el" href="a05526.html#l00451">setOtherSideAssociations()</a>, and <a class="el" href="a06089.html#l00385">NLNET::CNamingClient::unregisterService()</a>.
+<p>
+<div class="fragment"><pre>00129 { <span class="keywordflow">return</span> <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp5">_InputSIDA</a>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea15" doxytag="NLNET::CCallbackNetBase::getSockId" ></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"> virtual <a class="el" href="a02303.html">TSockId</a> NLNET::CCallbackNetBase::getSockId </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02303.html">TSockId</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>hostid</em> = <a class="el" href="a05379.html#a75">InvalidSockId</a> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+returns the sockid of a connection. On a server, this function returns the parameter. On a client, it returns the connection.
+<p>
+
+<p>
+Implemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta22">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera19">NLNET::CCallbackServer</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00471">authorizeOnly()</a>, <a class="el" href="a06646.html#l00275">NLNET::CUnifiedNetwork::CUnifiedConnection::TConnection::getAppId()</a>, <a class="el" href="a05526.html#l00223">processOneMessage()</a>, and <a class="el" href="a06646.html#l00274">NLNET::CUnifiedNetwork::CUnifiedConnection::TConnection::setAppId()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea16" doxytag="NLNET::CCallbackNetBase::hostAddress" ></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"> const <a class="el" href="a02665.html">CInetAddress</a> &amp; NLNET::CCallbackNetBase::hostAddress </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02303.html">TSockId</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>hostid</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the address of the specified host.
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta23">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera20">NLNET::CCallbackServer</a>.
+<p>
+Definition at line <a class="el" href="a05526.html#l00443">443</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+References <a class="el" href="a05622.html#l00416">nlstop</a>, and <a class="el" href="a05511.html#l00042">NLNET::TSockId</a>.
+<p>
+Referenced by <a class="el" href="a06650.html#l00262">NLNET::cbServerAskUniversalTime()</a>, <a class="el" href="a05962.html#l00181">NLNET::cbShardValidation()</a>, and <a class="el" href="a06645.html#l00284">NLNET::uncbServiceIdentification()</a>.
+<p>
+<div class="fragment"><pre>00444 {
+00445 <span class="comment">// should never be called</span>
+00446 <a class="code" href="a04199.html#a12">nlstop</a>;
+00447 <span class="keyword">static</span> <a class="code" href="a02665.html">CInetAddress</a> tmp;
+00448 <span class="keywordflow">return</span> tmp;
+00449 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServera21" doxytag="NLNET::CCallbackNetBase::ignoreAllUnknownId" ></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::CCallbackNetBase::ignoreAllUnknownId </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>b</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+If you ignore all unknown id, the net will not ask for other side to know new association. It's used in the naming service for example because the naming client will never answer. In this case, it will always send the message with the full string name (slower)
+<p>
+Definition at line <a class="el" href="a05527.html#l00157">157</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05527.html#l00188">_InputSIDA</a>, and <a class="el" href="a06468.html#l00176">NLMISC::CStringIdArray::ignoreAllUnknownId()</a>.
+<p>
+<div class="fragment"><pre>00158 {
+00159 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp5">_InputSIDA</a>.<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya9">ignoreAllUnknownId</a> (b);
+00160 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServera23" doxytag="NLNET::CCallbackNetBase::isAServer" ></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::CCallbackNetBase::isAServer </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns true if this is a <a class="el" href="a02307.html">CCallbackServer</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05527.html#l00126">126</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05527.html#l00201">_IsAServer</a>, and <a class="el" href="a05526.html#l00533">checkThreadId()</a>.
+<p>
+<div class="fragment"><pre>00126 { <a class="code" href="a02306.html#NLNET_1_1CCallbackServerb4">checkThreadId</a> (); <span class="keywordflow">return</span> <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp6">_IsAServer</a>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerb10" doxytag="NLNET::CCallbackNetBase::processOneMessage" ></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::CCallbackNetBase::processOneMessage </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><code> [protected]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Read a message from the network and process it.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05526.html#l00223">223</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+References <a class="el" href="a05527.html#l00167">_BytesReceived</a>, <a class="el" href="a05527.html#l00196">_CallbackArray</a>, <a class="el" href="a05527.html#l00199">_DefaultCallback</a>, <a class="el" href="a05527.html#l00193">_OutputSIDA</a>, <a class="el" href="a05514.html#l00329">NLNET::CBufSock::asString()</a>, <a class="el" href="a05515.html#l00070">NLNET::CBufSock::AuthorizedCallback</a>, <a class="el" href="a05526.html#l00533">checkThreadId()</a>, <a class="el" href="a05527.html#l00138">disconnect()</a>, <a class="el" href="a06026.html#l00432">NLNET::CMessage::getId()</a>, <a class="el" href="a06026.html#l00411">NLNET::CMessage::getName()</a>, <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea15">getSockId()</a>, <a class="el" href="a06027.html#l00104">NLNET::CMessage::length()</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaseb4">receive()</a>, <a class="el" href="a05981.html#l00097">sint16</a>, <a class="el" href="a05527.html#l00055">NLNET::TMsgCallback</a>, <a class="el" href="a06026.html#l00441">NLNET::CMessage::toString()</a>, <a class="el" href="a05511.html#l00042">NLNET::TSockId</a>, <a class="el" href="a06468.html#l00054">NLMISC::CStringIdArray::TStringId</a>, and <a class="el" href="a06027.html#l00239">NLNET::CMessage::TypeHasAnId</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00328">baseUpdate()</a>.
+<p>
+<div class="fragment"><pre>00224 {
+00225 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerb4">checkThreadId</a> ();
+00226
+00227 <span class="comment">// slow down the layer H_AUTO (CCallbackNetBase_processOneMessage);</span>
+00228
+00229 <a class="code" href="a02918.html">CMessage</a> msgin (_OutputSIDA, <span class="stringliteral">""</span>, <span class="keyword">true</span>);
+00230 <a class="code" href="a05379.html#a74">TSockId</a> tsid;
+00231 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaseb4">receive</a> (msgin, &amp;tsid);
+00232
+00233 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp0">_BytesReceived</a> += msgin.<a class="code" href="a02918.html#NLNET_1_1CMessagea24">length</a> ();
+00234
+00235 <span class="comment">// now, we have to call the good callback</span>
+00236 <a class="code" href="a03449.html#NLMISC_1_1CStringIdArrayw0">NLMISC::CStringIdArray::TStringId</a> pos = -1;
+00237 <span class="keywordflow">if</span> (msgin.<a class="code" href="a02918.html#NLNET_1_1CMessageo1">TypeHasAnId</a>)
+00238 {
+00239 pos = msgin.<a class="code" href="a02918.html#NLNET_1_1CMessagea15">getId</a> ();
+00240 }
+00241 <span class="keywordflow">else</span>
+00242 {
+00243 std::string name = msgin.<a class="code" href="a02918.html#NLNET_1_1CMessagea16">getName</a> ();
+00244 <a class="code" href="a04558.html#a8">sint16</a> i;
+00245 <span class="keywordflow">for</span> (i = 0; i &lt; (<a class="code" href="a04558.html#a8">sint16</a>) <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp2">_CallbackArray</a>.size (); i++)
+00246 {
+00247 <span class="keywordflow">if</span> (name == <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp2">_CallbackArray</a>[i].Key)
+00248 {
+00249 pos = i;
+00250 <span class="keywordflow">break</span>;
+00251 }
+00252 }
+00253 }
+00254
+00255 <a class="code" href="a05379.html#a83">TMsgCallback</a> cb = NULL;
+00256 <span class="keywordflow">if</span> (pos &lt; 0 || pos &gt;= (<a class="code" href="a04558.html#a8">sint16</a>) <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp2">_CallbackArray</a>.size ())
+00257 {
+00258 <span class="keywordflow">if</span> (<a class="code" href="a02306.html#NLNET_1_1CCallbackServerp3">_DefaultCallback</a> == NULL)
+00259 {
+00260 <a class="code" href="a04199.html#a2">nlwarning</a> (<span class="stringliteral">"LNETL3NB_CB: Callback %s not found in _CallbackArray"</span>, msgin.<a class="code" href="a02918.html#NLNET_1_1CMessagea63">toString</a>().c_str());
+00261 }
+00262 <span class="keywordflow">else</span>
+00263 {
+00264 cb = <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp3">_DefaultCallback</a>;
+00265 }
+00266 }
+00267 <span class="keywordflow">else</span>
+00268 {
+00269 cb = <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp2">_CallbackArray</a>[pos].Callback;
+00270 }
+00271
+00272 <a class="code" href="a05379.html#a74">TSockId</a> realid = <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBasea15">getSockId</a> (tsid);
+00273
+00274 <span class="keywordflow">if</span> (!realid-&gt;AuthorizedCallback.empty() &amp;&amp; msgin.<a class="code" href="a02918.html#NLNET_1_1CMessagea16">getName</a>() != realid-&gt;AuthorizedCallback)
+00275 {
+00276 <a class="code" href="a04199.html#a2">nlwarning</a> (<span class="stringliteral">"LNETL3NB_CB: %s try to call the callback %s but only %s is authorized. Disconnect him!"</span>, tsid-&gt;asString().c_str(), msgin.<a class="code" href="a02918.html#NLNET_1_1CMessagea63">toString</a>().c_str(), tsid-&gt;AuthorizedCallback.c_str());
+00277 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBasea4">disconnect</a> (tsid);
+00278 }
+00279 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cb == NULL)
+00280 {
+00281 <a class="code" href="a04199.html#a2">nlwarning</a> (<span class="stringliteral">"LNETL3NB_CB: Callback %s is NULL, can't call it"</span>, msgin.<a class="code" href="a02918.html#NLNET_1_1CMessagea63">toString</a>().c_str());
+00282 }
+00283 <span class="keywordflow">else</span>
+00284 {
+00285 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_CB: Calling callback (%s)%s"</span>, msgin.<a class="code" href="a02918.html#NLNET_1_1CMessagea16">getName</a>().c_str(), (cb==<a class="code" href="a02306.html#NLNET_1_1CCallbackServerp3">_DefaultCallback</a>)?<span class="stringliteral">" DEFAULT_CB"</span>:<span class="stringliteral">""</span>);
+00286 cb(msgin, realid, *<span class="keyword">this</span>);
+00287 }
+00288
+00289 <span class="comment">/*</span>
+00290 <span class="comment"> if (pos &lt; 0 || pos &gt;= (sint16) _CallbackArray.size ())</span>
+00291 <span class="comment"> {</span>
+00292 <span class="comment"> if (_DefaultCallback == NULL)</span>
+00293 <span class="comment"> nlwarning ("LNETL3NB_CB: Callback %s not found in _CallbackArray", msgin.toString().c_str());</span>
+00294 <span class="comment"> else</span>
+00295 <span class="comment"> {</span>
+00296 <span class="comment"> // ...</span>
+00297 <span class="comment"> }</span>
+00298 <span class="comment"> }</span>
+00299 <span class="comment"> else</span>
+00300 <span class="comment"> {</span>
+00301 <span class="comment"> TSockId realid = getSockId (tsid);</span>
+00302 <span class="comment"></span>
+00303 <span class="comment"> if (!realid-&gt;AuthorizedCallback.empty() &amp;&amp; msgin.getName() != realid-&gt;AuthorizedCallback)</span>
+00304 <span class="comment"> {</span>
+00305 <span class="comment"> nlwarning ("LNETL3NB_CB: %s try to call the callback %s but only %s is authorized. Disconnect him!", tsid-&gt;asString().c_str(), msgin.toString().c_str(), tsid-&gt;AuthorizedCallback.c_str());</span>
+00306 <span class="comment"> disconnect (tsid);</span>
+00307 <span class="comment"> }</span>
+00308 <span class="comment"> else if (_CallbackArray[pos].Callback == NULL)</span>
+00309 <span class="comment"> {</span>
+00310 <span class="comment"> nlwarning ("LNETL3NB_CB: Callback %s is NULL, can't call it", msgin.toString().c_str());</span>
+00311 <span class="comment"> }</span>
+00312 <span class="comment"> else</span>
+00313 <span class="comment"> {</span>
+00314 <span class="comment"> nldebug ("LNETL3NB_CB: Calling callback (%s)", _CallbackArray[pos].Key);</span>
+00315 <span class="comment"> _CallbackArray[pos].Callback (msgin, realid, *this);</span>
+00316 <span class="comment"> }</span>
+00317 <span class="comment"> }</span>
+00318 <span class="comment">*/</span>
+00319 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBaseb4" doxytag="NLNET::CCallbackNetBase::receive" ></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"> virtual void NLNET::CCallbackNetBase::receive </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02918.html">CMessage</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>buffer</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>hostid</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+On this layer, you can't call directly receive, It s the <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBasea24">update()</a> function that receive and call your callaback.
+<p>
+
+<p>
+Implemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClientd1">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServerd1">NLNET::CCallbackServer</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00223">processOneMessage()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea19" doxytag="NLNET::CCallbackNetBase::send" ></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"> virtual void NLNET::CCallbackNetBase::send </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02918.html">CMessage</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>buffer</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>hostid</em> = <a class="el" href="a05379.html#a75">InvalidSockId</a>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>log</em> = true</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sends a message to special connection. On a client, the hostid isn't used. On a server, you must provide a hostid. If you hostid = InvalidSockId, the message will be sent to all connected client.
+<p>
+Implemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta33">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera31">NLNET::CCallbackServer</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00328">baseUpdate()</a>, <a class="el" href="a05526.html#l00088">NLNET::cbnbMessageAskAssociations()</a>, <a class="el" href="a06650.html#l00262">NLNET::cbServerAskUniversalTime()</a>, <a class="el" href="a05962.html#l00181">NLNET::cbShardValidation()</a>, and <a class="el" href="a06645.html#l02048">NLNET::NLMISC_COMMAND()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea20" doxytag="NLNET::CCallbackNetBase::sendAllMyAssociations" ></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::CCallbackNetBase::sendAllMyAssociations </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02303.html">TSockId</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>to</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>
+Used by client and server class.
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02307.html#NLNET_1_1CCallbackServerd3">NLNET::CCallbackServer</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServera33" doxytag="NLNET::CCallbackNetBase::setDefaultCallback" ></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::CCallbackNetBase::setDefaultCallback </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a05379.html#a83">TMsgCallback</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>defaultCallback</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets default callback for unknown message types.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05527.html#l00110">110</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05527.html#l00199">_DefaultCallback</a>, and <a class="el" href="a05527.html#l00055">NLNET::TMsgCallback</a>.
+<p>
+Referenced by <a class="el" href="a06645.html#l00653">NLNET::CUnifiedNetwork::addService()</a>, and <a class="el" href="a06645.html#l00479">NLNET::CUnifiedNetwork::init()</a>.
+<p>
+<div class="fragment"><pre>00110 { <a class="code" href="a02306.html#NLNET_1_1CCallbackServerp3">_DefaultCallback</a> = defaultCallback; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea22" doxytag="NLNET::CCallbackNetBase::setDisconnectionCallback" ></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::CCallbackNetBase::setDisconnectionCallback </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a05379.html#a76">TNetCallback</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>cb</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>arg</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets callback for disconnections (or NULL to disable callback).
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta36">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera34">NLNET::CCallbackServer</a>.
+<p>
+Definition at line <a class="el" href="a05527.html#l00113">113</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05526.html#l00533">checkThreadId()</a>, and <a class="el" href="a05511.html#l00047">NLNET::TNetCallback</a>.
+<p>
+<div class="fragment"><pre>00113 { <a class="code" href="a02306.html#NLNET_1_1CCallbackServerb4">checkThreadId</a> (); <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser0">_DisconnectionCallback</a> = cb; <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaser1">_DisconnectionCbArg</a> = arg; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServera37" doxytag="NLNET::CCallbackNetBase::setOtherSideAssociations" ></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::CCallbackNetBase::setOtherSideAssociations </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char **&nbsp;</td>
+ <td class="mdname" nowrap> <em>associationarray</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03449.html#NLMISC_1_1CStringIdArrayw0">NLMISC::CStringIdArray::TStringId</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>arraysize</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>
+Gives some association of the other side. The goal is, in specific case, we don't want to ask associations to the other side (client is not secure for example). In this case, we can set other side associations by hand using this functions.
+<p>
+Definition at line <a class="el" href="a05526.html#l00451">451</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+References <a class="el" href="a06468.html#l00059">NLMISC::CStringIdArray::addString()</a>, <a class="el" href="a05526.html#l00533">checkThreadId()</a>, <a class="el" href="a05527.html#l00129">getSIDA()</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a06468.html#l00054">NLMISC::CStringIdArray::TStringId</a>.
+<p>
+<div class="fragment"><pre>00452 {
+00453 <a class="code" href="a02306.html#NLNET_1_1CCallbackServerb4">checkThreadId</a> ();
+00454
+00455 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: setOtherSideAssociations() sets %d association strings"</span>, arraysize);
+00456
+00457 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a14">sint</a> i = 0; i &lt; arraysize; i++)
+00458 {
+00459 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: association '%s' -&gt; %d"</span>, associationarray[i], i);
+00460 <a class="code" href="a02306.html#NLNET_1_1CCallbackServera18">getSIDA</a>().<a class="code" href="a03449.html#NLMISC_1_1CStringIdArraya1">addString</a> (associationarray[i], i);
+00461 }
+00462 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasea24" doxytag="NLNET::CCallbackNetBase::update" ></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"> virtual void NLNET::CCallbackNetBase::update </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a10">sint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>timeout</em> = 0 </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is implemented in the client and server class.
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02305.html#NLNET_1_1CCallbackClienta43">NLNET::CCallbackClient</a>, and <a class="el" href="a02307.html#NLNET_1_1CCallbackServera41">NLNET::CCallbackServer</a>.
+<p>
+Definition at line <a class="el" href="a05527.html#l00134">134</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+References <a class="el" href="a05622.html#l00416">nlstop</a>, and <a class="el" href="a05981.html#l00099">sint32</a>.
+<p>
+<div class="fragment"><pre>00134 { <a class="code" href="a04199.html#a12">nlstop</a>; }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Friends And Related Function Documentation</h2>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasen0" doxytag="NLNET::CCallbackNetBase::cbnbMessageAskAssociations" ></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 cbnbMessageAskAssociations </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02918.html">CMessage</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>msgin</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>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02306.html">CCallbackNetBase</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>netbase</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [friend]</code></td>
+ </tr>
+
+ </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="a05526.html#l00088">88</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+<div class="fragment"><pre>00089 {
+00090 <a class="code" href="a02918.html">CMessage</a> msgout (netbase.getSIDA(), <span class="stringliteral">"RA"</span>);
+00091 <a class="code" href="a03449.html#NLMISC_1_1CStringIdArrayw0">CStringIdArray::TStringId</a> <a class="code" href="a04223.html#a587">size</a>;
+00092 msgin.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (size);
+00093
+00094 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: The other side want %d string associations"</span>, size);
+00095
+00096 msgout.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (size);
+00097
+00098 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a14">sint</a> i = 0; i &lt; <a class="code" href="a04223.html#a587">size</a>; i++)
+00099 {
+00100 string name;
+00101 msgin.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (name);
+00102 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: sending association '%s' -&gt; %d"</span>, name.c_str (), netbase._OutputSIDA.getId(name));
+00103
+00104 <span class="comment">// if this assert occurs, it means that the other side ask an unknown message</span>
+00105 <span class="comment">// or that there are different types of client (with differents callbackarray) and one of the client doesn't have this callback</span>
+00106 <a class="code" href="a04199.html#a6">nlassert</a>(netbase._OutputSIDA.getId(name) != -1);
+00107
+00108 msgout.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (name);
+00109
+00110 <a class="code" href="a03449.html#NLMISC_1_1CStringIdArrayw0">CStringIdArray::TStringId</a> <span class="keywordtype">id</span> = netbase._OutputSIDA.getId (name);
+00111 msgout.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (<span class="keywordtype">id</span>);
+00112 }
+00113 <span class="comment">// send the message to the other side</span>
+00114 netbase.send (msgout, from);
+00115 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasen1" doxytag="NLNET::CCallbackNetBase::cbnbMessageRecvAssociations" ></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 cbnbMessageRecvAssociations </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02918.html">CMessage</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>msgin</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>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02306.html">CCallbackNetBase</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>netbase</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [friend]</code></td>
+ </tr>
+
+ </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="a05526.html#l00055">55</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+<div class="fragment"><pre>00056 {
+00057 <span class="comment">// receive a new message association</span>
+00058
+00059 <a class="code" href="a03449.html#NLMISC_1_1CStringIdArrayw0">CStringIdArray::TStringId</a> <a class="code" href="a04223.html#a587">size</a>;
+00060 msgin.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (size);
+00061
+00062 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: The other side gave me %d association strings"</span>, size);
+00063
+00064 <span class="keywordflow">for</span> (<a class="code" href="a03449.html#NLMISC_1_1CStringIdArrayw0">CStringIdArray::TStringId</a> i = 0; i &lt; <a class="code" href="a04223.html#a587">size</a>; i++)
+00065 {
+00066 std::string name;
+00067 <a class="code" href="a03449.html#NLMISC_1_1CStringIdArrayw0">CStringIdArray::TStringId</a> <span class="keywordtype">id</span>;
+00068
+00069 msgin.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (name);
+00070 msgin.<a class="code" href="a02271.html#NLNET_1_1CMessagea41">serial</a> (<span class="keywordtype">id</span>);
+00071
+00072 <span class="comment">// if id == -1, it means that there are no callback associated to this message</span>
+00073 <span class="comment">// it should not happen, it mean that one side send a message that the other side</span>
+00074 <span class="comment">// can't manage in his callbackarray.</span>
+00075 <span class="comment">// to resolve the problem, add the callback in the callbackarray in the other side</span>
+00076 <span class="comment">// and put NULL if you don't want to manage this message</span>
+00077 <a class="code" href="a04199.html#a6">nlassert</a> (<span class="keywordtype">id</span> != -1);
+00078
+00079 <a class="code" href="a04199.html#a0">nldebug</a> (<span class="stringliteral">"LNETL3NB_ASSOC: association '%s' -&gt; %d"</span>, name.c_str (), <span class="keywordtype">id</span>);
+00080 netbase.getSIDA().addString (name, <span class="keywordtype">id</span>);
+00081 }
+00082 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBasen2" doxytag="NLNET::CCallbackNetBase::cbnbNewDisconnection" ></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 cbnbNewDisconnection </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02303.html">TSockId</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [friend]</code></td>
+ </tr>
+
+ </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="a05526.html#l00127">127</a> of file <a class="el" href="a05526.html">callback_net_base.cpp</a>.
+<p>
+<div class="fragment"><pre>00128 {
+00129 <a class="code" href="a04199.html#a6">nlassert</a> (data != NULL);
+00130 <a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaseb1">CCallbackNetBase</a> *base = (<a class="code" href="a02306.html#NLNET_1_1CCallbackNetBaseb1">CCallbackNetBase</a> *)<a class="code" href="a04223.html#a637">data</a>;
+00131
+00132 <a class="code" href="a04199.html#a0">nldebug</a>(<span class="stringliteral">"LNETL3NB: cbnbNewDisconnection()"</span>);
+00133
+00134 <span class="preprocessor">#ifdef USE_MESSAGE_RECORDER</span>
+00135 <span class="preprocessor"></span> <span class="comment">// Record or replay disconnection</span>
+00136 base-&gt;noticeDisconnection( from );
+00137 <span class="preprocessor">#endif</span>
+00138 <span class="preprocessor"></span>
+00139 <span class="comment">// Call the client callback if necessary</span>
+00140 <span class="keywordflow">if</span> (base-&gt;_DisconnectionCallback != NULL)
+00141 base-&gt;_DisconnectionCallback (from, base-&gt;_DisconnectionCbArg);
+00142 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NLNET_1_1CCallbackServerp0" doxytag="NLNET::CCallbackNetBase::_BytesReceived" ></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="a04558.html#a13">uint64</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackServerp0">NLNET::CCallbackNetBase::_BytesReceived</a><code> [protected]</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="a05527.html#l00167">167</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00148">CCallbackNetBase()</a>, <a class="el" href="a05527.html#l00088">getBytesReceived()</a>, and <a class="el" href="a05526.html#l00223">processOneMessage()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerp1" doxytag="NLNET::CCallbackNetBase::_BytesSent" ></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="a04558.html#a13">uint64</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackServerp1">NLNET::CCallbackNetBase::_BytesSent</a><code> [protected]</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="a05527.html#l00167">167</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00148">CCallbackNetBase()</a>, and <a class="el" href="a05527.html#l00087">getBytesSent()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerp2" doxytag="NLNET::CCallbackNetBase::_CallbackArray" ></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::vector&lt;<a class="el" href="a03900.html">TCallbackItem</a>&gt; <a class="el" href="a02306.html#NLNET_1_1CCallbackServerp2">NLNET::CCallbackNetBase::_CallbackArray</a><code> [protected]</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="a05527.html#l00196">196</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00184">addCallbackArray()</a>, and <a class="el" href="a05526.html#l00223">processOneMessage()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerp3" doxytag="NLNET::CCallbackNetBase::_DefaultCallback" ></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#a83">TMsgCallback</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackServerp3">NLNET::CCallbackNetBase::_DefaultCallback</a><code> [protected]</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="a05527.html#l00199">199</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00223">processOneMessage()</a>, and <a class="el" href="a05527.html#l00110">setDefaultCallback()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBaser0" doxytag="NLNET::CCallbackNetBase::_DisconnectionCallback" ></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#a76">TNetCallback</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaser0">NLNET::CCallbackNetBase::_DisconnectionCallback</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="a05527.html#l00222">222</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00127">NLNET::cbnbNewDisconnection()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBaser1" doxytag="NLNET::CCallbackNetBase::_DisconnectionCbArg" ></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* <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaser1">NLNET::CCallbackNetBase::_DisconnectionCbArg</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="a05527.html#l00223">223</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00127">NLNET::cbnbNewDisconnection()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerp4" doxytag="NLNET::CCallbackNetBase::_FirstUpdate" ></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="a02306.html#NLNET_1_1CCallbackServerp4">NLNET::CCallbackNetBase::_FirstUpdate</a><code> [protected]</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="a05527.html#l00202">202</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00328">baseUpdate()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerp5" doxytag="NLNET::CCallbackNetBase::_InputSIDA" ></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="a03449.html">NLMISC::CStringIdArray</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackServerp5">NLNET::CCallbackNetBase::_InputSIDA</a><code> [protected]</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="a05527.html#l00188">188</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00328">baseUpdate()</a>, <a class="el" href="a05527.html#l00129">getSIDA()</a>, and <a class="el" href="a05527.html#l00157">ignoreAllUnknownId()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerp6" doxytag="NLNET::CCallbackNetBase::_IsAServer" ></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="a02306.html#NLNET_1_1CCallbackServerp6">NLNET::CCallbackNetBase::_IsAServer</a><code> [protected]</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="a05527.html#l00201">201</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05527.html#l00126">isAServer()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBaser2" doxytag="NLNET::CCallbackNetBase::_LastMovedStringArray" ></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="a05378.html#a242">NLMISC::TTime</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaser2">NLNET::CCallbackNetBase::_LastMovedStringArray</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="a05527.html#l00220">220</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00328">baseUpdate()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackNetBaser3" doxytag="NLNET::CCallbackNetBase::_LastUpdateTime" ></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="a05378.html#a242">NLMISC::TTime</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackNetBaser3">NLNET::CCallbackNetBase::_LastUpdateTime</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="a05527.html#l00219">219</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00328">baseUpdate()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerp7" doxytag="NLNET::CCallbackNetBase::_NewDisconnectionCallback" ></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#a76">TNetCallback</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackServerp7">NLNET::CCallbackNetBase::_NewDisconnectionCallback</a><code> [protected]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used by client and server class.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05527.html#l00170">170</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00148">CCallbackNetBase()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerp8" doxytag="NLNET::CCallbackNetBase::_OutputSIDA" ></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="a03449.html">NLMISC::CStringIdArray</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackServerp8">NLNET::CCallbackNetBase::_OutputSIDA</a><code> [protected]</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="a05527.html#l00193">193</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00184">addCallbackArray()</a>, <a class="el" href="a05526.html#l00088">NLNET::cbnbMessageAskAssociations()</a>, <a class="el" href="a05526.html#l00464">displayAllMyAssociations()</a>, and <a class="el" href="a05526.html#l00223">processOneMessage()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLNET_1_1CCallbackServerp9" doxytag="NLNET::CCallbackNetBase::_ThreadId" ></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="a04558.html#a15">uint</a> <a class="el" href="a02306.html#NLNET_1_1CCallbackServerp9">NLNET::CCallbackNetBase::_ThreadId</a><code> [protected]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000049">Todo:</a></b></dt><dd>ace: debug feature that we should remove one day nefore releasing the game</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05527.html#l00232">232</a> of file <a class="el" href="a05527.html">callback_net_base.h</a>.
+<p>
+Referenced by <a class="el" href="a05526.html#l00148">CCallbackNetBase()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a05527.html">callback_net_base.h</a><li><a class="el" href="a05526.html">callback_net_base.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 13:55:30 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>