]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - docs/module-doc/classircd__connector.html
Fixed 'fake direction' messages being put out by user->registered = 7 being set too...
[user/henk/code/inspircd.git] / docs / module-doc / classircd__connector.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>InspIRCd: ircd_connector class Reference</title>
4 <link href="inspircd.doxygen.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.3.3 -->
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">Compound&nbsp;List</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">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
8 <h1>ircd_connector Class Reference</h1>Each connection has one or more of these each represents ONE outbound connection to another ircd so each inbound has multiple outbounds.  
9 <a href="#_details">More...</a>
10 <p>
11 <code>#include &lt;<a class="el" href="connection_8h-source.html">connection.h</a>&gt;</code>
12 <p>
13 Inheritance diagram for ircd_connector:<p><center><img src="classircd__connector__inherit__graph.gif" border="0" usemap="#ircd__connector__inherit__map" alt="Inheritance graph"></center>
14 <map name="ircd__connector__inherit__map">
15 <area href="classExtensible.html" shape="rect" coords="21,82,103,109" alt="">
16 <area href="classclassbase.html" shape="rect" coords="22,8,102,34" alt="">
17 </map>
18 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for ircd_connector:<p><center><img src="classircd__connector__coll__graph.gif" border="0" usemap="#ircd__connector__coll__map" alt="Collaboration graph"></center>
19 <map name="ircd__connector__coll__map">
20 <area href="classExtensible.html" shape="rect" coords="37,8,120,34" alt="">
21 </map>
22 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classircd__connector-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
23 <tr><td></td></tr>
24 <tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
25 <tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a0">ircd_connector</a> ()</td></tr>
26
27 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor clears the sendq and initialises the fd to -1. </em> <a href="#a0"></a><em><br><br></td></tr>
28 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a1">MakeOutboundConnection</a> (char *newhost, int newport)</td></tr>
29
30 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an outbound connection to a listening socket. </em> <a href="#a1"></a><em><br><br></td></tr>
31 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a2">GetServerName</a> ()</td></tr>
32
33 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the servername on this established connection. </em> <a href="#a2"></a><em><br><br></td></tr>
34 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a3">SetServerName</a> (std::string serv)</td></tr>
35
36 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the server name of this connection. </em> <a href="#a3"></a><em><br><br></td></tr>
37 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a4">GetDescriptor</a> ()</td></tr>
38
39 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the file descriptor associated with this connection. </em> <a href="#a4"></a><em><br><br></td></tr>
40 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a5">SetDescriptor</a> (int <a class="el" href="classircd__connector.html#r1">fd</a>)</td></tr>
41
42 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the file descriptor for this connection. </em> <a href="#a5"></a><em><br><br></td></tr>
43 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a6">GetState</a> ()</td></tr>
44
45 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the state flags for this connection. </em> <a href="#a6"></a><em><br><br></td></tr>
46 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a7">SetState</a> (int <a class="el" href="classircd__connector.html#r4">state</a>)</td></tr>
47
48 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the state flags for this connection. </em> <a href="#a7"></a><em><br><br></td></tr>
49 <tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a8">GetServerIP</a> ()</td></tr>
50
51 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the ip address (not servername) associated with this connection. </em> <a href="#a8"></a><em><br><br></td></tr>
52 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a9">GetDescription</a> ()</td></tr>
53
54 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the server description of this connection. </em> <a href="#a9"></a><em><br><br></td></tr>
55 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a10">SetDescription</a> (std::string desc)</td></tr>
56
57 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the server description of this connection. </em> <a href="#a10"></a><em><br><br></td></tr>
58 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a11">GetServerPort</a> ()</td></tr>
59
60 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the port number being used for this connection If the connection is outbound this will be the remote port otherwise it will be the local port, so it can always be gautanteed as open at the address given in <a class="el" href="classircd__connector.html#a8">GetServerIP()</a>. </em> <a href="#a11"></a><em><br><br></td></tr>
61 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a12">SetServerPort</a> (int p)</td></tr>
62
63 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the port used by this connection. </em> <a href="#a12"></a><em><br><br></td></tr>
64 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a13">SetHostAndPort</a> (char *newhost, int newport)</td></tr>
65
66 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set both the host and the port in one operation for this connection. </em> <a href="#a13"></a><em><br><br></td></tr>
67 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a14">CloseConnection</a> ()</td></tr>
68
69 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close the connection by calling close() on its file descriptor This function call updates no other data. </em> <a href="#a14"></a><em><br><br></td></tr>
70 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a15">AddBuffer</a> (std::string a)</td></tr>
71
72 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method adds text to the ircd connection's buffer. </em> <a href="#a15"></a><em><br><br></td></tr>
73 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a16">BufferIsComplete</a> ()</td></tr>
74
75 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method returns true if the buffer contains at least one carriage return character, e.g. </em> <a href="#a16"></a><em><br><br></td></tr>
76 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a17">ClearBuffer</a> ()</td></tr>
77
78 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method clears the server's buffer by setting it to an empty string. </em> <a href="#a17"></a><em><br><br></td></tr>
79 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a18">GetBuffer</a> ()</td></tr>
80
81 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method retrieves the first string from the tail end of the buffer and advances the tail end of the buffer past the returned string, in a similar manner to strtok(). </em> <a href="#a18"></a><em><br><br></td></tr>
82 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a19">SetVersionString</a> (std::string newversion)</td></tr>
83
84 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method sets the version string of the remote server. </em> <a href="#a19"></a><em><br><br></td></tr>
85 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a20">GetVersionString</a> ()</td></tr>
86
87 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method returns the version string of the remote server. </em> <a href="#a20"></a><em><br><br></td></tr>
88 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a21">AddWriteBuf</a> (std::string data)</td></tr>
89
90 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds data to the connection's sendQ to be flushed later. </em> <a href="#a21"></a><em><br><br></td></tr>
91 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a22">FlushWriteBuf</a> ()</td></tr>
92
93 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flushes as much of the data from the buffer as possible, and advances the queue pointer to what is left. </em> <a href="#a22"></a><em><br><br></td></tr>
94 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a23">SetWriteError</a> (std::string error)</td></tr>
95
96 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the error string for this connection. </em> <a href="#a23"></a><em><br><br></td></tr>
97 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a24">GetWriteError</a> ()</td></tr>
98
99 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the error string for this connection. </em> <a href="#a24"></a><em><br><br></td></tr>
100 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a25">HasBufferedOutput</a> ()</td></tr>
101
102 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if there is data to be written that hasn't been sent yet. </em> <a href="#a25"></a><em><br><br></td></tr>
103 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a26">CheckPing</a> ()</td></tr>
104
105 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks if the connection replied to its last ping, and if it did sends another and returns true, if not, returns false. </em> <a href="#a26"></a><em><br><br></td></tr>
106 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#a27">ResetPing</a> ()</td></tr>
107
108 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resets the ping counter. </em> <a href="#a27"></a><em><br><br></td></tr>
109 <tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
110 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#o0">ircdbuffer</a></td></tr>
111
112 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">IRCD Buffer for input characters, holds as many lines as are pending - Note that the final line may not be complete and should only be read when there is a <br>
113  seperator. </em> <a href="#o0"></a><em><br><br></td></tr>
114 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#o1">host</a> [MAXBUF]</td></tr>
115
116 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">When MakeOutboundConnection is called, these public members are filled with the details passed to the function, for future reference. </em> <a href="#o1"></a><em><br><br></td></tr>
117 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#o2">port</a></td></tr>
118
119 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">When MakeOutboundConnection is called, these public members are filled with the details passed to the function, for future reference. </em> <a href="#o2"></a><em><br><br></td></tr>
120 <tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; std::string &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#o3">routes</a></td></tr>
121
122 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classServer.html">Server</a> names of servers that this server is linked to So for A-&gt;B-&gt;C, if this was the record for B it would contain A and C whilever both servers are connected to B. </em> <a href="#o3"></a><em><br><br></td></tr>
123 <tr><td colspan=2><br><h2>Private Member Functions</h2></td></tr>
124 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#d0">SetHostAddress</a> (char *<a class="el" href="classircd__connector.html#o1">host</a>, int <a class="el" href="classircd__connector.html#o2">port</a>)</td></tr>
125
126 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PRIVATE function to set the host address and port to connect to. </em> <a href="#d0"></a><em><br><br></td></tr>
127 <tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
128 <tr><td class="memItemLeft" nowrap align=right valign=top>sockaddr_in&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r0">addr</a></td></tr>
129
130 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sockaddr of the outbound ip and port. </em> <a href="#r0"></a><em><br><br></td></tr>
131 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r1">fd</a></td></tr>
132
133 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">File descriptor of the connection. </em> <a href="#r1"></a><em><br><br></td></tr>
134 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r2">servername</a></td></tr>
135
136 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classServer.html">Server</a> name. </em> <a href="#r2"></a><em><br><br></td></tr>
137 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r3">description</a></td></tr>
138
139 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classServer.html">Server</a> 'GECOS'. </em> <a href="#r3"></a><em><br><br></td></tr>
140 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r4">state</a></td></tr>
141
142 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">State. </em> <a href="#r4"></a><em><br><br></td></tr>
143 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r5">version</a></td></tr>
144
145 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This string holds the ircd's version response. </em> <a href="#r5"></a><em><br><br></td></tr>
146 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r6">sendq</a></td></tr>
147
148 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SendQ of the outbound connector, does not have a limit. </em> <a href="#r6"></a><em><br><br></td></tr>
149 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r7">WriteError</a></td></tr>
150
151 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write error of connection. </em> <a href="#r7"></a><em><br><br></td></tr>
152 <tr><td class="memItemLeft" nowrap align=right valign=top>time_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r8">nextping</a></td></tr>
153
154 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Time this connection was last pinged. </em> <a href="#r8"></a><em><br><br></td></tr>
155 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classircd__connector.html#r9">replied</a></td></tr>
156
157 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Did this connection reply to its last ping? </em> <a href="#r9"></a><em><br><br></td></tr>
158 </table>
159 <hr><a name="_details"></a><h2>Detailed Description</h2>
160 Each connection has one or more of these each represents ONE outbound connection to another ircd so each inbound has multiple outbounds. 
161 <p>
162 A listening socket that accepts server type connections is represented by one class serverrec. Class serverrec will instantiate several objects of type ircd_connector to represent each established connection, inbound or outbound. So, to determine all linked servers you must walk through all the serverrecs that the core defines, and in each one iterate through until you find connection(s) relating to the server you want information on. The core and module API provide functions for this. 
163 <p>
164
165 <p>
166 Definition at line <a class="el" href="connection_8h-source.html#l00056">56</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
167 <a name="a0" doxytag="ircd_connector::ircd_connector"></a><p>
168 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
169   <tr>
170     <td class="mdRow">
171       <table cellpadding="0" cellspacing="0" border="0">
172         <tr>
173           <td class="md" nowrap valign="top"> ircd_connector::ircd_connector </td>
174           <td class="md" valign="top">(&nbsp;</td>
175           <td class="mdname1" valign="top" nowrap>          </td>
176           <td class="md" valign="top">&nbsp;)&nbsp;</td>
177           <td class="md" nowrap></td>
178         </tr>
179
180       </table>
181     </td>
182   </tr>
183 </table>
184 <table cellspacing=5 cellpadding=0 border=0>
185   <tr>
186     <td>
187       &nbsp;
188     </td>
189     <td>
190
191 <p>
192 Constructor clears the sendq and initialises the fd to -1. 
193 <p>
194     </td>
195   </tr>
196 </table>
197 <hr><h2>Member Function Documentation</h2>
198 <a name="a15" doxytag="ircd_connector::AddBuffer"></a><p>
199 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
200   <tr>
201     <td class="mdRow">
202       <table cellpadding="0" cellspacing="0" border="0">
203         <tr>
204           <td class="md" nowrap valign="top"> bool ircd_connector::AddBuffer </td>
205           <td class="md" valign="top">(&nbsp;</td>
206           <td class="md" nowrap valign="top">std::string&nbsp;</td>
207           <td class="mdname1" valign="top" nowrap> <em>a</em>          </td>
208           <td class="md" valign="top">&nbsp;)&nbsp;</td>
209           <td class="md" nowrap></td>
210         </tr>
211
212       </table>
213     </td>
214   </tr>
215 </table>
216 <table cellspacing=5 cellpadding=0 border=0>
217   <tr>
218     <td>
219       &nbsp;
220     </td>
221     <td>
222
223 <p>
224 This method adds text to the ircd connection's buffer. 
225 <p>
226 <dl compact><dt><b>Parameters:</b></dt><dd>
227   <table border="0" cellspacing="2" cellpadding="0">
228     <tr><td valign=top><em>a</em>&nbsp;</td><td>The text to add to the buffer up to a maximum size of 1MB</td></tr>
229   </table>
230 </dl>
231 This buffer's maximum size is one megabyte, the method returning false if the buffer is full.<p>
232 <dl compact><dt><b>Returns:</b></dt><dd>True on success, false if the buffer is full or the connection is down</dd></dl>
233     </td>
234   </tr>
235 </table>
236 <a name="a21" doxytag="ircd_connector::AddWriteBuf"></a><p>
237 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
238   <tr>
239     <td class="mdRow">
240       <table cellpadding="0" cellspacing="0" border="0">
241         <tr>
242           <td class="md" nowrap valign="top"> bool ircd_connector::AddWriteBuf </td>
243           <td class="md" valign="top">(&nbsp;</td>
244           <td class="md" nowrap valign="top">std::string&nbsp;</td>
245           <td class="mdname1" valign="top" nowrap> <em>data</em>          </td>
246           <td class="md" valign="top">&nbsp;)&nbsp;</td>
247           <td class="md" nowrap></td>
248         </tr>
249
250       </table>
251     </td>
252   </tr>
253 </table>
254 <table cellspacing=5 cellpadding=0 border=0>
255   <tr>
256     <td>
257       &nbsp;
258     </td>
259     <td>
260
261 <p>
262 Adds data to the connection's sendQ to be flushed later. 
263 <p>
264 <dl compact><dt><b>Parameters:</b></dt><dd>
265   <table border="0" cellspacing="2" cellpadding="0">
266     <tr><td valign=top><em>data</em>&nbsp;</td><td>The data to add to the write buffer</td></tr>
267   </table>
268 </dl>
269 Fails if there is an error pending on the connection.<p>
270 <dl compact><dt><b>Returns:</b></dt><dd>True on success, false if the connection is down or the buffer is full</dd></dl>
271
272 <p>
273 Referenced by <a class="el" href="servers_8cpp-source.html#l00350">serverrec::SendPacket()</a>.    </td>
274   </tr>
275 </table>
276 <a name="a16" doxytag="ircd_connector::BufferIsComplete"></a><p>
277 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
278   <tr>
279     <td class="mdRow">
280       <table cellpadding="0" cellspacing="0" border="0">
281         <tr>
282           <td class="md" nowrap valign="top"> bool ircd_connector::BufferIsComplete </td>
283           <td class="md" valign="top">(&nbsp;</td>
284           <td class="mdname1" valign="top" nowrap>          </td>
285           <td class="md" valign="top">&nbsp;)&nbsp;</td>
286           <td class="md" nowrap></td>
287         </tr>
288
289       </table>
290     </td>
291   </tr>
292 </table>
293 <table cellspacing=5 cellpadding=0 border=0>
294   <tr>
295     <td>
296       &nbsp;
297     </td>
298     <td>
299
300 <p>
301 This method returns true if the buffer contains at least one carriage return character, e.g. 
302 <p>
303 one line can be read from the buffer successfully.<p>
304 <dl compact><dt><b>Returns:</b></dt><dd>True if there is at least one complete line waiting to be processed</dd></dl>
305     </td>
306   </tr>
307 </table>
308 <a name="a26" doxytag="ircd_connector::CheckPing"></a><p>
309 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
310   <tr>
311     <td class="mdRow">
312       <table cellpadding="0" cellspacing="0" border="0">
313         <tr>
314           <td class="md" nowrap valign="top"> bool ircd_connector::CheckPing </td>
315           <td class="md" valign="top">(&nbsp;</td>
316           <td class="mdname1" valign="top" nowrap>          </td>
317           <td class="md" valign="top">&nbsp;)&nbsp;</td>
318           <td class="md" nowrap></td>
319         </tr>
320
321       </table>
322     </td>
323   </tr>
324 </table>
325 <table cellspacing=5 cellpadding=0 border=0>
326   <tr>
327     <td>
328       &nbsp;
329     </td>
330     <td>
331
332 <p>
333 Checks if the connection replied to its last ping, and if it did sends another and returns true, if not, returns false. 
334 <p>
335 <dl compact><dt><b>Returns:</b></dt><dd>True if the server is still replying to pings</dd></dl>
336     </td>
337   </tr>
338 </table>
339 <a name="a17" doxytag="ircd_connector::ClearBuffer"></a><p>
340 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
341   <tr>
342     <td class="mdRow">
343       <table cellpadding="0" cellspacing="0" border="0">
344         <tr>
345           <td class="md" nowrap valign="top"> void ircd_connector::ClearBuffer </td>
346           <td class="md" valign="top">(&nbsp;</td>
347           <td class="mdname1" valign="top" nowrap>          </td>
348           <td class="md" valign="top">&nbsp;)&nbsp;</td>
349           <td class="md" nowrap></td>
350         </tr>
351
352       </table>
353     </td>
354   </tr>
355 </table>
356 <table cellspacing=5 cellpadding=0 border=0>
357   <tr>
358     <td>
359       &nbsp;
360     </td>
361     <td>
362
363 <p>
364 This method clears the server's buffer by setting it to an empty string. 
365 <p>
366     </td>
367   </tr>
368 </table>
369 <a name="a14" doxytag="ircd_connector::CloseConnection"></a><p>
370 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
371   <tr>
372     <td class="mdRow">
373       <table cellpadding="0" cellspacing="0" border="0">
374         <tr>
375           <td class="md" nowrap valign="top"> void ircd_connector::CloseConnection </td>
376           <td class="md" valign="top">(&nbsp;</td>
377           <td class="mdname1" valign="top" nowrap>          </td>
378           <td class="md" valign="top">&nbsp;)&nbsp;</td>
379           <td class="md" nowrap></td>
380         </tr>
381
382       </table>
383     </td>
384   </tr>
385 </table>
386 <table cellspacing=5 cellpadding=0 border=0>
387   <tr>
388     <td>
389       &nbsp;
390     </td>
391     <td>
392
393 <p>
394 Close the connection by calling close() on its file descriptor This function call updates no other data. 
395 <p>
396
397 <p>
398 Referenced by <a class="el" href="servers_8cpp-source.html#l00350">serverrec::SendPacket()</a>.    </td>
399   </tr>
400 </table>
401 <a name="a22" doxytag="ircd_connector::FlushWriteBuf"></a><p>
402 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
403   <tr>
404     <td class="mdRow">
405       <table cellpadding="0" cellspacing="0" border="0">
406         <tr>
407           <td class="md" nowrap valign="top"> bool ircd_connector::FlushWriteBuf </td>
408           <td class="md" valign="top">(&nbsp;</td>
409           <td class="mdname1" valign="top" nowrap>          </td>
410           <td class="md" valign="top">&nbsp;)&nbsp;</td>
411           <td class="md" nowrap></td>
412         </tr>
413
414       </table>
415     </td>
416   </tr>
417 </table>
418 <table cellspacing=5 cellpadding=0 border=0>
419   <tr>
420     <td>
421       &nbsp;
422     </td>
423     <td>
424
425 <p>
426 Flushes as much of the data from the buffer as possible, and advances the queue pointer to what is left. 
427 <p>
428 <dl compact><dt><b>Returns:</b></dt><dd>True if the flush succeeded, false if the connection is down</dd></dl>
429
430 <p>
431 Referenced by <a class="el" href="servers_8cpp-source.html#l00350">serverrec::SendPacket()</a>.    </td>
432   </tr>
433 </table>
434 <a name="a18" doxytag="ircd_connector::GetBuffer"></a><p>
435 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
436   <tr>
437     <td class="mdRow">
438       <table cellpadding="0" cellspacing="0" border="0">
439         <tr>
440           <td class="md" nowrap valign="top"> std::string ircd_connector::GetBuffer </td>
441           <td class="md" valign="top">(&nbsp;</td>
442           <td class="mdname1" valign="top" nowrap>          </td>
443           <td class="md" valign="top">&nbsp;)&nbsp;</td>
444           <td class="md" nowrap></td>
445         </tr>
446
447       </table>
448     </td>
449   </tr>
450 </table>
451 <table cellspacing=5 cellpadding=0 border=0>
452   <tr>
453     <td>
454       &nbsp;
455     </td>
456     <td>
457
458 <p>
459 This method retrieves the first string from the tail end of the buffer and advances the tail end of the buffer past the returned string, in a similar manner to strtok(). 
460 <p>
461 <dl compact><dt><b>Returns:</b></dt><dd>The first line of the buffer up to a carriage return</dd></dl>
462     </td>
463   </tr>
464 </table>
465 <a name="a9" doxytag="ircd_connector::GetDescription"></a><p>
466 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
467   <tr>
468     <td class="mdRow">
469       <table cellpadding="0" cellspacing="0" border="0">
470         <tr>
471           <td class="md" nowrap valign="top"> std::string ircd_connector::GetDescription </td>
472           <td class="md" valign="top">(&nbsp;</td>
473           <td class="mdname1" valign="top" nowrap>          </td>
474           <td class="md" valign="top">&nbsp;)&nbsp;</td>
475           <td class="md" nowrap></td>
476         </tr>
477
478       </table>
479     </td>
480   </tr>
481 </table>
482 <table cellspacing=5 cellpadding=0 border=0>
483   <tr>
484     <td>
485       &nbsp;
486     </td>
487     <td>
488
489 <p>
490 Get the server description of this connection. 
491 <p>
492 <dl compact><dt><b>Returns:</b></dt><dd>The description (GECOS) of this connection</dd></dl>
493     </td>
494   </tr>
495 </table>
496 <a name="a4" doxytag="ircd_connector::GetDescriptor"></a><p>
497 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
498   <tr>
499     <td class="mdRow">
500       <table cellpadding="0" cellspacing="0" border="0">
501         <tr>
502           <td class="md" nowrap valign="top"> int ircd_connector::GetDescriptor </td>
503           <td class="md" valign="top">(&nbsp;</td>
504           <td class="mdname1" valign="top" nowrap>          </td>
505           <td class="md" valign="top">&nbsp;)&nbsp;</td>
506           <td class="md" nowrap></td>
507         </tr>
508
509       </table>
510     </td>
511   </tr>
512 </table>
513 <table cellspacing=5 cellpadding=0 border=0>
514   <tr>
515     <td>
516       &nbsp;
517     </td>
518     <td>
519
520 <p>
521 Get the file descriptor associated with this connection. 
522 <p>
523 <dl compact><dt><b>Returns:</b></dt><dd>The file descriptor associated with this connection</dd></dl>
524     </td>
525   </tr>
526 </table>
527 <a name="a8" doxytag="ircd_connector::GetServerIP"></a><p>
528 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
529   <tr>
530     <td class="mdRow">
531       <table cellpadding="0" cellspacing="0" border="0">
532         <tr>
533           <td class="md" nowrap valign="top"> char* ircd_connector::GetServerIP </td>
534           <td class="md" valign="top">(&nbsp;</td>
535           <td class="mdname1" valign="top" nowrap>          </td>
536           <td class="md" valign="top">&nbsp;)&nbsp;</td>
537           <td class="md" nowrap></td>
538         </tr>
539
540       </table>
541     </td>
542   </tr>
543 </table>
544 <table cellspacing=5 cellpadding=0 border=0>
545   <tr>
546     <td>
547       &nbsp;
548     </td>
549     <td>
550
551 <p>
552 Get the ip address (not servername) associated with this connection. 
553 <p>
554 <dl compact><dt><b>Returns:</b></dt><dd>The connections IP address in dotted decimal form</dd></dl>
555     </td>
556   </tr>
557 </table>
558 <a name="a2" doxytag="ircd_connector::GetServerName"></a><p>
559 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
560   <tr>
561     <td class="mdRow">
562       <table cellpadding="0" cellspacing="0" border="0">
563         <tr>
564           <td class="md" nowrap valign="top"> std::string ircd_connector::GetServerName </td>
565           <td class="md" valign="top">(&nbsp;</td>
566           <td class="mdname1" valign="top" nowrap>          </td>
567           <td class="md" valign="top">&nbsp;)&nbsp;</td>
568           <td class="md" nowrap></td>
569         </tr>
570
571       </table>
572     </td>
573   </tr>
574 </table>
575 <table cellspacing=5 cellpadding=0 border=0>
576   <tr>
577     <td>
578       &nbsp;
579     </td>
580     <td>
581
582 <p>
583 Return the servername on this established connection. 
584 <p>
585
586 <p>
587 Referenced by <a class="el" href="servers_8cpp-source.html#l00350">serverrec::SendPacket()</a>.    </td>
588   </tr>
589 </table>
590 <a name="a11" doxytag="ircd_connector::GetServerPort"></a><p>
591 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
592   <tr>
593     <td class="mdRow">
594       <table cellpadding="0" cellspacing="0" border="0">
595         <tr>
596           <td class="md" nowrap valign="top"> int ircd_connector::GetServerPort </td>
597           <td class="md" valign="top">(&nbsp;</td>
598           <td class="mdname1" valign="top" nowrap>          </td>
599           <td class="md" valign="top">&nbsp;)&nbsp;</td>
600           <td class="md" nowrap></td>
601         </tr>
602
603       </table>
604     </td>
605   </tr>
606 </table>
607 <table cellspacing=5 cellpadding=0 border=0>
608   <tr>
609     <td>
610       &nbsp;
611     </td>
612     <td>
613
614 <p>
615 Get the port number being used for this connection If the connection is outbound this will be the remote port otherwise it will be the local port, so it can always be gautanteed as open at the address given in <a class="el" href="classircd__connector.html#a8">GetServerIP()</a>. 
616 <p>
617 <dl compact><dt><b>Returns:</b></dt><dd>The port number of this connection</dd></dl>
618     </td>
619   </tr>
620 </table>
621 <a name="a6" doxytag="ircd_connector::GetState"></a><p>
622 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
623   <tr>
624     <td class="mdRow">
625       <table cellpadding="0" cellspacing="0" border="0">
626         <tr>
627           <td class="md" nowrap valign="top"> int ircd_connector::GetState </td>
628           <td class="md" valign="top">(&nbsp;</td>
629           <td class="mdname1" valign="top" nowrap>          </td>
630           <td class="md" valign="top">&nbsp;)&nbsp;</td>
631           <td class="md" nowrap></td>
632         </tr>
633
634       </table>
635     </td>
636   </tr>
637 </table>
638 <table cellspacing=5 cellpadding=0 border=0>
639   <tr>
640     <td>
641       &nbsp;
642     </td>
643     <td>
644
645 <p>
646 Get the state flags for this connection. 
647 <p>
648 <dl compact><dt><b>Returns:</b></dt><dd>The state flags associated with this connection</dd></dl>
649
650 <p>
651 Referenced by <a class="el" href="servers_8cpp-source.html#l00350">serverrec::SendPacket()</a>.    </td>
652   </tr>
653 </table>
654 <a name="a20" doxytag="ircd_connector::GetVersionString"></a><p>
655 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
656   <tr>
657     <td class="mdRow">
658       <table cellpadding="0" cellspacing="0" border="0">
659         <tr>
660           <td class="md" nowrap valign="top"> std::string ircd_connector::GetVersionString </td>
661           <td class="md" valign="top">(&nbsp;</td>
662           <td class="mdname1" valign="top" nowrap>          </td>
663           <td class="md" valign="top">&nbsp;)&nbsp;</td>
664           <td class="md" nowrap></td>
665         </tr>
666
667       </table>
668     </td>
669   </tr>
670 </table>
671 <table cellspacing=5 cellpadding=0 border=0>
672   <tr>
673     <td>
674       &nbsp;
675     </td>
676     <td>
677
678 <p>
679 This method returns the version string of the remote server. 
680 <p>
681 If the server has no version string an empty string is returned.<p>
682 <dl compact><dt><b>Returns:</b></dt><dd>The version text of this connection</dd></dl>
683     </td>
684   </tr>
685 </table>
686 <a name="a24" doxytag="ircd_connector::GetWriteError"></a><p>
687 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
688   <tr>
689     <td class="mdRow">
690       <table cellpadding="0" cellspacing="0" border="0">
691         <tr>
692           <td class="md" nowrap valign="top"> std::string ircd_connector::GetWriteError </td>
693           <td class="md" valign="top">(&nbsp;</td>
694           <td class="mdname1" valign="top" nowrap>          </td>
695           <td class="md" valign="top">&nbsp;)&nbsp;</td>
696           <td class="md" nowrap></td>
697         </tr>
698
699       </table>
700     </td>
701   </tr>
702 </table>
703 <table cellspacing=5 cellpadding=0 border=0>
704   <tr>
705     <td>
706       &nbsp;
707     </td>
708     <td>
709
710 <p>
711 Gets the error string for this connection. 
712 <p>
713 <dl compact><dt><b>Returns:</b></dt><dd>The last error to occur or an empty string</dd></dl>
714
715 <p>
716 Referenced by <a class="el" href="servers_8cpp-source.html#l00350">serverrec::SendPacket()</a>.    </td>
717   </tr>
718 </table>
719 <a name="a25" doxytag="ircd_connector::HasBufferedOutput"></a><p>
720 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
721   <tr>
722     <td class="mdRow">
723       <table cellpadding="0" cellspacing="0" border="0">
724         <tr>
725           <td class="md" nowrap valign="top"> bool ircd_connector::HasBufferedOutput </td>
726           <td class="md" valign="top">(&nbsp;</td>
727           <td class="mdname1" valign="top" nowrap>          </td>
728           <td class="md" valign="top">&nbsp;)&nbsp;</td>
729           <td class="md" nowrap></td>
730         </tr>
731
732       </table>
733     </td>
734   </tr>
735 </table>
736 <table cellspacing=5 cellpadding=0 border=0>
737   <tr>
738     <td>
739       &nbsp;
740     </td>
741     <td>
742
743 <p>
744 Returns true if there is data to be written that hasn't been sent yet. 
745 <p>
746 <dl compact><dt><b>Returns:</b></dt><dd>True if the buffer is not empty</dd></dl>
747     </td>
748   </tr>
749 </table>
750 <a name="a1" doxytag="ircd_connector::MakeOutboundConnection"></a><p>
751 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
752   <tr>
753     <td class="mdRow">
754       <table cellpadding="0" cellspacing="0" border="0">
755         <tr>
756           <td class="md" nowrap valign="top"> bool ircd_connector::MakeOutboundConnection </td>
757           <td class="md" valign="top">(&nbsp;</td>
758           <td class="md" nowrap valign="top">char *&nbsp;</td>
759           <td class="mdname" nowrap> <em>newhost</em>, </td>
760         </tr>
761         <tr>
762           <td></td>
763           <td></td>
764           <td class="md" nowrap>int&nbsp;</td>
765           <td class="mdname" nowrap> <em>newport</em></td>
766         </tr>
767         <tr>
768           <td></td>
769           <td class="md">)&nbsp;</td>
770           <td class="md" colspan="2"></td>
771         </tr>
772
773       </table>
774     </td>
775   </tr>
776 </table>
777 <table cellspacing=5 cellpadding=0 border=0>
778   <tr>
779     <td>
780       &nbsp;
781     </td>
782     <td>
783
784 <p>
785 Create an outbound connection to a listening socket. 
786 <p>
787
788 <p>
789 Referenced by <a class="el" href="servers_8cpp-source.html#l00142">serverrec::BeginLink()</a>, and <a class="el" href="servers_8cpp-source.html#l00182">serverrec::MeshCookie()</a>.    </td>
790   </tr>
791 </table>
792 <a name="a27" doxytag="ircd_connector::ResetPing"></a><p>
793 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
794   <tr>
795     <td class="mdRow">
796       <table cellpadding="0" cellspacing="0" border="0">
797         <tr>
798           <td class="md" nowrap valign="top"> void ircd_connector::ResetPing </td>
799           <td class="md" valign="top">(&nbsp;</td>
800           <td class="mdname1" valign="top" nowrap>          </td>
801           <td class="md" valign="top">&nbsp;)&nbsp;</td>
802           <td class="md" nowrap></td>
803         </tr>
804
805       </table>
806     </td>
807   </tr>
808 </table>
809 <table cellspacing=5 cellpadding=0 border=0>
810   <tr>
811     <td>
812       &nbsp;
813     </td>
814     <td>
815
816 <p>
817 Resets the ping counter. 
818 <p>
819     </td>
820   </tr>
821 </table>
822 <a name="a10" doxytag="ircd_connector::SetDescription"></a><p>
823 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
824   <tr>
825     <td class="mdRow">
826       <table cellpadding="0" cellspacing="0" border="0">
827         <tr>
828           <td class="md" nowrap valign="top"> void ircd_connector::SetDescription </td>
829           <td class="md" valign="top">(&nbsp;</td>
830           <td class="md" nowrap valign="top">std::string&nbsp;</td>
831           <td class="mdname1" valign="top" nowrap> <em>desc</em>          </td>
832           <td class="md" valign="top">&nbsp;)&nbsp;</td>
833           <td class="md" nowrap></td>
834         </tr>
835
836       </table>
837     </td>
838   </tr>
839 </table>
840 <table cellspacing=5 cellpadding=0 border=0>
841   <tr>
842     <td>
843       &nbsp;
844     </td>
845     <td>
846
847 <p>
848 Set the server description of this connection. 
849 <p>
850 <dl compact><dt><b>Parameters:</b></dt><dd>
851   <table border="0" cellspacing="2" cellpadding="0">
852     <tr><td valign=top><em>desc</em>&nbsp;</td><td>The description (GECOS) of this connection to be set</td></tr>
853   </table>
854 </dl>
855     </td>
856   </tr>
857 </table>
858 <a name="a5" doxytag="ircd_connector::SetDescriptor"></a><p>
859 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
860   <tr>
861     <td class="mdRow">
862       <table cellpadding="0" cellspacing="0" border="0">
863         <tr>
864           <td class="md" nowrap valign="top"> void ircd_connector::SetDescriptor </td>
865           <td class="md" valign="top">(&nbsp;</td>
866           <td class="md" nowrap valign="top">int&nbsp;</td>
867           <td class="mdname1" valign="top" nowrap> <em>fd</em>          </td>
868           <td class="md" valign="top">&nbsp;)&nbsp;</td>
869           <td class="md" nowrap></td>
870         </tr>
871
872       </table>
873     </td>
874   </tr>
875 </table>
876 <table cellspacing=5 cellpadding=0 border=0>
877   <tr>
878     <td>
879       &nbsp;
880     </td>
881     <td>
882
883 <p>
884 Set the file descriptor for this connection. 
885 <p>
886 <dl compact><dt><b>Parameters:</b></dt><dd>
887   <table border="0" cellspacing="2" cellpadding="0">
888     <tr><td valign=top><em>fd</em>&nbsp;</td><td>The file descriptor to associate with the connection</td></tr>
889   </table>
890 </dl>
891
892 <p>
893 Referenced by <a class="el" href="servers_8cpp-source.html#l00212">serverrec::AddIncoming()</a>.    </td>
894   </tr>
895 </table>
896 <a name="d0" doxytag="ircd_connector::SetHostAddress"></a><p>
897 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
898   <tr>
899     <td class="mdRow">
900       <table cellpadding="0" cellspacing="0" border="0">
901         <tr>
902           <td class="md" nowrap valign="top"> bool ircd_connector::SetHostAddress </td>
903           <td class="md" valign="top">(&nbsp;</td>
904           <td class="md" nowrap valign="top">char *&nbsp;</td>
905           <td class="mdname" nowrap> <em>host</em>, </td>
906         </tr>
907         <tr>
908           <td></td>
909           <td></td>
910           <td class="md" nowrap>int&nbsp;</td>
911           <td class="mdname" nowrap> <em>port</em></td>
912         </tr>
913         <tr>
914           <td></td>
915           <td class="md">)&nbsp;</td>
916           <td class="md" colspan="2"><code> [private]</code></td>
917         </tr>
918
919       </table>
920     </td>
921   </tr>
922 </table>
923 <table cellspacing=5 cellpadding=0 border=0>
924   <tr>
925     <td>
926       &nbsp;
927     </td>
928     <td>
929
930 <p>
931 PRIVATE function to set the host address and port to connect to. 
932 <p>
933     </td>
934   </tr>
935 </table>
936 <a name="a13" doxytag="ircd_connector::SetHostAndPort"></a><p>
937 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
938   <tr>
939     <td class="mdRow">
940       <table cellpadding="0" cellspacing="0" border="0">
941         <tr>
942           <td class="md" nowrap valign="top"> bool ircd_connector::SetHostAndPort </td>
943           <td class="md" valign="top">(&nbsp;</td>
944           <td class="md" nowrap valign="top">char *&nbsp;</td>
945           <td class="mdname" nowrap> <em>newhost</em>, </td>
946         </tr>
947         <tr>
948           <td></td>
949           <td></td>
950           <td class="md" nowrap>int&nbsp;</td>
951           <td class="mdname" nowrap> <em>newport</em></td>
952         </tr>
953         <tr>
954           <td></td>
955           <td class="md">)&nbsp;</td>
956           <td class="md" colspan="2"></td>
957         </tr>
958
959       </table>
960     </td>
961   </tr>
962 </table>
963 <table cellspacing=5 cellpadding=0 border=0>
964   <tr>
965     <td>
966       &nbsp;
967     </td>
968     <td>
969
970 <p>
971 Set both the host and the port in one operation for this connection. 
972 <p>
973 <dl compact><dt><b>Parameters:</b></dt><dd>
974   <table border="0" cellspacing="2" cellpadding="0">
975     <tr><td valign=top><em>newhost</em>&nbsp;</td><td>The hostname to set for this connection </td></tr>
976     <tr><td valign=top><em>newport</em>&nbsp;</td><td>The port number to set for this connection </td></tr>
977   </table>
978 </dl>
979 <dl compact><dt><b>Returns:</b></dt><dd>True on success, false on failure</dd></dl>
980
981 <p>
982 Referenced by <a class="el" href="servers_8cpp-source.html#l00212">serverrec::AddIncoming()</a>, <a class="el" href="servers_8cpp-source.html#l00142">serverrec::BeginLink()</a>, and <a class="el" href="servers_8cpp-source.html#l00182">serverrec::MeshCookie()</a>.    </td>
983   </tr>
984 </table>
985 <a name="a3" doxytag="ircd_connector::SetServerName"></a><p>
986 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
987   <tr>
988     <td class="mdRow">
989       <table cellpadding="0" cellspacing="0" border="0">
990         <tr>
991           <td class="md" nowrap valign="top"> void ircd_connector::SetServerName </td>
992           <td class="md" valign="top">(&nbsp;</td>
993           <td class="md" nowrap valign="top">std::string&nbsp;</td>
994           <td class="mdname1" valign="top" nowrap> <em>serv</em>          </td>
995           <td class="md" valign="top">&nbsp;)&nbsp;</td>
996           <td class="md" nowrap></td>
997         </tr>
998
999       </table>
1000     </td>
1001   </tr>
1002 </table>
1003 <table cellspacing=5 cellpadding=0 border=0>
1004   <tr>
1005     <td>
1006       &nbsp;
1007     </td>
1008     <td>
1009
1010 <p>
1011 Set the server name of this connection. 
1012 <p>
1013 <dl compact><dt><b>Parameters:</b></dt><dd>
1014   <table border="0" cellspacing="2" cellpadding="0">
1015     <tr><td valign=top><em>serv</em>&nbsp;</td><td>The server name to set</td></tr>
1016   </table>
1017 </dl>
1018
1019 <p>
1020 Referenced by <a class="el" href="servers_8cpp-source.html#l00212">serverrec::AddIncoming()</a>, <a class="el" href="servers_8cpp-source.html#l00142">serverrec::BeginLink()</a>, and <a class="el" href="servers_8cpp-source.html#l00182">serverrec::MeshCookie()</a>.    </td>
1021   </tr>
1022 </table>
1023 <a name="a12" doxytag="ircd_connector::SetServerPort"></a><p>
1024 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1025   <tr>
1026     <td class="mdRow">
1027       <table cellpadding="0" cellspacing="0" border="0">
1028         <tr>
1029           <td class="md" nowrap valign="top"> void ircd_connector::SetServerPort </td>
1030           <td class="md" valign="top">(&nbsp;</td>
1031           <td class="md" nowrap valign="top">int&nbsp;</td>
1032           <td class="mdname1" valign="top" nowrap> <em>p</em>          </td>
1033           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1034           <td class="md" nowrap></td>
1035         </tr>
1036
1037       </table>
1038     </td>
1039   </tr>
1040 </table>
1041 <table cellspacing=5 cellpadding=0 border=0>
1042   <tr>
1043     <td>
1044       &nbsp;
1045     </td>
1046     <td>
1047
1048 <p>
1049 Set the port used by this connection. 
1050 <p>
1051 <dl compact><dt><b>Parameters:</b></dt><dd>
1052   <table border="0" cellspacing="2" cellpadding="0">
1053     <tr><td valign=top><em>p</em>&nbsp;</td><td>The port number to set for this connection</td></tr>
1054   </table>
1055 </dl>
1056     </td>
1057   </tr>
1058 </table>
1059 <a name="a7" doxytag="ircd_connector::SetState"></a><p>
1060 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1061   <tr>
1062     <td class="mdRow">
1063       <table cellpadding="0" cellspacing="0" border="0">
1064         <tr>
1065           <td class="md" nowrap valign="top"> void ircd_connector::SetState </td>
1066           <td class="md" valign="top">(&nbsp;</td>
1067           <td class="md" nowrap valign="top">int&nbsp;</td>
1068           <td class="mdname1" valign="top" nowrap> <em>state</em>          </td>
1069           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1070           <td class="md" nowrap></td>
1071         </tr>
1072
1073       </table>
1074     </td>
1075   </tr>
1076 </table>
1077 <table cellspacing=5 cellpadding=0 border=0>
1078   <tr>
1079     <td>
1080       &nbsp;
1081     </td>
1082     <td>
1083
1084 <p>
1085 Set the state flags for this connection. 
1086 <p>
1087 <dl compact><dt><b>Parameters:</b></dt><dd>
1088   <table border="0" cellspacing="2" cellpadding="0">
1089     <tr><td valign=top><em>state</em>&nbsp;</td><td>The state flags to set for this connection</td></tr>
1090   </table>
1091 </dl>
1092
1093 <p>
1094 Referenced by <a class="el" href="servers_8cpp-source.html#l00212">serverrec::AddIncoming()</a>, <a class="el" href="servers_8cpp-source.html#l00142">serverrec::BeginLink()</a>, <a class="el" href="servers_8cpp-source.html#l00182">serverrec::MeshCookie()</a>, and <a class="el" href="servers_8cpp-source.html#l00350">serverrec::SendPacket()</a>.    </td>
1095   </tr>
1096 </table>
1097 <a name="a19" doxytag="ircd_connector::SetVersionString"></a><p>
1098 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1099   <tr>
1100     <td class="mdRow">
1101       <table cellpadding="0" cellspacing="0" border="0">
1102         <tr>
1103           <td class="md" nowrap valign="top"> void ircd_connector::SetVersionString </td>
1104           <td class="md" valign="top">(&nbsp;</td>
1105           <td class="md" nowrap valign="top">std::string&nbsp;</td>
1106           <td class="mdname1" valign="top" nowrap> <em>newversion</em>          </td>
1107           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1108           <td class="md" nowrap></td>
1109         </tr>
1110
1111       </table>
1112     </td>
1113   </tr>
1114 </table>
1115 <table cellspacing=5 cellpadding=0 border=0>
1116   <tr>
1117     <td>
1118       &nbsp;
1119     </td>
1120     <td>
1121
1122 <p>
1123 This method sets the version string of the remote server. 
1124 <p>
1125 <dl compact><dt><b>Parameters:</b></dt><dd>
1126   <table border="0" cellspacing="2" cellpadding="0">
1127     <tr><td valign=top><em>newversion</em>&nbsp;</td><td>The version string to set</td></tr>
1128   </table>
1129 </dl>
1130     </td>
1131   </tr>
1132 </table>
1133 <a name="a23" doxytag="ircd_connector::SetWriteError"></a><p>
1134 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1135   <tr>
1136     <td class="mdRow">
1137       <table cellpadding="0" cellspacing="0" border="0">
1138         <tr>
1139           <td class="md" nowrap valign="top"> void ircd_connector::SetWriteError </td>
1140           <td class="md" valign="top">(&nbsp;</td>
1141           <td class="md" nowrap valign="top">std::string&nbsp;</td>
1142           <td class="mdname1" valign="top" nowrap> <em>error</em>          </td>
1143           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1144           <td class="md" nowrap></td>
1145         </tr>
1146
1147       </table>
1148     </td>
1149   </tr>
1150 </table>
1151 <table cellspacing=5 cellpadding=0 border=0>
1152   <tr>
1153     <td>
1154       &nbsp;
1155     </td>
1156     <td>
1157
1158 <p>
1159 Sets the error string for this connection. 
1160 <p>
1161 <dl compact><dt><b>Parameters:</b></dt><dd>
1162   <table border="0" cellspacing="2" cellpadding="0">
1163     <tr><td valign=top><em>error</em>&nbsp;</td><td>The error string to set</td></tr>
1164   </table>
1165 </dl>
1166     </td>
1167   </tr>
1168 </table>
1169 <hr><h2>Member Data Documentation</h2>
1170 <a name="r0" doxytag="ircd_connector::addr"></a><p>
1171 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1172   <tr>
1173     <td class="mdRow">
1174       <table cellpadding="0" cellspacing="0" border="0">
1175         <tr>
1176           <td class="md" nowrap valign="top"> sockaddr_in <a class="el" href="classircd__connector.html#r0">ircd_connector::addr</a><code> [private]</code>
1177       </table>
1178     </td>
1179   </tr>
1180 </table>
1181 <table cellspacing=5 cellpadding=0 border=0>
1182   <tr>
1183     <td>
1184       &nbsp;
1185     </td>
1186     <td>
1187
1188 <p>
1189 Sockaddr of the outbound ip and port. 
1190 <p>
1191
1192 <p>
1193 Definition at line <a class="el" href="connection_8h-source.html#l00061">61</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1194   </tr>
1195 </table>
1196 <a name="r3" doxytag="ircd_connector::description"></a><p>
1197 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1198   <tr>
1199     <td class="mdRow">
1200       <table cellpadding="0" cellspacing="0" border="0">
1201         <tr>
1202           <td class="md" nowrap valign="top"> std::string <a class="el" href="classircd__connector.html#r3">ircd_connector::description</a><code> [private]</code>
1203       </table>
1204     </td>
1205   </tr>
1206 </table>
1207 <table cellspacing=5 cellpadding=0 border=0>
1208   <tr>
1209     <td>
1210       &nbsp;
1211     </td>
1212     <td>
1213
1214 <p>
1215 <a class="el" href="classServer.html">Server</a> 'GECOS'. 
1216 <p>
1217
1218 <p>
1219 Definition at line <a class="el" href="connection_8h-source.html#l00073">73</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1220   </tr>
1221 </table>
1222 <a name="r1" doxytag="ircd_connector::fd"></a><p>
1223 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1224   <tr>
1225     <td class="mdRow">
1226       <table cellpadding="0" cellspacing="0" border="0">
1227         <tr>
1228           <td class="md" nowrap valign="top"> int <a class="el" href="classircd__connector.html#r1">ircd_connector::fd</a><code> [private]</code>
1229       </table>
1230     </td>
1231   </tr>
1232 </table>
1233 <table cellspacing=5 cellpadding=0 border=0>
1234   <tr>
1235     <td>
1236       &nbsp;
1237     </td>
1238     <td>
1239
1240 <p>
1241 File descriptor of the connection. 
1242 <p>
1243
1244 <p>
1245 Definition at line <a class="el" href="connection_8h-source.html#l00065">65</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1246   </tr>
1247 </table>
1248 <a name="o1" doxytag="ircd_connector::host"></a><p>
1249 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1250   <tr>
1251     <td class="mdRow">
1252       <table cellpadding="0" cellspacing="0" border="0">
1253         <tr>
1254           <td class="md" nowrap valign="top"> char <a class="el" href="classircd__connector.html#o1">ircd_connector::host</a>[MAXBUF]
1255       </table>
1256     </td>
1257   </tr>
1258 </table>
1259 <table cellspacing=5 cellpadding=0 border=0>
1260   <tr>
1261     <td>
1262       &nbsp;
1263     </td>
1264     <td>
1265
1266 <p>
1267 When MakeOutboundConnection is called, these public members are filled with the details passed to the function, for future reference. 
1268 <p>
1269
1270 <p>
1271 Definition at line <a class="el" href="connection_8h-source.html#l00117">117</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1272   </tr>
1273 </table>
1274 <a name="o0" doxytag="ircd_connector::ircdbuffer"></a><p>
1275 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1276   <tr>
1277     <td class="mdRow">
1278       <table cellpadding="0" cellspacing="0" border="0">
1279         <tr>
1280           <td class="md" nowrap valign="top"> std::string <a class="el" href="classircd__connector.html#o0">ircd_connector::ircdbuffer</a>
1281       </table>
1282     </td>
1283   </tr>
1284 </table>
1285 <table cellspacing=5 cellpadding=0 border=0>
1286   <tr>
1287     <td>
1288       &nbsp;
1289     </td>
1290     <td>
1291
1292 <p>
1293 IRCD Buffer for input characters, holds as many lines as are pending - Note that the final line may not be complete and should only be read when there is a <br>
1294  seperator. 
1295 <p>
1296
1297 <p>
1298 Definition at line <a class="el" href="connection_8h-source.html#l00110">110</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1299   </tr>
1300 </table>
1301 <a name="r8" doxytag="ircd_connector::nextping"></a><p>
1302 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1303   <tr>
1304     <td class="mdRow">
1305       <table cellpadding="0" cellspacing="0" border="0">
1306         <tr>
1307           <td class="md" nowrap valign="top"> time_t <a class="el" href="classircd__connector.html#r8">ircd_connector::nextping</a><code> [private]</code>
1308       </table>
1309     </td>
1310   </tr>
1311 </table>
1312 <table cellspacing=5 cellpadding=0 border=0>
1313   <tr>
1314     <td>
1315       &nbsp;
1316     </td>
1317     <td>
1318
1319 <p>
1320 Time this connection was last pinged. 
1321 <p>
1322
1323 <p>
1324 Definition at line <a class="el" href="connection_8h-source.html#l00098">98</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1325   </tr>
1326 </table>
1327 <a name="o2" doxytag="ircd_connector::port"></a><p>
1328 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1329   <tr>
1330     <td class="mdRow">
1331       <table cellpadding="0" cellspacing="0" border="0">
1332         <tr>
1333           <td class="md" nowrap valign="top"> int <a class="el" href="classircd__connector.html#o2">ircd_connector::port</a>
1334       </table>
1335     </td>
1336   </tr>
1337 </table>
1338 <table cellspacing=5 cellpadding=0 border=0>
1339   <tr>
1340     <td>
1341       &nbsp;
1342     </td>
1343     <td>
1344
1345 <p>
1346 When MakeOutboundConnection is called, these public members are filled with the details passed to the function, for future reference. 
1347 <p>
1348
1349 <p>
1350 Definition at line <a class="el" href="connection_8h-source.html#l00123">123</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1351   </tr>
1352 </table>
1353 <a name="r9" doxytag="ircd_connector::replied"></a><p>
1354 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1355   <tr>
1356     <td class="mdRow">
1357       <table cellpadding="0" cellspacing="0" border="0">
1358         <tr>
1359           <td class="md" nowrap valign="top"> bool <a class="el" href="classircd__connector.html#r9">ircd_connector::replied</a><code> [private]</code>
1360       </table>
1361     </td>
1362   </tr>
1363 </table>
1364 <table cellspacing=5 cellpadding=0 border=0>
1365   <tr>
1366     <td>
1367       &nbsp;
1368     </td>
1369     <td>
1370
1371 <p>
1372 Did this connection reply to its last ping? 
1373 <p>
1374
1375 <p>
1376 Definition at line <a class="el" href="connection_8h-source.html#l00102">102</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1377   </tr>
1378 </table>
1379 <a name="o3" doxytag="ircd_connector::routes"></a><p>
1380 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1381   <tr>
1382     <td class="mdRow">
1383       <table cellpadding="0" cellspacing="0" border="0">
1384         <tr>
1385           <td class="md" nowrap valign="top"> std::vector&lt;std::string&gt; <a class="el" href="classircd__connector.html#o3">ircd_connector::routes</a>
1386       </table>
1387     </td>
1388   </tr>
1389 </table>
1390 <table cellspacing=5 cellpadding=0 border=0>
1391   <tr>
1392     <td>
1393       &nbsp;
1394     </td>
1395     <td>
1396
1397 <p>
1398 <a class="el" href="classServer.html">Server</a> names of servers that this server is linked to So for A-&gt;B-&gt;C, if this was the record for B it would contain A and C whilever both servers are connected to B. 
1399 <p>
1400
1401 <p>
1402 Definition at line <a class="el" href="connection_8h-source.html#l00129">129</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1403   </tr>
1404 </table>
1405 <a name="r6" doxytag="ircd_connector::sendq"></a><p>
1406 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1407   <tr>
1408     <td class="mdRow">
1409       <table cellpadding="0" cellspacing="0" border="0">
1410         <tr>
1411           <td class="md" nowrap valign="top"> std::string <a class="el" href="classircd__connector.html#r6">ircd_connector::sendq</a><code> [private]</code>
1412       </table>
1413     </td>
1414   </tr>
1415 </table>
1416 <table cellspacing=5 cellpadding=0 border=0>
1417   <tr>
1418     <td>
1419       &nbsp;
1420     </td>
1421     <td>
1422
1423 <p>
1424 SendQ of the outbound connector, does not have a limit. 
1425 <p>
1426
1427 <p>
1428 Definition at line <a class="el" href="connection_8h-source.html#l00090">90</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1429   </tr>
1430 </table>
1431 <a name="r2" doxytag="ircd_connector::servername"></a><p>
1432 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1433   <tr>
1434     <td class="mdRow">
1435       <table cellpadding="0" cellspacing="0" border="0">
1436         <tr>
1437           <td class="md" nowrap valign="top"> std::string <a class="el" href="classircd__connector.html#r2">ircd_connector::servername</a><code> [private]</code>
1438       </table>
1439     </td>
1440   </tr>
1441 </table>
1442 <table cellspacing=5 cellpadding=0 border=0>
1443   <tr>
1444     <td>
1445       &nbsp;
1446     </td>
1447     <td>
1448
1449 <p>
1450 <a class="el" href="classServer.html">Server</a> name. 
1451 <p>
1452
1453 <p>
1454 Definition at line <a class="el" href="connection_8h-source.html#l00069">69</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1455   </tr>
1456 </table>
1457 <a name="r4" doxytag="ircd_connector::state"></a><p>
1458 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1459   <tr>
1460     <td class="mdRow">
1461       <table cellpadding="0" cellspacing="0" border="0">
1462         <tr>
1463           <td class="md" nowrap valign="top"> char <a class="el" href="classircd__connector.html#r4">ircd_connector::state</a><code> [private]</code>
1464       </table>
1465     </td>
1466   </tr>
1467 </table>
1468 <table cellspacing=5 cellpadding=0 border=0>
1469   <tr>
1470     <td>
1471       &nbsp;
1472     </td>
1473     <td>
1474
1475 <p>
1476 State. 
1477 <p>
1478 STATE_NOAUTH_INBOUND, STATE_NOAUTH_OUTBOUND STATE_SYNC, STATE_DISCONNECTED, STATE_CONNECTED
1479 <p>
1480 Definition at line <a class="el" href="connection_8h-source.html#l00078">78</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1481   </tr>
1482 </table>
1483 <a name="r5" doxytag="ircd_connector::version"></a><p>
1484 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1485   <tr>
1486     <td class="mdRow">
1487       <table cellpadding="0" cellspacing="0" border="0">
1488         <tr>
1489           <td class="md" nowrap valign="top"> std::string <a class="el" href="classircd__connector.html#r5">ircd_connector::version</a><code> [private]</code>
1490       </table>
1491     </td>
1492   </tr>
1493 </table>
1494 <table cellspacing=5 cellpadding=0 border=0>
1495   <tr>
1496     <td>
1497       &nbsp;
1498     </td>
1499     <td>
1500
1501 <p>
1502 This string holds the ircd's version response. 
1503 <p>
1504
1505 <p>
1506 Definition at line <a class="el" href="connection_8h-source.html#l00086">86</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1507   </tr>
1508 </table>
1509 <a name="r7" doxytag="ircd_connector::WriteError"></a><p>
1510 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1511   <tr>
1512     <td class="mdRow">
1513       <table cellpadding="0" cellspacing="0" border="0">
1514         <tr>
1515           <td class="md" nowrap valign="top"> std::string <a class="el" href="classircd__connector.html#r7">ircd_connector::WriteError</a><code> [private]</code>
1516       </table>
1517     </td>
1518   </tr>
1519 </table>
1520 <table cellspacing=5 cellpadding=0 border=0>
1521   <tr>
1522     <td>
1523       &nbsp;
1524     </td>
1525     <td>
1526
1527 <p>
1528 Write error of connection. 
1529 <p>
1530
1531 <p>
1532 Definition at line <a class="el" href="connection_8h-source.html#l00094">94</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.    </td>
1533   </tr>
1534 </table>
1535 <hr>The documentation for this class was generated from the following file:<ul>
1536 <li><a class="el" href="connection_8h-source.html">connection.h</a></ul>
1537 <hr size="1"><address style="align: right;"><small>Generated on Mon May 30 05:17:18 2005 for InspIRCd by
1538 <a href="http://www.doxygen.org/index.html">
1539 <img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
1540 </a>1.3.3 </small></address>
1541 </body>
1542 </html>