<!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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File 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"> * <brain@chatspike.net></span> 00008 <span class="comment"> * <Craig@chatspike.net></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 <string></span> 00020 <span class="preprocessor">#include <map></span> 00021 <span class="preprocessor">#include <sys/types.h></span> 00022 <span class="preprocessor">#include <sys/socket.h></span> 00023 <span class="preprocessor">#include <netdb.h></span> 00024 <span class="preprocessor">#include <netinet/in.h></span> 00025 <span class="preprocessor">#include <unistd.h></span> 00026 <span class="preprocessor">#include <errno.h></span> 00027 <span class="preprocessor">#include <time.h></span> 00028 <span class="preprocessor">#include <vector></span> 00029 <span class="preprocessor">#include <deque></span> 00030 <span class="preprocessor">#include <sstream></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<std::string> <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<ircd_connector> <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<std::string> &messages, <span class="keywordtype">char</span>* host, std::deque<std::string> &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>