<!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.doxygen.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="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>
<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>
00042 std::string <a class="code" href="connection_8h.html#a6">CreateSum</a>();
00043 
<a name="l00056"></a><a class="code" href="classircd__connector.html">00056</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>
00057 {
00058  <span class="keyword">private</span>:
<a name="l00061"></a><a class="code" href="classircd__connector.html#r0">00061</a>         sockaddr_in <a class="code" href="classircd__connector.html#r0">addr</a>;
00062         
<a name="l00065"></a><a class="code" href="classircd__connector.html#r1">00065</a>         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#r1">fd</a>;
00066         
<a name="l00069"></a><a class="code" href="classircd__connector.html#r2">00069</a>         std::string <a class="code" href="classircd__connector.html#r2">servername</a>;
00070         
<a name="l00073"></a><a class="code" href="classircd__connector.html#r3">00073</a>         std::string <a class="code" href="classircd__connector.html#r3">description</a>;
00074         
<a name="l00078"></a><a class="code" href="classircd__connector.html#r4">00078</a>         <span class="keywordtype">char</span> <a class="code" href="classircd__connector.html#r4">state</a>;
00079         
00082         <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);
00083 
<a name="l00086"></a><a class="code" href="classircd__connector.html#r5">00086</a>         std::string <a class="code" href="classircd__connector.html#r5">version</a>;
00087 
00088  <span class="keyword">public</span>:
00089 
<a name="l00094"></a><a class="code" href="classircd__connector.html#o0">00094</a>         std::string <a class="code" href="classircd__connector.html#o0">ircdbuffer</a>;
00095 
00096  
<a name="l00101"></a><a class="code" href="classircd__connector.html#o1">00101</a>         <span class="keywordtype">char</span> <a class="code" href="classircd__connector.html#o1">host</a>[MAXBUF];
00102 
<a name="l00107"></a><a class="code" href="classircd__connector.html#o2">00107</a>         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#o2">port</a>;
00108         
<a name="l00113"></a><a class="code" href="classircd__connector.html#o3">00113</a>         std::vector&lt;std::string&gt; <a class="code" href="classircd__connector.html#o3">routes</a>;
00114         
00115 
00118         <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);
00119         
00122         std::string <a class="code" href="classircd__connector.html#a1">GetServerName</a>();
00123         
00126         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a2">SetServerName</a>(std::string serv);
00127         
00130         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#a3">GetDescriptor</a>();
00131         
00134         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a4">SetDescriptor</a>(<span class="keywordtype">int</span> fd);
00135         
00138         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#a5">GetState</a>();
00139         
00142         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a6">SetState</a>(<span class="keywordtype">int</span> state);
00143         
00146         <span class="keywordtype">char</span>* <a class="code" href="classircd__connector.html#a7">GetServerIP</a>();
00147         
00150         std::string <a class="code" href="classircd__connector.html#a8">GetDescription</a>();
00151         
00154         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a9">SetDescription</a>(std::string desc);
00155         
00161         <span class="keywordtype">int</span> <a class="code" href="classircd__connector.html#a10">GetServerPort</a>();
00162         
00165         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a11">SetServerPort</a>(<span class="keywordtype">int</span> p);
00166         
00169         <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);
00170         
00174         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a13">CloseConnection</a>();
00175 
00181         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a14">AddBuffer</a>(std::string a);
00182 
00187         <span class="keywordtype">bool</span> <a class="code" href="classircd__connector.html#a15">BufferIsComplete</a>();
00188 
00191         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a16">ClearBuffer</a>();
00192 
00197         std::string <a class="code" href="classircd__connector.html#a17">GetBuffer</a>();
00198 
00201         <span class="keywordtype">void</span> <a class="code" href="classircd__connector.html#a18">SetVersionString</a>(std::string newversion);
00202 
00206         std::string <a class="code" href="classircd__connector.html#a19">GetVersionString</a>();
00207 };
00208 
00209 
<a name="l00212"></a><a class="code" href="classconnection.html">00212</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>
00213 {
00214  <span class="keyword">public</span>:
<a name="l00217"></a><a class="code" href="classconnection.html#o0">00217</a>         <span class="keywordtype">int</span> <a class="code" href="classconnection.html#o0">fd</a>;
00218         
<a name="l00221"></a><a class="code" href="classconnection.html#o1">00221</a>         <span class="keywordtype">char</span> <a class="code" href="classconnection.html#o1">host</a>[160];
00222         
<a name="l00225"></a><a class="code" href="classconnection.html#o2">00225</a>         <span class="keywordtype">char</span> <a class="code" href="classconnection.html#o2">ip</a>[16];
00226         
<a name="l00229"></a><a class="code" href="classconnection.html#o3">00229</a>         <span class="keywordtype">long</span> <a class="code" href="classconnection.html#o3">bytes_in</a>;
00230 
<a name="l00233"></a><a class="code" href="classconnection.html#o4">00233</a>         <span class="keywordtype">long</span> <a class="code" href="classconnection.html#o4">bytes_out</a>;
00234 
<a name="l00237"></a><a class="code" href="classconnection.html#o5">00237</a>         <span class="keywordtype">long</span> <a class="code" href="classconnection.html#o5">cmds_in</a>;
00238 
<a name="l00241"></a><a class="code" href="classconnection.html#o6">00241</a>         <span class="keywordtype">long</span> <a class="code" href="classconnection.html#o6">cmds_out</a>;
00242 
<a name="l00245"></a><a class="code" href="classconnection.html#o7">00245</a>         <span class="keywordtype">bool</span> <a class="code" href="classconnection.html#o7">haspassed</a>;
00246 
<a name="l00251"></a><a class="code" href="classconnection.html#o8">00251</a>         <span class="keywordtype">int</span> <a class="code" href="classconnection.html#o8">port</a>;
00252         
<a name="l00255"></a><a class="code" href="classconnection.html#o9">00255</a>         <span class="keywordtype">char</span> <a class="code" href="classconnection.html#o9">registered</a>;
00256         
<a name="l00259"></a><a class="code" href="classconnection.html#o10">00259</a>         time_t <a class="code" href="classconnection.html#o10">lastping</a>;
00260         
<a name="l00263"></a><a class="code" href="classconnection.html#o11">00263</a>         time_t <a class="code" href="classconnection.html#o11">signon</a>;
00264         
<a name="l00267"></a><a class="code" href="classconnection.html#o12">00267</a>         time_t <a class="code" href="classconnection.html#o12">idle_lastmsg</a>;
00268         
<a name="l00271"></a><a class="code" href="classconnection.html#o13">00271</a>         time_t <a class="code" href="classconnection.html#o13">nping</a>;
00272         
<a name="l00276"></a><a class="code" href="classconnection.html#o14">00276</a>         std::vector&lt;ircd_connector&gt; <a class="code" href="classconnection.html#o14">connectors</a>;
00277         
00280         <a class="code" href="classconnection.html#a0">connection</a>();
00281         
00284         <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);
00285         
00288         <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);
00289         
00292         <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);
00293         
00296         <span class="keywordtype">void</span> <a class="code" href="classconnection.html#a4">TerminateLink</a>(<span class="keywordtype">char</span>* targethost);
00297         
00301         <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);
00302         
00307         <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, std::deque&lt;std::string&gt; &amp;sums);
00308         
00311         <a class="code" href="classircd__connector.html">ircd_connector</a>* <a class="code" href="classconnection.html#a7">FindHost</a>(std::string host);
00312         
00316         <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);
00317         
00318 };
00319 
00320 
00321 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun May 15 18:36:01 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>