<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>InspIRCd: connection.h Source File</title>
<link href="inspircd.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.3 -->
<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="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>connection.h</h1><a href="connection_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*       +------------------------------------+</span>
00002 <span class="comment"> *       | Inspire Internet Relay Chat Daemon |</span>
00003 <span class="comment"> *       +------------------------------------+</span>
00004 <span class="comment"> *</span>
00005 <span class="comment"> *  Inspire is copyright (C) 2002-2004 ChatSpike-Dev.</span>
00006 <span class="comment"> *                       E-mail:</span>
00007 <span class="comment"> *                &lt;brain@chatspike.net&gt;</span>
00008 <span class="comment"> *                &lt;Craig@chatspike.net&gt;</span>
00009 <span class="comment"> *     </span>
00010 <span class="comment"> * Written by Craig Edwards, Craig McLure, and others.</span>
00011 <span class="comment"> * This program is free but copyrighted software; see</span>
00012 <span class="comment"> *            the file COPYING for details.</span>
00013 <span class="comment"> *</span>
00014 <span class="comment"> * ---------------------------------------------------</span>
00015 <span class="comment"> */</span>
00016 
00017 <span class="preprocessor">#include "inspircd_config.h"</span>
00018 <span class="preprocessor">#include "<a class="code" href="base_8h.html">base.h</a>"</span>
00019 <span class="preprocessor">#include &lt;string&gt;</span>
00020 <span class="preprocessor">#include &lt;map&gt;</span>
00021 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
00022 <span class="preprocessor">#include &lt;sys/socket.h&gt;</span>
00023 <span class="preprocessor">#include &lt;netdb.h&gt;</span>
00024 <span class="preprocessor">#include &lt;netinet/in.h&gt;</span>
00025 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
00026 <span class="preprocessor">#include &lt;errno.h&gt;</span>
00027 <span class="preprocessor">#include &lt;time.h&gt;</span>
00028 <span class="preprocessor">#include &lt;vector&gt;</span>
00029 <span class="preprocessor">#include &lt;deque&gt;</span>
00030 <span class="preprocessor">#include &lt;sstream&gt;</span>
00031 
00032 <span class="preprocessor">#ifndef __CONNECTION_H__</span>
00033 <span class="preprocessor"></span><span class="preprocessor">#define __CONNECTION_H__</span>
00034 <span class="preprocessor"></span>
<a name="l00035"></a><a class="code" href="connection_8h.html#a0">00035</a> <span class="preprocessor">#define STATE_DISCONNECTED      0</span>
<a name="l00036"></a><a class="code" href="connection_8h.html#a1">00036</a> <span class="preprocessor"></span><span class="preprocessor">#define STATE_CONNECTED         1</span>
<a name="l00037"></a><a class="code" href="connection_8h.html#a2">00037</a> <span class="preprocessor"></span><span class="preprocessor">#define STATE_SYNC              2</span>
<a name="l00038"></a><a class="code" href="connection_8h.html#a3">00038</a> <span class="preprocessor"></span><span class="preprocessor">#define STATE_NOAUTH_INBOUND    3</span>
<a name="l00039"></a><a class="code" href="connection_8h.html#a4">00039</a> <span class="preprocessor"></span><span class="preprocessor">#define STATE_NOAUTH_OUTBOUND   4</span>
<a name="l00040"></a><a class="code" href="connection_8h.html#a5">00040</a> <span class="preprocessor"></span><span class="preprocessor">#define STATE_SERVICES          5</span>
00041 <span class="preprocessor"></span>
<a name="l00054"></a><a class="code" href="classircd__connector.html">00054</a> <span class="keyword">class </span><a class="code" href="classircd__connector.html">ircd_connector</a> : <span class="keyword">public</span> <a class="code" href="classExtensible.html">Extensible</a>
00055 {
00056  <span class="keyword">private</span>:
<a name="l00059"></a><a class="code" href="classircd__connector.html#r0">00059</a>         sockaddr_in <a class="code" href="classircd__connector.html#r0">addr</a>;
00060         
<a name="l00063"></a><a class="code" href="classircd__connector.html#r1">00063</a>         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#r1">fd</a>;
00064         
<a name="l00067"></a><a class="code" href="classircd__connector.html#r2">00067</a>         std::string <a class="code" href="classircd__connector.html#r2">servername</a>;
00068         
<a name="l00071"></a><a class="code" href="classircd__connector.html#r3">00071</a>         std::string <a class="code" href="classircd__connector.html#r3">description</a>;
00072         
<a name="l00076"></a><a class="code" href="classircd__connector.html#r4">00076</a>         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#r4">state</a>;
00077         
00080         <span class="keywordtype">bool</span> <a class="code" href="classircd__connector.html#d0">SetHostAddress</a>(<span class="keywordtype">char</span>* host, <span class="keywordtype">int</span> port);
00081 
<a name="l00084"></a><a class="code" href="classircd__connector.html#r5">00084</a>         std::string <a class="code" href="classircd__connector.html#r5">version</a>;
00085 
00086  <span class="keyword">public</span>:
00087 
<a name="l00092"></a><a class="code" href="classircd__connector.html#o0">00092</a>         std::string <a class="code" href="classircd__connector.html#o0">ircdbuffer</a>;
00093 
00094  
<a name="l00099"></a><a class="code" href="classircd__connector.html#o1">00099</a>         <span class="keywordtype">char</span> <a class="code" href="classircd__connector.html#o1">host</a>[MAXBUF];
00100 
<a name="l00105"></a><a class="code" href="classircd__connector.html#o2">00105</a>         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#o2">port</a>;
00106         
<a name="l00111"></a><a class="code" href="classircd__connector.html#o3">00111</a>         std::vector&lt;std::string&gt; <a class="code" href="classircd__connector.html#o3">routes</a>;
00112         
00113 
00116         <span class="keywordtype">bool</span> <a class="code" href="classircd__connector.html#a0">MakeOutboundConnection</a>(<span class="keywordtype">char</span>* newhost, <span class="keywordtype">int</span> newport);
00117         
00120         std::string <a class="code" href="classircd__connector.html#a1">GetServerName</a>();
00121         
00124         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a2">SetServerName</a>(std::string serv);
00125         
00128         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#a3">GetDescriptor</a>();
00129         
00132         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a4">SetDescriptor</a>(<span class="keywordtype">int</span> fd);
00133         
00136         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#a5">GetState</a>();
00137         
00140         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a6">SetState</a>(<span class="keywordtype">int</span> state);
00141         
00144         <span class="keywordtype">char</span>* <a class="code" href="classircd__connector.html#a7">GetServerIP</a>();
00145         
00148         std::string <a class="code" href="classircd__connector.html#a8">GetDescription</a>();
00149         
00152         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a9">SetDescription</a>(std::string desc);
00153         
00159         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#a10">GetServerPort</a>();
00160         
00163         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a11">SetServerPort</a>(<span class="keywordtype">int</span> p);
00164         
00167         <span class="keywordtype">bool</span> <a class="code" href="classircd__connector.html#a12">SetHostAndPort</a>(<span class="keywordtype">char</span>* newhost, <span class="keywordtype">int</span> newport);
00168         
00172         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a13">CloseConnection</a>();
00173 
00179         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a14">AddBuffer</a>(std::string a);
00180 
00185         <span class="keywordtype">bool</span> <a class="code" href="classircd__connector.html#a15">BufferIsComplete</a>();
00186 
00189         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a16">ClearBuffer</a>();
00190 
00195         std::string <a class="code" href="classircd__connector.html#a17">GetBuffer</a>();
00196 
00199         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a18">SetVersionString</a>(std::string newversion);
00200 
00204         std::string <a class="code" href="classircd__connector.html#a19">GetVersionString</a>();
00205 };
00206 
00207 
<a name="l00210"></a><a class="code" href="classconnection.html">00210</a> <span class="keyword">class </span><a class="code" href="classconnection.html">connection</a> : <span class="keyword">public</span> <a class="code" href="classExtensible.html">Extensible</a>
00211 {
00212  <span class="keyword">public</span>:
<a name="l00215"></a><a class="code" href="classconnection.html#o0">00215</a>         <span class="keywordtype">int</span> <a class="code" href="classconnection.html#o0">fd</a>;
00216         
<a name="l00219"></a><a class="code" href="classconnection.html#o1">00219</a>         <span class="keywordtype">char</span> <a class="code" href="classconnection.html#o1">host</a>[256];
00220         
<a name="l00223"></a><a class="code" href="classconnection.html#o2">00223</a>         <span class="keywordtype">char</span> <a class="code" href="classconnection.html#o2">ip</a>[32];
00224         
<a name="l00227"></a><a class="code" href="classconnection.html#o3">00227</a>         <span class="keywordtype">char</span> <a class="code" href="classconnection.html#o3">inbuf</a>[MAXBUF];
00228         
<a name="l00231"></a><a class="code" href="classconnection.html#o4">00231</a>         <span class="keywordtype">long</span> <a class="code" href="classconnection.html#o4">bytes_in</a>;
00232 
<a name="l00235"></a><a class="code" href="classconnection.html#o5">00235</a>         <span class="keywordtype">long</span> <a class="code" href="classconnection.html#o5">bytes_out</a>;
00236 
<a name="l00239"></a><a class="code" href="classconnection.html#o6">00239</a>         <span class="keywordtype">long</span> <a class="code" href="classconnection.html#o6">cmds_in</a>;
00240 
<a name="l00243"></a><a class="code" href="classconnection.html#o7">00243</a>         <span class="keywordtype">long</span> <a class="code" href="classconnection.html#o7">cmds_out</a>;
00244 
<a name="l00247"></a><a class="code" href="classconnection.html#o8">00247</a>         <span class="keywordtype">bool</span> <a class="code" href="classconnection.html#o8">haspassed</a>;
00248 
<a name="l00253"></a><a class="code" href="classconnection.html#o9">00253</a>         <span class="keywordtype">int</span> <a class="code" href="classconnection.html#o9">port</a>;
00254         
<a name="l00257"></a><a class="code" href="classconnection.html#o10">00257</a>         <span class="keywordtype">int</span> <a class="code" href="classconnection.html#o10">registered</a>;
00258         
<a name="l00261"></a><a class="code" href="classconnection.html#o11">00261</a>         <span class="keywordtype">short</span> <span class="keywordtype">int</span> <a class="code" href="classconnection.html#o11">state</a>;
00262         
<a name="l00265"></a><a class="code" href="classconnection.html#o12">00265</a>         time_t <a class="code" href="classconnection.html#o12">lastping</a>;
00266         
<a name="l00269"></a><a class="code" href="classconnection.html#o13">00269</a>         time_t <a class="code" href="classconnection.html#o13">signon</a>;
00270         
<a name="l00273"></a><a class="code" href="classconnection.html#o14">00273</a>         time_t <a class="code" href="classconnection.html#o14">idle_lastmsg</a>;
00274         
<a name="l00277"></a><a class="code" href="classconnection.html#o15">00277</a>         time_t <a class="code" href="classconnection.html#o15">nping</a>;
00278         
<a name="l00281"></a><a class="code" href="classconnection.html#o16">00281</a>         <span class="keywordtype">char</span> <a class="code" href="classconnection.html#o16">internal_addr</a>[MAXBUF];
00282         
<a name="l00285"></a><a class="code" href="classconnection.html#o17">00285</a>         <span class="keywordtype">int</span> <a class="code" href="classconnection.html#o17">internal_port</a>;
00286 
<a name="l00290"></a><a class="code" href="classconnection.html#o18">00290</a>         std::vector&lt;ircd_connector&gt; <a class="code" href="classconnection.html#o18">connectors</a>;
00291         
00294         <a class="code" href="classconnection.html#a0">connection</a>();
00295         
00298         <span class="keywordtype">bool</span> <a class="code" href="classconnection.html#a1">CreateListener</a>(<span class="keywordtype">char</span>* host, <span class="keywordtype">int</span> p);
00299         
00302         <span class="keywordtype">bool</span> <a class="code" href="classconnection.html#a2">BeginLink</a>(<span class="keywordtype">char</span>* targethost, <span class="keywordtype">int</span> port, <span class="keywordtype">char</span>* password, <span class="keywordtype">char</span>* servername, <span class="keywordtype">int</span> myport);
00303         
00306         <span class="keywordtype">bool</span> <a class="code" href="classconnection.html#a3">MeshCookie</a>(<span class="keywordtype">char</span>* targethost, <span class="keywordtype">int</span> port, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> cookie, <span class="keywordtype">char</span>* servername);
00307         
00310         <span class="keywordtype">void</span> <a class="code" href="classconnection.html#a4">TerminateLink</a>(<span class="keywordtype">char</span>* targethost);
00311         
00315         <span class="keywordtype">bool</span> <a class="code" href="classconnection.html#a5">SendPacket</a>(<span class="keywordtype">char</span> *message, <span class="keyword">const</span> <span class="keywordtype">char</span>* host);
00316         
00321         <span class="keywordtype">bool</span> <a class="code" href="classconnection.html#a6">RecvPacket</a>(std::deque&lt;std::string&gt; &amp;messages, <span class="keywordtype">char</span>* host);
00322         
00325         <a class="code" href="classircd__connector.html">ircd_connector</a>* <a class="code" href="classconnection.html#a7">FindHost</a>(std::string host);
00326         
00330         <span class="keywordtype">bool</span> <a class="code" href="classconnection.html#a8">AddIncoming</a>(<span class="keywordtype">int</span> fd,<span class="keywordtype">char</span>* targethost, <span class="keywordtype">int</span> sourceport);
00331         
00332 };
00333 
00334 
00335 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sat May 7 15:34:20 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
</a>1.3.3 </small></address>
</body>
</html>