]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - docs/module-doc/classInspSocket.html
Fixed 'fake direction' messages being put out by user->registered = 7 being set too...
[user/henk/code/inspircd.git] / docs / module-doc / classInspSocket.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>InspIRCd: InspSocket Class Reference</title>
4 <link href="inspircd.doxygen.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.4.4-20050815 -->
7 <div class="qindex"><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">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</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">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
8 <h1>InspSocket Class Reference</h1><!-- doxytag: class="InspSocket" --><code>#include &lt;<a class="el" href="socket_8h-source.html">socket.h</a>&gt;</code>
9 <p>
10 Collaboration diagram for InspSocket:<p><center><img src="classInspSocket__coll__graph.gif" border="0" usemap="#InspSocket__coll__map" alt="Collaboration graph"></center>
11 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classInspSocket-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
12 <tr><td></td></tr>
13 <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
14 <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#InspSocket_28_29">InspSocket</a> ()</td></tr>
15
16 <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#InspSocket_28int_20newfd_29">InspSocket</a> (int newfd)</td></tr>
17
18 <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29">InspSocket</a> (<a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classInspSocket.html#host">host</a>, int <a class="el" href="classInspSocket.html#port">port</a>, bool listening, unsigned long maxtime)</td></tr>
19
20 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#OnConnected_28_29">OnConnected</a> ()</td></tr>
21
22 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a> (<a class="el" href="socket_8h.html#InspSocketError">InspSocketError</a> e)</td></tr>
23
24 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#OnDisconnect_28_29">OnDisconnect</a> ()</td></tr>
25
26 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a> ()</td></tr>
27
28 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a> ()</td></tr>
29
30 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#OnClose_28_29">OnClose</a> ()</td></tr>
31
32 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#Read_28_29">Read</a> ()</td></tr>
33
34 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">Write</a> (<a class="el" href="namespaceirc.html#string">std::string</a> data)</td></tr>
35
36 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a> (int newfd, char *ip)</td></tr>
37
38 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a> (<a class="el" href="socket_8h.html#InspSocketState">InspSocketState</a> s)</td></tr>
39
40 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="socket_8h.html#InspSocketState">InspSocketState</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#GetState_28_29">GetState</a> ()</td></tr>
41
42 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#Poll_28_29">Poll</a> ()</td></tr>
43
44 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#Close_28_29">Close</a> ()</td></tr>
45
46 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#_7EInspSocket_28_29">~InspSocket</a> ()</td></tr>
47
48 <tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
49 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#fd">fd</a></td></tr>
50
51 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#host">host</a></td></tr>
52
53 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#port">port</a></td></tr>
54
55 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="socket_8h.html#InspSocketState">InspSocketState</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#state">state</a></td></tr>
56
57 <tr><td class="memItemLeft" nowrap align="right" valign="top">sockaddr_in&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#addr">addr</a></td></tr>
58
59 <tr><td class="memItemLeft" nowrap align="right" valign="top">in_addr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#addy">addy</a></td></tr>
60
61 <tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#timeout_5Fend">timeout_end</a></td></tr>
62
63 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#timeout">timeout</a></td></tr>
64
65 <tr><td class="memItemLeft" nowrap align="right" valign="top">pollfd&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#polls">polls</a></td></tr>
66
67 <tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#ibuf_5B_31_30_32_34_5D">ibuf</a> [1024]</td></tr>
68
69 <tr><td class="memItemLeft" nowrap align="right" valign="top">sockaddr_in&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#client">client</a></td></tr>
70
71 <tr><td class="memItemLeft" nowrap align="right" valign="top">sockaddr_in&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#server">server</a></td></tr>
72
73 <tr><td class="memItemLeft" nowrap align="right" valign="top">socklen_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#length">length</a></td></tr>
74
75 </table>
76 <hr><a name="_details"></a><h2>Detailed Description</h2>
77
78 <p>
79
80 <p>
81 Definition at line <a class="el" href="socket_8h-source.html#l00030">30</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
82 <a class="anchor" name="InspSocket_28_29"></a><!-- doxytag: member="InspSocket::InspSocket" ref="InspSocket_28_29" args="()" --><p>
83 <table class="mdTable" cellpadding="2" cellspacing="0">
84   <tr>
85     <td class="mdRow">
86       <table cellpadding="0" cellspacing="0" border="0">
87         <tr>
88           <td class="md" nowrap valign="top">InspSocket::InspSocket           </td>
89           <td class="md" valign="top">(&nbsp;</td>
90           <td class="mdname1" valign="top" nowrap>          </td>
91           <td class="md" valign="top">&nbsp;)&nbsp;</td>
92           <td class="md" nowrap></td>
93         </tr>
94       </table>
95     </td>
96   </tr>
97 </table>
98 <table cellspacing="5" cellpadding="0" border="0">
99   <tr>
100     <td>
101       &nbsp;
102     </td>
103     <td>
104
105 <p>
106
107 <p>
108 Definition at line <a class="el" href="socket_8cpp-source.html#l00046">46</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
109 <p>
110 References <a class="el" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>, and <a class="el" href="socket_8h-source.html#l00036">state</a>.<div class="fragment"><pre class="fragment"><a name="l00047"></a>00047 {
111 <a name="l00048"></a>00048         this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>;
112 <a name="l00049"></a>00049 }
113 </pre></div>
114 <p>
115     </td>
116   </tr>
117 </table>
118 <a class="anchor" name="InspSocket_28int_20newfd_29"></a><!-- doxytag: member="InspSocket::InspSocket" ref="InspSocket_28int_20newfd_29" args="(int newfd)" --><p>
119 <table class="mdTable" cellpadding="2" cellspacing="0">
120   <tr>
121     <td class="mdRow">
122       <table cellpadding="0" cellspacing="0" border="0">
123         <tr>
124           <td class="md" nowrap valign="top">InspSocket::InspSocket           </td>
125           <td class="md" valign="top">(&nbsp;</td>
126           <td class="md" nowrap valign="top">int&nbsp;</td>
127           <td class="mdname1" valign="top" nowrap> <em>newfd</em>          </td>
128           <td class="md" valign="top">&nbsp;)&nbsp;</td>
129           <td class="md" nowrap></td>
130         </tr>
131       </table>
132     </td>
133   </tr>
134 </table>
135 <table cellspacing="5" cellpadding="0" border="0">
136   <tr>
137     <td>
138       &nbsp;
139     </td>
140     <td>
141
142 <p>
143
144 <p>
145 Definition at line <a class="el" href="socket_8cpp-source.html#l00051">51</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
146 <p>
147 References <a class="el" href="socket_8h-source.html#l00033">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, and <a class="el" href="socket_8h-source.html#l00036">state</a>.<div class="fragment"><pre class="fragment"><a name="l00052"></a>00052 {
148 <a name="l00053"></a>00053         this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = newfd;
149 <a name="l00054"></a>00054         this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>;
150 <a name="l00055"></a>00055 }
151 </pre></div>
152 <p>
153     </td>
154   </tr>
155 </table>
156 <a class="anchor" name="InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29"></a><!-- doxytag: member="InspSocket::InspSocket" ref="InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29" args="(std::string host, int port, bool listening, unsigned long maxtime)" --><p>
157 <table class="mdTable" cellpadding="2" cellspacing="0">
158   <tr>
159     <td class="mdRow">
160       <table cellpadding="0" cellspacing="0" border="0">
161         <tr>
162           <td class="md" nowrap valign="top">InspSocket::InspSocket           </td>
163           <td class="md" valign="top">(&nbsp;</td>
164           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td>
165           <td class="mdname" nowrap> <em>host</em>, </td>
166         </tr>
167         <tr>
168           <td class="md" nowrap align="right"></td>
169           <td class="md"></td>
170           <td class="md" nowrap>int&nbsp;</td>
171           <td class="mdname" nowrap> <em>port</em>, </td>
172         </tr>
173         <tr>
174           <td class="md" nowrap align="right"></td>
175           <td class="md"></td>
176           <td class="md" nowrap>bool&nbsp;</td>
177           <td class="mdname" nowrap> <em>listening</em>, </td>
178         </tr>
179         <tr>
180           <td class="md" nowrap align="right"></td>
181           <td class="md"></td>
182           <td class="md" nowrap>unsigned long&nbsp;</td>
183           <td class="mdname" nowrap> <em>maxtime</em></td>
184         </tr>
185         <tr>
186           <td class="md"></td>
187           <td class="md">)&nbsp;</td>
188           <td class="md" colspan="2"></td>
189         </tr>
190       </table>
191     </td>
192   </tr>
193 </table>
194 <table cellspacing="5" cellpadding="0" border="0">
195   <tr>
196     <td>
197       &nbsp;
198     </td>
199     <td>
200
201 <p>
202
203 <p>
204 Definition at line <a class="el" href="socket_8cpp-source.html#l00057">57</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
205 <p>
206 References <a class="el" href="socket_8h-source.html#l00037">addr</a>, <a class="el" href="socket_8h-source.html#l00038">addy</a>, <a class="el" href="socket_8cpp-source.html#l00130">Close()</a>, <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, <a class="el" href="socket_8h-source.html#l00033">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8cpp-source.html#l00239">OnError()</a>, <a class="el" href="socket_8h-source.html#l00036">state</a>, <a class="el" href="socket_8h-source.html#l00040">timeout</a>, and <a class="el" href="socket_8h-source.html#l00039">timeout_end</a>.<div class="fragment"><pre class="fragment"><a name="l00058"></a>00058 {
207 <a name="l00059"></a>00059         <span class="keywordflow">if</span> (listening) {
208 <a name="l00060"></a>00060                 <span class="keywordflow">if</span> ((this-&gt;fd = OpenTCPSocket()) == ERROR)
209 <a name="l00061"></a>00061                 {
210 <a name="l00062"></a>00062                         this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
211 <a name="l00063"></a>00063                         this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
212 <a name="l00064"></a>00064                         this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
213 <a name="l00065"></a>00065                         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>);
214 <a name="l00066"></a>00066                         <span class="keywordflow">return</span>;
215 <a name="l00067"></a>00067                 }
216 <a name="l00068"></a>00068                 <span class="keywordflow">else</span>
217 <a name="l00069"></a>00069                 {
218 <a name="l00070"></a>00070                         <span class="keywordflow">if</span> (BindSocket(this-&gt;fd,this-&gt;client,this-&gt;server,<a class="code" href="classInspSocket.html#port">port</a>,(<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str()) == ERROR)
219 <a name="l00071"></a>00071                         {
220 <a name="l00072"></a>00072                                 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
221 <a name="l00073"></a>00073                                 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
222 <a name="l00074"></a>00074                                 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
223 <a name="l00075"></a>00075                                 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>);
224 <a name="l00076"></a>00076                                 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno));
225 <a name="l00077"></a>00077                                 <span class="keywordflow">return</span>;
226 <a name="l00078"></a>00078                         }
227 <a name="l00079"></a>00079                         <span class="keywordflow">else</span>
228 <a name="l00080"></a>00080                         {
229 <a name="l00081"></a>00081                                 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>;
230 <a name="l00082"></a>00082                                 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>);
231 <a name="l00083"></a>00083                                 <span class="keywordflow">return</span>;
232 <a name="l00084"></a>00084                         }
233 <a name="l00085"></a>00085                 }                       
234 <a name="l00086"></a>00086         } <span class="keywordflow">else</span> {
235 <a name="l00087"></a>00087                 <span class="keywordtype">char</span>* ip;
236 <a name="l00088"></a>00088                 this-&gt;<a class="code" href="classInspSocket.html#host">host</a> = <a class="code" href="classInspSocket.html#host">host</a>;
237 <a name="l00089"></a>00089                 hostent* hoste = gethostbyname(<a class="code" href="classInspSocket.html#host">host</a>.c_str());
238 <a name="l00090"></a>00090                 <span class="keywordflow">if</span> (!hoste) {
239 <a name="l00091"></a>00091                         ip = (<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str();
240 <a name="l00092"></a>00092                 } <span class="keywordflow">else</span> {
241 <a name="l00093"></a>00093                         <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste-&gt;h_addr;
242 <a name="l00094"></a>00094                         ip = inet_ntoa(*ia);
243 <a name="l00095"></a>00095                 }
244 <a name="l00096"></a>00096 
245 <a name="l00097"></a>00097                 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime;
246 <a name="l00098"></a>00098                 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>;
247 <a name="l00099"></a>00099                 <span class="keywordflow">if</span> ((this-&gt;fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
248 <a name="l00100"></a>00100                 {
249 <a name="l00101"></a>00101                         this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
250 <a name="l00102"></a>00102                         this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
251 <a name="l00103"></a>00103                         <span class="keywordflow">return</span>;
252 <a name="l00104"></a>00104                 }
253 <a name="l00105"></a>00105                 this-&gt;<a class="code" href="classInspSocket.html#port">port</a> = <a class="code" href="classInspSocket.html#port">port</a>;
254 <a name="l00106"></a>00106                 inet_aton(ip,&amp;<a class="code" href="classInspSocket.html#addy">addy</a>);
255 <a name="l00107"></a>00107                 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET;
256 <a name="l00108"></a>00108                 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>;
257 <a name="l00109"></a>00109                 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this-&gt;port);
258 <a name="l00110"></a>00110 
259 <a name="l00111"></a>00111                 <span class="keywordtype">int</span> flags;
260 <a name="l00112"></a>00112                 flags = fcntl(this-&gt;fd, F_GETFL, 0);
261 <a name="l00113"></a>00113                 fcntl(this-&gt;fd, F_SETFL, flags | O_NONBLOCK);
262 <a name="l00114"></a>00114 
263 <a name="l00115"></a>00115                 <span class="keywordflow">if</span>(connect(this-&gt;fd, (sockaddr*)&amp;this-&gt;addr,<span class="keyword">sizeof</span>(this-&gt;addr)) == -1)
264 <a name="l00116"></a>00116                 {
265 <a name="l00117"></a>00117                         <span class="keywordflow">if</span> (errno != EINPROGRESS)
266 <a name="l00118"></a>00118                         {
267 <a name="l00119"></a>00119                                 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
268 <a name="l00120"></a>00120                                 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>);
269 <a name="l00121"></a>00121                                 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
270 <a name="l00122"></a>00122                                 <span class="keywordflow">return</span>;
271 <a name="l00123"></a>00123                         }
272 <a name="l00124"></a>00124                 }
273 <a name="l00125"></a>00125                 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>;
274 <a name="l00126"></a>00126                 <span class="keywordflow">return</span>;
275 <a name="l00127"></a>00127         }
276 <a name="l00128"></a>00128 }
277 </pre></div>
278 <p>
279     </td>
280   </tr>
281 </table>
282 <a class="anchor" name="_7EInspSocket_28_29"></a><!-- doxytag: member="InspSocket::~InspSocket" ref="_7EInspSocket_28_29" args="()" --><p>
283 <table class="mdTable" cellpadding="2" cellspacing="0">
284   <tr>
285     <td class="mdRow">
286       <table cellpadding="0" cellspacing="0" border="0">
287         <tr>
288           <td class="md" nowrap valign="top">InspSocket::~InspSocket           </td>
289           <td class="md" valign="top">(&nbsp;</td>
290           <td class="mdname1" valign="top" nowrap>          </td>
291           <td class="md" valign="top">&nbsp;)&nbsp;</td>
292           <td class="md" nowrap><code> [virtual]</code></td>
293         </tr>
294       </table>
295     </td>
296   </tr>
297 </table>
298 <table cellspacing="5" cellpadding="0" border="0">
299   <tr>
300     <td>
301       &nbsp;
302     </td>
303     <td>
304
305 <p>
306
307 <p>
308 Definition at line <a class="el" href="socket_8cpp-source.html#l00246">246</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
309 <p>
310 References <a class="el" href="socket_8cpp-source.html#l00130">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00247"></a>00247 {
311 <a name="l00248"></a>00248         this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
312 <a name="l00249"></a>00249 }
313 </pre></div>
314 <p>
315     </td>
316   </tr>
317 </table>
318 <hr><h2>Member Function Documentation</h2>
319 <a class="anchor" name="Close_28_29"></a><!-- doxytag: member="InspSocket::Close" ref="Close_28_29" args="()" --><p>
320 <table class="mdTable" cellpadding="2" cellspacing="0">
321   <tr>
322     <td class="mdRow">
323       <table cellpadding="0" cellspacing="0" border="0">
324         <tr>
325           <td class="md" nowrap valign="top">void InspSocket::Close           </td>
326           <td class="md" valign="top">(&nbsp;</td>
327           <td class="mdname1" valign="top" nowrap>          </td>
328           <td class="md" valign="top">&nbsp;)&nbsp;</td>
329           <td class="md" nowrap><code> [virtual]</code></td>
330         </tr>
331       </table>
332     </td>
333   </tr>
334 </table>
335 <table cellspacing="5" cellpadding="0" border="0">
336   <tr>
337     <td>
338       &nbsp;
339     </td>
340     <td>
341
342 <p>
343
344 <p>
345 Definition at line <a class="el" href="socket_8cpp-source.html#l00130">130</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
346 <p>
347 References <a class="el" href="socket_8h-source.html#l00033">fd</a>, and <a class="el" href="socket_8cpp-source.html#l00244">OnClose()</a>.
348 <p>
349 Referenced by <a class="el" href="socket_8cpp-source.html#l00057">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00246">~InspSocket()</a>.<div class="fragment"><pre class="fragment"><a name="l00131"></a>00131 {
350 <a name="l00132"></a>00132         <span class="keywordflow">if</span> (this-&gt;fd != -1)
351 <a name="l00133"></a>00133         {
352 <a name="l00134"></a>00134                 this-&gt;<a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
353 <a name="l00135"></a>00135                 shutdown(this-&gt;fd,2);
354 <a name="l00136"></a>00136                 close(this-&gt;fd);
355 <a name="l00137"></a>00137                 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
356 <a name="l00138"></a>00138         }
357 <a name="l00139"></a>00139 }
358 </pre></div>
359 <p>
360     </td>
361   </tr>
362 </table>
363 <a class="anchor" name="GetState_28_29"></a><!-- doxytag: member="InspSocket::GetState" ref="GetState_28_29" args="()" --><p>
364 <table class="mdTable" cellpadding="2" cellspacing="0">
365   <tr>
366     <td class="mdRow">
367       <table cellpadding="0" cellspacing="0" border="0">
368         <tr>
369           <td class="md" nowrap valign="top"><a class="el" href="socket_8h.html#InspSocketState">InspSocketState</a> InspSocket::GetState           </td>
370           <td class="md" valign="top">(&nbsp;</td>
371           <td class="mdname1" valign="top" nowrap>          </td>
372           <td class="md" valign="top">&nbsp;)&nbsp;</td>
373           <td class="md" nowrap></td>
374         </tr>
375       </table>
376     </td>
377   </tr>
378 </table>
379 <table cellspacing="5" cellpadding="0" border="0">
380   <tr>
381     <td>
382       &nbsp;
383     </td>
384     <td>
385
386 <p>
387
388 <p>
389 Definition at line <a class="el" href="socket_8cpp-source.html#l00233">233</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
390 <p>
391 References <a class="el" href="socket_8h-source.html#l00036">state</a>.<div class="fragment"><pre class="fragment"><a name="l00234"></a>00234 {
392 <a name="l00235"></a>00235         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#state">state</a>;
393 <a name="l00236"></a>00236 }
394 </pre></div>
395 <p>
396     </td>
397   </tr>
398 </table>
399 <a class="anchor" name="OnClose_28_29"></a><!-- doxytag: member="InspSocket::OnClose" ref="OnClose_28_29" args="()" --><p>
400 <table class="mdTable" cellpadding="2" cellspacing="0">
401   <tr>
402     <td class="mdRow">
403       <table cellpadding="0" cellspacing="0" border="0">
404         <tr>
405           <td class="md" nowrap valign="top">void InspSocket::OnClose           </td>
406           <td class="md" valign="top">(&nbsp;</td>
407           <td class="mdname1" valign="top" nowrap>          </td>
408           <td class="md" valign="top">&nbsp;)&nbsp;</td>
409           <td class="md" nowrap><code> [virtual]</code></td>
410         </tr>
411       </table>
412     </td>
413   </tr>
414 </table>
415 <table cellspacing="5" cellpadding="0" border="0">
416   <tr>
417     <td>
418       &nbsp;
419     </td>
420     <td>
421
422 <p>
423
424 <p>
425 Definition at line <a class="el" href="socket_8cpp-source.html#l00244">244</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
426 <p>
427 Referenced by <a class="el" href="socket_8cpp-source.html#l00130">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00244"></a>00244 { <span class="keywordflow">return</span>; }
428 </pre></div>
429 <p>
430     </td>
431   </tr>
432 </table>
433 <a class="anchor" name="OnConnected_28_29"></a><!-- doxytag: member="InspSocket::OnConnected" ref="OnConnected_28_29" args="()" --><p>
434 <table class="mdTable" cellpadding="2" cellspacing="0">
435   <tr>
436     <td class="mdRow">
437       <table cellpadding="0" cellspacing="0" border="0">
438         <tr>
439           <td class="md" nowrap valign="top">bool InspSocket::OnConnected           </td>
440           <td class="md" valign="top">(&nbsp;</td>
441           <td class="mdname1" valign="top" nowrap>          </td>
442           <td class="md" valign="top">&nbsp;)&nbsp;</td>
443           <td class="md" nowrap><code> [virtual]</code></td>
444         </tr>
445       </table>
446     </td>
447   </tr>
448 </table>
449 <table cellspacing="5" cellpadding="0" border="0">
450   <tr>
451     <td>
452       &nbsp;
453     </td>
454     <td>
455
456 <p>
457
458 <p>
459 Definition at line <a class="el" href="socket_8cpp-source.html#l00238">238</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
460 <p>
461 Referenced by <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00238"></a>00238 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
462 </pre></div>
463 <p>
464     </td>
465   </tr>
466 </table>
467 <a class="anchor" name="OnDataReady_28_29"></a><!-- doxytag: member="InspSocket::OnDataReady" ref="OnDataReady_28_29" args="()" --><p>
468 <table class="mdTable" cellpadding="2" cellspacing="0">
469   <tr>
470     <td class="mdRow">
471       <table cellpadding="0" cellspacing="0" border="0">
472         <tr>
473           <td class="md" nowrap valign="top">bool InspSocket::OnDataReady           </td>
474           <td class="md" valign="top">(&nbsp;</td>
475           <td class="mdname1" valign="top" nowrap>          </td>
476           <td class="md" valign="top">&nbsp;)&nbsp;</td>
477           <td class="md" nowrap><code> [virtual]</code></td>
478         </tr>
479       </table>
480     </td>
481   </tr>
482 </table>
483 <table cellspacing="5" cellpadding="0" border="0">
484   <tr>
485     <td>
486       &nbsp;
487     </td>
488     <td>
489
490 <p>
491
492 <p>
493 Definition at line <a class="el" href="socket_8cpp-source.html#l00242">242</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
494 <p>
495 Referenced by <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00242"></a>00242 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
496 </pre></div>
497 <p>
498     </td>
499   </tr>
500 </table>
501 <a class="anchor" name="OnDisconnect_28_29"></a><!-- doxytag: member="InspSocket::OnDisconnect" ref="OnDisconnect_28_29" args="()" --><p>
502 <table class="mdTable" cellpadding="2" cellspacing="0">
503   <tr>
504     <td class="mdRow">
505       <table cellpadding="0" cellspacing="0" border="0">
506         <tr>
507           <td class="md" nowrap valign="top">int InspSocket::OnDisconnect           </td>
508           <td class="md" valign="top">(&nbsp;</td>
509           <td class="mdname1" valign="top" nowrap>          </td>
510           <td class="md" valign="top">&nbsp;)&nbsp;</td>
511           <td class="md" nowrap><code> [virtual]</code></td>
512         </tr>
513       </table>
514     </td>
515   </tr>
516 </table>
517 <table cellspacing="5" cellpadding="0" border="0">
518   <tr>
519     <td>
520       &nbsp;
521     </td>
522     <td>
523
524 <p>
525
526 <p>
527 Definition at line <a class="el" href="socket_8cpp-source.html#l00240">240</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00240"></a>00240 { <span class="keywordflow">return</span> 0; }
528 </pre></div>
529 <p>
530     </td>
531   </tr>
532 </table>
533 <a class="anchor" name="OnError_28InspSocketError_20e_29"></a><!-- doxytag: member="InspSocket::OnError" ref="OnError_28InspSocketError_20e_29" args="(InspSocketError e)" --><p>
534 <table class="mdTable" cellpadding="2" cellspacing="0">
535   <tr>
536     <td class="mdRow">
537       <table cellpadding="0" cellspacing="0" border="0">
538         <tr>
539           <td class="md" nowrap valign="top">void InspSocket::OnError           </td>
540           <td class="md" valign="top">(&nbsp;</td>
541           <td class="md" nowrap valign="top"><a class="el" href="socket_8h.html#InspSocketError">InspSocketError</a>&nbsp;</td>
542           <td class="mdname1" valign="top" nowrap> <em>e</em>          </td>
543           <td class="md" valign="top">&nbsp;)&nbsp;</td>
544           <td class="md" nowrap><code> [virtual]</code></td>
545         </tr>
546       </table>
547     </td>
548   </tr>
549 </table>
550 <table cellspacing="5" cellpadding="0" border="0">
551   <tr>
552     <td>
553       &nbsp;
554     </td>
555     <td>
556
557 <p>
558
559 <p>
560 Definition at line <a class="el" href="socket_8cpp-source.html#l00239">239</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
561 <p>
562 Referenced by <a class="el" href="socket_8cpp-source.html#l00057">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00239"></a>00239 { <span class="keywordflow">return</span>; }
563 </pre></div>
564 <p>
565     </td>
566   </tr>
567 </table>
568 <a class="anchor" name="OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29"></a><!-- doxytag: member="InspSocket::OnIncomingConnection" ref="OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29" args="(int newfd, char *ip)" --><p>
569 <table class="mdTable" cellpadding="2" cellspacing="0">
570   <tr>
571     <td class="mdRow">
572       <table cellpadding="0" cellspacing="0" border="0">
573         <tr>
574           <td class="md" nowrap valign="top">int InspSocket::OnIncomingConnection           </td>
575           <td class="md" valign="top">(&nbsp;</td>
576           <td class="md" nowrap valign="top">int&nbsp;</td>
577           <td class="mdname" nowrap> <em>newfd</em>, </td>
578         </tr>
579         <tr>
580           <td class="md" nowrap align="right"></td>
581           <td class="md"></td>
582           <td class="md" nowrap>char *&nbsp;</td>
583           <td class="mdname" nowrap> <em>ip</em></td>
584         </tr>
585         <tr>
586           <td class="md"></td>
587           <td class="md">)&nbsp;</td>
588           <td class="md" colspan="2"><code> [virtual]</code></td>
589         </tr>
590       </table>
591     </td>
592   </tr>
593 </table>
594 <table cellspacing="5" cellpadding="0" border="0">
595   <tr>
596     <td>
597       &nbsp;
598     </td>
599     <td>
600
601 <p>
602
603 <p>
604 Definition at line <a class="el" href="socket_8cpp-source.html#l00241">241</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
605 <p>
606 Referenced by <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00241"></a>00241 { <span class="keywordflow">return</span> 0; }
607 </pre></div>
608 <p>
609     </td>
610   </tr>
611 </table>
612 <a class="anchor" name="OnTimeout_28_29"></a><!-- doxytag: member="InspSocket::OnTimeout" ref="OnTimeout_28_29" args="()" --><p>
613 <table class="mdTable" cellpadding="2" cellspacing="0">
614   <tr>
615     <td class="mdRow">
616       <table cellpadding="0" cellspacing="0" border="0">
617         <tr>
618           <td class="md" nowrap valign="top">void InspSocket::OnTimeout           </td>
619           <td class="md" valign="top">(&nbsp;</td>
620           <td class="mdname1" valign="top" nowrap>          </td>
621           <td class="md" valign="top">&nbsp;)&nbsp;</td>
622           <td class="md" nowrap><code> [virtual]</code></td>
623         </tr>
624       </table>
625     </td>
626   </tr>
627 </table>
628 <table cellspacing="5" cellpadding="0" border="0">
629   <tr>
630     <td>
631       &nbsp;
632     </td>
633     <td>
634
635 <p>
636
637 <p>
638 Definition at line <a class="el" href="socket_8cpp-source.html#l00243">243</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
639 <p>
640 Referenced by <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00243"></a>00243 { <span class="keywordflow">return</span>; }
641 </pre></div>
642 <p>
643     </td>
644   </tr>
645 </table>
646 <a class="anchor" name="Poll_28_29"></a><!-- doxytag: member="InspSocket::Poll" ref="Poll_28_29" args="()" --><p>
647 <table class="mdTable" cellpadding="2" cellspacing="0">
648   <tr>
649     <td class="mdRow">
650       <table cellpadding="0" cellspacing="0" border="0">
651         <tr>
652           <td class="md" nowrap valign="top">bool InspSocket::Poll           </td>
653           <td class="md" valign="top">(&nbsp;</td>
654           <td class="mdname1" valign="top" nowrap>          </td>
655           <td class="md" valign="top">&nbsp;)&nbsp;</td>
656           <td class="md" nowrap></td>
657         </tr>
658       </table>
659     </td>
660   </tr>
661 </table>
662 <table cellspacing="5" cellpadding="0" border="0">
663   <tr>
664     <td>
665       &nbsp;
666     </td>
667     <td>
668
669 <p>
670
671 <p>
672 Definition at line <a class="el" href="socket_8cpp-source.html#l00183">183</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
673 <p>
674 References <a class="el" href="socket_8h-source.html#l00043">client</a>, <a class="el" href="socket_8h-source.html#l00033">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00045">length</a>, <a class="el" href="socket_8cpp-source.html#l00238">OnConnected()</a>, <a class="el" href="socket_8cpp-source.html#l00242">OnDataReady()</a>, <a class="el" href="socket_8cpp-source.html#l00239">OnError()</a>, <a class="el" href="socket_8cpp-source.html#l00241">OnIncomingConnection()</a>, <a class="el" href="socket_8cpp-source.html#l00243">OnTimeout()</a>, <a class="el" href="socket_8h-source.html#l00041">polls</a>, <a class="el" href="socket_8cpp-source.html#l00227">SetState()</a>, <a class="el" href="socket_8h-source.html#l00036">state</a>, <a class="el" href="socket_8h-source.html#l00040">timeout</a>, and <a class="el" href="socket_8h-source.html#l00039">timeout_end</a>.<div class="fragment"><pre class="fragment"><a name="l00184"></a>00184 {
675 <a name="l00185"></a>00185         <span class="keywordflow">if</span> ((time(NULL) &gt; <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>) &amp;&amp; (this-&gt;state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>))
676 <a name="l00186"></a>00186         {
677 <a name="l00187"></a>00187                 <span class="comment">// for non-listening sockets, the timeout can occur</span>
678 <a name="l00188"></a>00188                 <span class="comment">// which causes termination of the connection after</span>
679 <a name="l00189"></a>00189                 <span class="comment">// the given number of seconds without a successful</span>
680 <a name="l00190"></a>00190                 <span class="comment">// connection.</span>
681 <a name="l00191"></a>00191                 this-&gt;<a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
682 <a name="l00192"></a>00192                 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>);
683 <a name="l00193"></a>00193                 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>;
684 <a name="l00194"></a>00194                 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
685 <a name="l00195"></a>00195                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
686 <a name="l00196"></a>00196         }
687 <a name="l00197"></a>00197         <a class="code" href="classInspSocket.html#polls">polls</a>.fd = this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>;
688 <a name="l00198"></a>00198         <a class="code" href="classInspSocket.html#state">state</a> == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a> ? <a class="code" href="classInspSocket.html#polls">polls</a>.events = POLLOUT : <a class="code" href="classInspSocket.html#polls">polls</a>.events = POLLIN;
689 <a name="l00199"></a>00199         <span class="keywordtype">int</span> ret = poll(&amp;<a class="code" href="classInspSocket.html#polls">polls</a>,1,1);
690 <a name="l00200"></a>00200 
691 <a name="l00201"></a>00201         <span class="keywordflow">if</span> (ret &gt; 0)
692 <a name="l00202"></a>00202         {
693 <a name="l00203"></a>00203                 <span class="keywordtype">int</span> incoming = -1;
694 <a name="l00204"></a>00204                 
695 <a name="l00205"></a>00205                 <span class="keywordflow">switch</span> (this-&gt;state)
696 <a name="l00206"></a>00206                 {
697 <a name="l00207"></a>00207                         <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>:
698 <a name="l00208"></a>00208                                 this-&gt;<a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>);
699 <a name="l00209"></a>00209                                 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
700 <a name="l00210"></a>00210                         <span class="keywordflow">break</span>;
701 <a name="l00211"></a>00211                         <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>:
702 <a name="l00212"></a>00212                                 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>);
703 <a name="l00213"></a>00213                                 incoming = accept (this-&gt;fd, (sockaddr*)&amp;<a class="code" href="classInspSocket.html#client">client</a>,&amp;<a class="code" href="classInspSocket.html#length">length</a>);
704 <a name="l00214"></a>00214                                 this-&gt;<a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(<a class="code" href="classInspSocket.html#client">client</a>.sin_addr));
705 <a name="l00215"></a>00215                                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
706 <a name="l00216"></a>00216                         <span class="keywordflow">break</span>;
707 <a name="l00217"></a>00217                         <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>:
708 <a name="l00218"></a>00218                                 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
709 <a name="l00219"></a>00219                         <span class="keywordflow">break</span>;
710 <a name="l00220"></a>00220                         <span class="keywordflow">default</span>:
711 <a name="l00221"></a>00221                         <span class="keywordflow">break</span>;
712 <a name="l00222"></a>00222                 }
713 <a name="l00223"></a>00223         }
714 <a name="l00224"></a>00224         <span class="keywordflow">return</span> <span class="keyword">true</span>;
715 <a name="l00225"></a>00225 }
716 </pre></div>
717 <p>
718     </td>
719   </tr>
720 </table>
721 <a class="anchor" name="Read_28_29"></a><!-- doxytag: member="InspSocket::Read" ref="Read_28_29" args="()" --><p>
722 <table class="mdTable" cellpadding="2" cellspacing="0">
723   <tr>
724     <td class="mdRow">
725       <table cellpadding="0" cellspacing="0" border="0">
726         <tr>
727           <td class="md" nowrap valign="top">char * InspSocket::Read           </td>
728           <td class="md" valign="top">(&nbsp;</td>
729           <td class="mdname1" valign="top" nowrap>          </td>
730           <td class="md" valign="top">&nbsp;)&nbsp;</td>
731           <td class="md" nowrap><code> [virtual]</code></td>
732         </tr>
733       </table>
734     </td>
735   </tr>
736 </table>
737 <table cellspacing="5" cellpadding="0" border="0">
738   <tr>
739     <td>
740       &nbsp;
741     </td>
742     <td>
743
744 <p>
745
746 <p>
747 Definition at line <a class="el" href="socket_8cpp-source.html#l00141">141</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
748 <p>
749 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="socket_8h-source.html#l00042">ibuf</a>.<div class="fragment"><pre class="fragment"><a name="l00142"></a>00142 {
750 <a name="l00143"></a>00143         <span class="keywordtype">int</span> n = recv(this-&gt;fd,this-&gt;ibuf,<span class="keyword">sizeof</span>(this-&gt;ibuf),0);
751 <a name="l00144"></a>00144         <span class="keywordflow">if</span> (n &gt; 0)
752 <a name="l00145"></a>00145         {
753 <a name="l00146"></a>00146                 <a class="code" href="classInspSocket.html#ibuf_5B_31_30_32_34_5D">ibuf</a>[n] = 0;
754 <a name="l00147"></a>00147                 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_31_30_32_34_5D">ibuf</a>;
755 <a name="l00148"></a>00148         }
756 <a name="l00149"></a>00149         <span class="keywordflow">else</span>
757 <a name="l00150"></a>00150         {
758 <a name="l00151"></a>00151                 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>);
759 <a name="l00152"></a>00152                 <span class="keywordflow">return</span> NULL;
760 <a name="l00153"></a>00153         }
761 <a name="l00154"></a>00154 }
762 </pre></div>
763 <p>
764     </td>
765   </tr>
766 </table>
767 <a class="anchor" name="SetState_28InspSocketState_20s_29"></a><!-- doxytag: member="InspSocket::SetState" ref="SetState_28InspSocketState_20s_29" args="(InspSocketState s)" --><p>
768 <table class="mdTable" cellpadding="2" cellspacing="0">
769   <tr>
770     <td class="mdRow">
771       <table cellpadding="0" cellspacing="0" border="0">
772         <tr>
773           <td class="md" nowrap valign="top">void InspSocket::SetState           </td>
774           <td class="md" valign="top">(&nbsp;</td>
775           <td class="md" nowrap valign="top"><a class="el" href="socket_8h.html#InspSocketState">InspSocketState</a>&nbsp;</td>
776           <td class="mdname1" valign="top" nowrap> <em>s</em>          </td>
777           <td class="md" valign="top">&nbsp;)&nbsp;</td>
778           <td class="md" nowrap></td>
779         </tr>
780       </table>
781     </td>
782   </tr>
783 </table>
784 <table cellspacing="5" cellpadding="0" border="0">
785   <tr>
786     <td>
787       &nbsp;
788     </td>
789     <td>
790
791 <p>
792
793 <p>
794 Definition at line <a class="el" href="socket_8cpp-source.html#l00227">227</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
795 <p>
796 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="socket_8h-source.html#l00036">state</a>.
797 <p>
798 Referenced by <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00228"></a>00228 {
799 <a name="l00229"></a>00229         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>);
800 <a name="l00230"></a>00230         this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = s;
801 <a name="l00231"></a>00231 }
802 </pre></div>
803 <p>
804     </td>
805   </tr>
806 </table>
807 <a class="anchor" name="Write_28std_3A_3Astring_20data_29"></a><!-- doxytag: member="InspSocket::Write" ref="Write_28std_3A_3Astring_20data_29" args="(std::string data)" --><p>
808 <table class="mdTable" cellpadding="2" cellspacing="0">
809   <tr>
810     <td class="mdRow">
811       <table cellpadding="0" cellspacing="0" border="0">
812         <tr>
813           <td class="md" nowrap valign="top">int InspSocket::Write           </td>
814           <td class="md" valign="top">(&nbsp;</td>
815           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td>
816           <td class="mdname1" valign="top" nowrap> <em>data</em>          </td>
817           <td class="md" valign="top">&nbsp;)&nbsp;</td>
818           <td class="md" nowrap><code> [virtual]</code></td>
819         </tr>
820       </table>
821     </td>
822   </tr>
823 </table>
824 <table cellspacing="5" cellpadding="0" border="0">
825   <tr>
826     <td>
827       &nbsp;
828     </td>
829     <td>
830
831 <p>
832
833 <p>
834 Definition at line <a class="el" href="socket_8cpp-source.html#l00160">160</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00161"></a>00161 {
835 <a name="l00162"></a>00162         <span class="keywordtype">char</span>* d = (<span class="keywordtype">char</span>*)data.c_str();
836 <a name="l00163"></a>00163         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written = 0;
837 <a name="l00164"></a>00164         <span class="keywordtype">int</span> n = 0;
838 <a name="l00165"></a>00165         <span class="keywordtype">int</span> s = data.length();
839 <a name="l00166"></a>00166         <span class="keywordflow">while</span> ((written &lt; data.length()) &amp;&amp; (n &gt;= 0))
840 <a name="l00167"></a>00167         {
841 <a name="l00168"></a>00168                 n = send(this-&gt;fd,d,s,0);
842 <a name="l00169"></a>00169                 <span class="keywordflow">if</span> (n &gt; 0)
843 <a name="l00170"></a>00170                 {
844 <a name="l00171"></a>00171                         <span class="comment">// If we didnt write everything, advance</span>
845 <a name="l00172"></a>00172                         <span class="comment">// the pointers so that when we retry</span>
846 <a name="l00173"></a>00173                         <span class="comment">// the next time around the loop, we try</span>
847 <a name="l00174"></a>00174                         <span class="comment">// to write what we failed to write before.</span>
848 <a name="l00175"></a>00175                         written += n;
849 <a name="l00176"></a>00176                         s -= n;
850 <a name="l00177"></a>00177                         d += n;
851 <a name="l00178"></a>00178                 }
852 <a name="l00179"></a>00179         }
853 <a name="l00180"></a>00180         <span class="keywordflow">return</span> written;
854 <a name="l00181"></a>00181 }
855 </pre></div>
856 <p>
857     </td>
858   </tr>
859 </table>
860 <hr><h2>Member Data Documentation</h2>
861 <a class="anchor" name="addr"></a><!-- doxytag: member="InspSocket::addr" ref="addr" args="" --><p>
862 <table class="mdTable" cellpadding="2" cellspacing="0">
863   <tr>
864     <td class="mdRow">
865       <table cellpadding="0" cellspacing="0" border="0">
866         <tr>
867           <td class="md" nowrap valign="top">sockaddr_in <a class="el" href="classInspSocket.html#addr">InspSocket::addr</a><code> [private]</code>          </td>
868         </tr>
869       </table>
870     </td>
871   </tr>
872 </table>
873 <table cellspacing="5" cellpadding="0" border="0">
874   <tr>
875     <td>
876       &nbsp;
877     </td>
878     <td>
879
880 <p>
881
882 <p>
883 Definition at line <a class="el" href="socket_8h-source.html#l00037">37</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
884 <p>
885 Referenced by <a class="el" href="socket_8cpp-source.html#l00057">InspSocket()</a>.    </td>
886   </tr>
887 </table>
888 <a class="anchor" name="addy"></a><!-- doxytag: member="InspSocket::addy" ref="addy" args="" --><p>
889 <table class="mdTable" cellpadding="2" cellspacing="0">
890   <tr>
891     <td class="mdRow">
892       <table cellpadding="0" cellspacing="0" border="0">
893         <tr>
894           <td class="md" nowrap valign="top">in_addr <a class="el" href="classInspSocket.html#addy">InspSocket::addy</a><code> [private]</code>          </td>
895         </tr>
896       </table>
897     </td>
898   </tr>
899 </table>
900 <table cellspacing="5" cellpadding="0" border="0">
901   <tr>
902     <td>
903       &nbsp;
904     </td>
905     <td>
906
907 <p>
908
909 <p>
910 Definition at line <a class="el" href="socket_8h-source.html#l00038">38</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
911 <p>
912 Referenced by <a class="el" href="socket_8cpp-source.html#l00057">InspSocket()</a>.    </td>
913   </tr>
914 </table>
915 <a class="anchor" name="client"></a><!-- doxytag: member="InspSocket::client" ref="client" args="" --><p>
916 <table class="mdTable" cellpadding="2" cellspacing="0">
917   <tr>
918     <td class="mdRow">
919       <table cellpadding="0" cellspacing="0" border="0">
920         <tr>
921           <td class="md" nowrap valign="top">sockaddr_in <a class="el" href="classInspSocket.html#client">InspSocket::client</a><code> [private]</code>          </td>
922         </tr>
923       </table>
924     </td>
925   </tr>
926 </table>
927 <table cellspacing="5" cellpadding="0" border="0">
928   <tr>
929     <td>
930       &nbsp;
931     </td>
932     <td>
933
934 <p>
935
936 <p>
937 Definition at line <a class="el" href="socket_8h-source.html#l00043">43</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
938 <p>
939 Referenced by <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.    </td>
940   </tr>
941 </table>
942 <a class="anchor" name="fd"></a><!-- doxytag: member="InspSocket::fd" ref="fd" args="" --><p>
943 <table class="mdTable" cellpadding="2" cellspacing="0">
944   <tr>
945     <td class="mdRow">
946       <table cellpadding="0" cellspacing="0" border="0">
947         <tr>
948           <td class="md" nowrap valign="top">int <a class="el" href="classInspSocket.html#fd">InspSocket::fd</a><code> [private]</code>          </td>
949         </tr>
950       </table>
951     </td>
952   </tr>
953 </table>
954 <table cellspacing="5" cellpadding="0" border="0">
955   <tr>
956     <td>
957       &nbsp;
958     </td>
959     <td>
960
961 <p>
962
963 <p>
964 Definition at line <a class="el" href="socket_8h-source.html#l00033">33</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
965 <p>
966 Referenced by <a class="el" href="socket_8cpp-source.html#l00130">Close()</a>, <a class="el" href="socket_8cpp-source.html#l00051">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.    </td>
967   </tr>
968 </table>
969 <a class="anchor" name="host"></a><!-- doxytag: member="InspSocket::host" ref="host" args="" --><p>
970 <table class="mdTable" cellpadding="2" cellspacing="0">
971   <tr>
972     <td class="mdRow">
973       <table cellpadding="0" cellspacing="0" border="0">
974         <tr>
975           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classInspSocket.html#host">InspSocket::host</a><code> [private]</code>          </td>
976         </tr>
977       </table>
978     </td>
979   </tr>
980 </table>
981 <table cellspacing="5" cellpadding="0" border="0">
982   <tr>
983     <td>
984       &nbsp;
985     </td>
986     <td>
987
988 <p>
989
990 <p>
991 Definition at line <a class="el" href="socket_8h-source.html#l00034">34</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.    </td>
992   </tr>
993 </table>
994 <a class="anchor" name="ibuf_5B_31_30_32_34_5D"></a><!-- doxytag: member="InspSocket::ibuf" ref="ibuf_5B_31_30_32_34_5D" args="[1024]" --><p>
995 <table class="mdTable" cellpadding="2" cellspacing="0">
996   <tr>
997     <td class="mdRow">
998       <table cellpadding="0" cellspacing="0" border="0">
999         <tr>
1000           <td class="md" nowrap valign="top">char <a class="el" href="classInspSocket.html#ibuf_5B_31_30_32_34_5D">InspSocket::ibuf</a>[1024]<code> [private]</code>          </td>
1001         </tr>
1002       </table>
1003     </td>
1004   </tr>
1005 </table>
1006 <table cellspacing="5" cellpadding="0" border="0">
1007   <tr>
1008     <td>
1009       &nbsp;
1010     </td>
1011     <td>
1012
1013 <p>
1014
1015 <p>
1016 Definition at line <a class="el" href="socket_8h-source.html#l00042">42</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
1017 <p>
1018 Referenced by <a class="el" href="socket_8cpp-source.html#l00141">Read()</a>.    </td>
1019   </tr>
1020 </table>
1021 <a class="anchor" name="length"></a><!-- doxytag: member="InspSocket::length" ref="length" args="" --><p>
1022 <table class="mdTable" cellpadding="2" cellspacing="0">
1023   <tr>
1024     <td class="mdRow">
1025       <table cellpadding="0" cellspacing="0" border="0">
1026         <tr>
1027           <td class="md" nowrap valign="top">socklen_t <a class="el" href="classInspSocket.html#length">InspSocket::length</a><code> [private]</code>          </td>
1028         </tr>
1029       </table>
1030     </td>
1031   </tr>
1032 </table>
1033 <table cellspacing="5" cellpadding="0" border="0">
1034   <tr>
1035     <td>
1036       &nbsp;
1037     </td>
1038     <td>
1039
1040 <p>
1041
1042 <p>
1043 Definition at line <a class="el" href="socket_8h-source.html#l00045">45</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
1044 <p>
1045 Referenced by <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.    </td>
1046   </tr>
1047 </table>
1048 <a class="anchor" name="polls"></a><!-- doxytag: member="InspSocket::polls" ref="polls" args="" --><p>
1049 <table class="mdTable" cellpadding="2" cellspacing="0">
1050   <tr>
1051     <td class="mdRow">
1052       <table cellpadding="0" cellspacing="0" border="0">
1053         <tr>
1054           <td class="md" nowrap valign="top">pollfd <a class="el" href="classInspSocket.html#polls">InspSocket::polls</a><code> [private]</code>          </td>
1055         </tr>
1056       </table>
1057     </td>
1058   </tr>
1059 </table>
1060 <table cellspacing="5" cellpadding="0" border="0">
1061   <tr>
1062     <td>
1063       &nbsp;
1064     </td>
1065     <td>
1066
1067 <p>
1068
1069 <p>
1070 Definition at line <a class="el" href="socket_8h-source.html#l00041">41</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
1071 <p>
1072 Referenced by <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.    </td>
1073   </tr>
1074 </table>
1075 <a class="anchor" name="port"></a><!-- doxytag: member="InspSocket::port" ref="port" args="" --><p>
1076 <table class="mdTable" cellpadding="2" cellspacing="0">
1077   <tr>
1078     <td class="mdRow">
1079       <table cellpadding="0" cellspacing="0" border="0">
1080         <tr>
1081           <td class="md" nowrap valign="top">int <a class="el" href="classInspSocket.html#port">InspSocket::port</a><code> [private]</code>          </td>
1082         </tr>
1083       </table>
1084     </td>
1085   </tr>
1086 </table>
1087 <table cellspacing="5" cellpadding="0" border="0">
1088   <tr>
1089     <td>
1090       &nbsp;
1091     </td>
1092     <td>
1093
1094 <p>
1095
1096 <p>
1097 Definition at line <a class="el" href="socket_8h-source.html#l00035">35</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.    </td>
1098   </tr>
1099 </table>
1100 <a class="anchor" name="server"></a><!-- doxytag: member="InspSocket::server" ref="server" args="" --><p>
1101 <table class="mdTable" cellpadding="2" cellspacing="0">
1102   <tr>
1103     <td class="mdRow">
1104       <table cellpadding="0" cellspacing="0" border="0">
1105         <tr>
1106           <td class="md" nowrap valign="top">sockaddr_in <a class="el" href="classInspSocket.html#server">InspSocket::server</a><code> [private]</code>          </td>
1107         </tr>
1108       </table>
1109     </td>
1110   </tr>
1111 </table>
1112 <table cellspacing="5" cellpadding="0" border="0">
1113   <tr>
1114     <td>
1115       &nbsp;
1116     </td>
1117     <td>
1118
1119 <p>
1120
1121 <p>
1122 Definition at line <a class="el" href="socket_8h-source.html#l00044">44</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.    </td>
1123   </tr>
1124 </table>
1125 <a class="anchor" name="state"></a><!-- doxytag: member="InspSocket::state" ref="state" args="" --><p>
1126 <table class="mdTable" cellpadding="2" cellspacing="0">
1127   <tr>
1128     <td class="mdRow">
1129       <table cellpadding="0" cellspacing="0" border="0">
1130         <tr>
1131           <td class="md" nowrap valign="top"><a class="el" href="socket_8h.html#InspSocketState">InspSocketState</a> <a class="el" href="classInspSocket.html#state">InspSocket::state</a><code> [private]</code>          </td>
1132         </tr>
1133       </table>
1134     </td>
1135   </tr>
1136 </table>
1137 <table cellspacing="5" cellpadding="0" border="0">
1138   <tr>
1139     <td>
1140       &nbsp;
1141     </td>
1142     <td>
1143
1144 <p>
1145
1146 <p>
1147 Definition at line <a class="el" href="socket_8h-source.html#l00036">36</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
1148 <p>
1149 Referenced by <a class="el" href="socket_8cpp-source.html#l00233">GetState()</a>, <a class="el" href="socket_8cpp-source.html#l00046">InspSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>, and <a class="el" href="socket_8cpp-source.html#l00227">SetState()</a>.    </td>
1150   </tr>
1151 </table>
1152 <a class="anchor" name="timeout"></a><!-- doxytag: member="InspSocket::timeout" ref="timeout" args="" --><p>
1153 <table class="mdTable" cellpadding="2" cellspacing="0">
1154   <tr>
1155     <td class="mdRow">
1156       <table cellpadding="0" cellspacing="0" border="0">
1157         <tr>
1158           <td class="md" nowrap valign="top">bool <a class="el" href="classInspSocket.html#timeout">InspSocket::timeout</a><code> [private]</code>          </td>
1159         </tr>
1160       </table>
1161     </td>
1162   </tr>
1163 </table>
1164 <table cellspacing="5" cellpadding="0" border="0">
1165   <tr>
1166     <td>
1167       &nbsp;
1168     </td>
1169     <td>
1170
1171 <p>
1172
1173 <p>
1174 Definition at line <a class="el" href="socket_8h-source.html#l00040">40</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
1175 <p>
1176 Referenced by <a class="el" href="socket_8cpp-source.html#l00057">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.    </td>
1177   </tr>
1178 </table>
1179 <a class="anchor" name="timeout_5Fend"></a><!-- doxytag: member="InspSocket::timeout_end" ref="timeout_5Fend" args="" --><p>
1180 <table class="mdTable" cellpadding="2" cellspacing="0">
1181   <tr>
1182     <td class="mdRow">
1183       <table cellpadding="0" cellspacing="0" border="0">
1184         <tr>
1185           <td class="md" nowrap valign="top">time_t <a class="el" href="classInspSocket.html#timeout_5Fend">InspSocket::timeout_end</a><code> [private]</code>          </td>
1186         </tr>
1187       </table>
1188     </td>
1189   </tr>
1190 </table>
1191 <table cellspacing="5" cellpadding="0" border="0">
1192   <tr>
1193     <td>
1194       &nbsp;
1195     </td>
1196     <td>
1197
1198 <p>
1199
1200 <p>
1201 Definition at line <a class="el" href="socket_8h-source.html#l00039">39</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
1202 <p>
1203 Referenced by <a class="el" href="socket_8cpp-source.html#l00057">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00183">Poll()</a>.    </td>
1204   </tr>
1205 </table>
1206 <hr>The documentation for this class was generated from the following files:<ul>
1207 <li><a class="el" href="socket_8h-source.html">socket.h</a><li><a class="el" href="socket_8cpp-source.html">socket.cpp</a></ul>
1208 <hr size="1"><address style="align: right;"><small>Generated on Sun Nov 27 01:43:25 2005 for InspIRCd by&nbsp;
1209 <a href="http://www.doxygen.org/index.html">
1210 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
1211 </body>
1212 </html>