summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-11-27 16:19:11 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-11-27 16:19:11 +0000
commit6f4a168a8d127beb3075cbcd07aeb5592aa4bbf8 (patch)
tree5212d342f429113b90d15d1b8bea93483f9256c5 /docs
parentcd9f9a8add02597a2998ba74b803ed3fbf81314c (diff)
Added new docs
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1967 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'docs')
-rw-r--r--docs/man/man3/InspSocket.3513
-rw-r--r--docs/man/man3/_home_.312
-rw-r--r--docs/man/man3/_home_brain_.312
-rw-r--r--docs/man/man3/_home_brain_inspircd-cvs_.312
-rw-r--r--docs/man/man3/_home_brain_inspircd-cvs_inspircd_.315
-rw-r--r--docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.348
-rw-r--r--docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.321
-rw-r--r--docs/man/man3/nspace_hash_ in_addr _.333
-rw-r--r--docs/man/man3/nspace_hash_ string _.333
-rw-r--r--docs/man/man3/socket.cpp.386
-rw-r--r--docs/man/man3/socket.h.385
11 files changed, 870 insertions, 0 deletions
diff --git a/docs/man/man3/InspSocket.3 b/docs/man/man3/InspSocket.3
new file mode 100644
index 000000000..a0c2e134c
--- /dev/null
+++ b/docs/man/man3/InspSocket.3
@@ -0,0 +1,513 @@
+.TH "InspSocket" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+InspSocket \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <socket.h>\fP
+.PP
+.SS "Public Member Functions"
+
+.in +1c
+.ti -1c
+.RI "\fBInspSocket\fP ()"
+.br
+.ti -1c
+.RI "\fBInspSocket\fP (int newfd)"
+.br
+.ti -1c
+.RI "\fBInspSocket\fP (\fBstd::string\fP \fBhost\fP, int \fBport\fP, bool listening, unsigned long maxtime)"
+.br
+.ti -1c
+.RI "virtual bool \fBOnConnected\fP ()"
+.br
+.ti -1c
+.RI "virtual void \fBOnError\fP (\fBInspSocketError\fP e)"
+.br
+.ti -1c
+.RI "virtual int \fBOnDisconnect\fP ()"
+.br
+.ti -1c
+.RI "virtual bool \fBOnDataReady\fP ()"
+.br
+.ti -1c
+.RI "virtual void \fBOnTimeout\fP ()"
+.br
+.ti -1c
+.RI "virtual void \fBOnClose\fP ()"
+.br
+.ti -1c
+.RI "virtual char * \fBRead\fP ()"
+.br
+.ti -1c
+.RI "virtual int \fBWrite\fP (\fBstd::string\fP data)"
+.br
+.ti -1c
+.RI "virtual int \fBOnIncomingConnection\fP (int newfd, char *ip)"
+.br
+.ti -1c
+.RI "void \fBSetState\fP (\fBInspSocketState\fP s)"
+.br
+.ti -1c
+.RI "\fBInspSocketState\fP \fBGetState\fP ()"
+.br
+.ti -1c
+.RI "bool \fBPoll\fP ()"
+.br
+.ti -1c
+.RI "virtual void \fBClose\fP ()"
+.br
+.ti -1c
+.RI "virtual \fB~InspSocket\fP ()"
+.br
+.in -1c
+.SS "Private Attributes"
+
+.in +1c
+.ti -1c
+.RI "int \fBfd\fP"
+.br
+.ti -1c
+.RI "\fBstd::string\fP \fBhost\fP"
+.br
+.ti -1c
+.RI "int \fBport\fP"
+.br
+.ti -1c
+.RI "\fBInspSocketState\fP \fBstate\fP"
+.br
+.ti -1c
+.RI "sockaddr_in \fBaddr\fP"
+.br
+.ti -1c
+.RI "in_addr \fBaddy\fP"
+.br
+.ti -1c
+.RI "time_t \fBtimeout_end\fP"
+.br
+.ti -1c
+.RI "bool \fBtimeout\fP"
+.br
+.ti -1c
+.RI "pollfd \fBpolls\fP"
+.br
+.ti -1c
+.RI "char \fBibuf\fP [1024]"
+.br
+.ti -1c
+.RI "sockaddr_in \fBclient\fP"
+.br
+.ti -1c
+.RI "sockaddr_in \fBserver\fP"
+.br
+.ti -1c
+.RI "socklen_t \fBlength\fP"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+Definition at line 30 of file socket.h.
+.SH "Constructor & Destructor Documentation"
+.PP
+.SS "InspSocket::InspSocket ()"
+.PP
+Definition at line 46 of file socket.cpp.
+.PP
+References I_DISCONNECTED, and state.
+.PP
+.nf
+47 {
+48 this->state = I_DISCONNECTED;
+49 }
+.fi
+.PP
+.SS "InspSocket::InspSocket (int newfd)"
+.PP
+Definition at line 51 of file socket.cpp.
+.PP
+References fd, I_CONNECTED, and state.
+.PP
+.nf
+52 {
+53 this->fd = newfd;
+54 this->state = I_CONNECTED;
+55 }
+.fi
+.PP
+.SS "InspSocket::InspSocket (\fBstd::string\fP host, int port, bool listening, unsigned long maxtime)"
+.PP
+Definition at line 57 of file socket.cpp.
+.PP
+References addr, addy, Close(), DEBUG, fd, I_CONNECTING, I_ERR_BIND, I_ERR_CONNECT, I_ERR_SOCKET, I_ERROR, I_LISTENING, OnError(), state, timeout, and timeout_end.
+.PP
+.nf
+58 {
+59 if (listening) {
+60 if ((this->fd = OpenTCPSocket()) == ERROR)
+61 {
+62 this->fd = -1;
+63 this->state = I_ERROR;
+64 this->OnError(I_ERR_SOCKET);
+65 log(DEBUG,'OpenTCPSocket() error');
+66 return;
+67 }
+68 else
+69 {
+70 if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR)
+71 {
+72 this->Close();
+73 this->fd = -1;
+74 this->state = I_ERROR;
+75 this->OnError(I_ERR_BIND);
+76 log(DEBUG,'BindSocket() error %s',strerror(errno));
+77 return;
+78 }
+79 else
+80 {
+81 this->state = I_LISTENING;
+82 log(DEBUG,'New socket now in I_LISTENING state');
+83 return;
+84 }
+85 }
+86 } else {
+87 char* ip;
+88 this->host = host;
+89 hostent* hoste = gethostbyname(host.c_str());
+90 if (!hoste) {
+91 ip = (char*)host.c_str();
+92 } else {
+93 struct in_addr* ia = (in_addr*)hoste->h_addr;
+94 ip = inet_ntoa(*ia);
+95 }
+96
+97 timeout_end = time(NULL)+maxtime;
+98 timeout = false;
+99 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+100 {
+101 this->state = I_ERROR;
+102 this->OnError(I_ERR_SOCKET);
+103 return;
+104 }
+105 this->port = port;
+106 inet_aton(ip,&addy);
+107 addr.sin_family = AF_INET;
+108 addr.sin_addr = addy;
+109 addr.sin_port = htons(this->port);
+110
+111 int flags;
+112 flags = fcntl(this->fd, F_GETFL, 0);
+113 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
+114
+115 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1)
+116 {
+117 if (errno != EINPROGRESS)
+118 {
+119 this->Close();
+120 this->OnError(I_ERR_CONNECT);
+121 this->state = I_ERROR;
+122 return;
+123 }
+124 }
+125 this->state = I_CONNECTING;
+126 return;
+127 }
+128 }
+.fi
+.PP
+.SS "InspSocket::~InspSocket ()\fC [virtual]\fP"
+.PP
+Definition at line 246 of file socket.cpp.
+.PP
+References Close().
+.PP
+.nf
+247 {
+248 this->Close();
+249 }
+.fi
+.PP
+.SH "Member Function Documentation"
+.PP
+.SS "void InspSocket::Close ()\fC [virtual]\fP"
+.PP
+Definition at line 130 of file socket.cpp.
+.PP
+References fd, and OnClose().
+.PP
+Referenced by InspSocket(), and ~InspSocket().
+.PP
+.nf
+131 {
+132 if (this->fd != -1)
+133 {
+134 this->OnClose();
+135 shutdown(this->fd,2);
+136 close(this->fd);
+137 this->fd = -1;
+138 }
+139 }
+.fi
+.PP
+.SS "\fBInspSocketState\fP InspSocket::GetState ()"
+.PP
+Definition at line 233 of file socket.cpp.
+.PP
+References state.
+.PP
+.nf
+234 {
+235 return this->state;
+236 }
+.fi
+.PP
+.SS "void InspSocket::OnClose ()\fC [virtual]\fP"
+.PP
+Definition at line 244 of file socket.cpp.
+.PP
+Referenced by Close().
+.PP
+.nf
+244 { return; }
+.fi
+.PP
+.SS "bool InspSocket::OnConnected ()\fC [virtual]\fP"
+.PP
+Definition at line 238 of file socket.cpp.
+.PP
+Referenced by Poll().
+.PP
+.nf
+238 { return true; }
+.fi
+.PP
+.SS "bool InspSocket::OnDataReady ()\fC [virtual]\fP"
+.PP
+Definition at line 242 of file socket.cpp.
+.PP
+Referenced by Poll().
+.PP
+.nf
+242 { return true; }
+.fi
+.PP
+.SS "int InspSocket::OnDisconnect ()\fC [virtual]\fP"
+.PP
+Definition at line 240 of file socket.cpp.
+.PP
+.nf
+240 { return 0; }
+.fi
+.PP
+.SS "void InspSocket::OnError (\fBInspSocketError\fP e)\fC [virtual]\fP"
+.PP
+Definition at line 239 of file socket.cpp.
+.PP
+Referenced by InspSocket(), and Poll().
+.PP
+.nf
+239 { return; }
+.fi
+.PP
+.SS "int InspSocket::OnIncomingConnection (int newfd, char * ip)\fC [virtual]\fP"
+.PP
+Definition at line 241 of file socket.cpp.
+.PP
+Referenced by Poll().
+.PP
+.nf
+241 { return 0; }
+.fi
+.PP
+.SS "void InspSocket::OnTimeout ()\fC [virtual]\fP"
+.PP
+Definition at line 243 of file socket.cpp.
+.PP
+Referenced by Poll().
+.PP
+.nf
+243 { return; }
+.fi
+.PP
+.SS "bool InspSocket::Poll ()"
+.PP
+Definition at line 183 of file socket.cpp.
+.PP
+References client, fd, I_CONNECTED, I_CONNECTING, I_ERR_TIMEOUT, I_ERROR, I_LISTENING, length, OnConnected(), OnDataReady(), OnError(), OnIncomingConnection(), OnTimeout(), polls, SetState(), state, timeout, and timeout_end.
+.PP
+.nf
+184 {
+185 if ((time(NULL) > timeout_end) && (this->state == I_CONNECTING))
+186 {
+187 // for non-listening sockets, the timeout can occur
+188 // which causes termination of the connection after
+189 // the given number of seconds without a successful
+190 // connection.
+191 this->OnTimeout();
+192 this->OnError(I_ERR_TIMEOUT);
+193 timeout = true;
+194 this->state = I_ERROR;
+195 return false;
+196 }
+197 polls.fd = this->fd;
+198 state == I_CONNECTING ? polls.events = POLLOUT : polls.events = POLLIN;
+199 int ret = poll(&polls,1,1);
+200
+201 if (ret > 0)
+202 {
+203 int incoming = -1;
+204
+205 switch (this->state)
+206 {
+207 case I_CONNECTING:
+208 this->SetState(I_CONNECTED);
+209 return this->OnConnected();
+210 break;
+211 case I_LISTENING:
+212 length = sizeof (client);
+213 incoming = accept (this->fd, (sockaddr*)&client,&length);
+214 this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr));
+215 return true;
+216 break;
+217 case I_CONNECTED:
+218 return this->OnDataReady();
+219 break;
+220 default:
+221 break;
+222 }
+223 }
+224 return true;
+225 }
+.fi
+.PP
+.SS "char * InspSocket::Read ()\fC [virtual]\fP"
+.PP
+Definition at line 141 of file socket.cpp.
+.PP
+References DEBUG, and ibuf.
+.PP
+.nf
+142 {
+143 int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0);
+144 if (n > 0)
+145 {
+146 ibuf[n] = 0;
+147 return ibuf;
+148 }
+149 else
+150 {
+151 log(DEBUG,'EOF or error on socket');
+152 return NULL;
+153 }
+154 }
+.fi
+.PP
+.SS "void InspSocket::SetState (\fBInspSocketState\fP s)"
+.PP
+Definition at line 227 of file socket.cpp.
+.PP
+References DEBUG, and state.
+.PP
+Referenced by Poll().
+.PP
+.nf
+228 {
+229 log(DEBUG,'Socket state change');
+230 this->state = s;
+231 }
+.fi
+.PP
+.SS "int InspSocket::Write (\fBstd::string\fP data)\fC [virtual]\fP"
+.PP
+Definition at line 160 of file socket.cpp.
+.PP
+.nf
+161 {
+162 char* d = (char*)data.c_str();
+163 unsigned int written = 0;
+164 int n = 0;
+165 int s = data.length();
+166 while ((written < data.length()) && (n >= 0))
+167 {
+168 n = send(this->fd,d,s,0);
+169 if (n > 0)
+170 {
+171 // If we didnt write everything, advance
+172 // the pointers so that when we retry
+173 // the next time around the loop, we try
+174 // to write what we failed to write before.
+175 written += n;
+176 s -= n;
+177 d += n;
+178 }
+179 }
+180 return written;
+181 }
+.fi
+.PP
+.SH "Member Data Documentation"
+.PP
+.SS "sockaddr_in \fBInspSocket::addr\fP\fC [private]\fP"
+.PP
+Definition at line 37 of file socket.h.
+.PP
+Referenced by InspSocket().
+.SS "in_addr \fBInspSocket::addy\fP\fC [private]\fP"
+.PP
+Definition at line 38 of file socket.h.
+.PP
+Referenced by InspSocket().
+.SS "sockaddr_in \fBInspSocket::client\fP\fC [private]\fP"
+.PP
+Definition at line 43 of file socket.h.
+.PP
+Referenced by Poll().
+.SS "int \fBInspSocket::fd\fP\fC [private]\fP"
+.PP
+Definition at line 33 of file socket.h.
+.PP
+Referenced by Close(), InspSocket(), and Poll().
+.SS "\fBstd::string\fP \fBInspSocket::host\fP\fC [private]\fP"
+.PP
+Definition at line 34 of file socket.h.
+.SS "char \fBInspSocket::ibuf\fP[1024]\fC [private]\fP"
+.PP
+Definition at line 42 of file socket.h.
+.PP
+Referenced by Read().
+.SS "socklen_t \fBInspSocket::length\fP\fC [private]\fP"
+.PP
+Definition at line 45 of file socket.h.
+.PP
+Referenced by Poll().
+.SS "pollfd \fBInspSocket::polls\fP\fC [private]\fP"
+.PP
+Definition at line 41 of file socket.h.
+.PP
+Referenced by Poll().
+.SS "int \fBInspSocket::port\fP\fC [private]\fP"
+.PP
+Definition at line 35 of file socket.h.
+.SS "sockaddr_in \fBInspSocket::server\fP\fC [private]\fP"
+.PP
+Definition at line 44 of file socket.h.
+.SS "\fBInspSocketState\fP \fBInspSocket::state\fP\fC [private]\fP"
+.PP
+Definition at line 36 of file socket.h.
+.PP
+Referenced by GetState(), InspSocket(), Poll(), and SetState().
+.SS "bool \fBInspSocket::timeout\fP\fC [private]\fP"
+.PP
+Definition at line 40 of file socket.h.
+.PP
+Referenced by InspSocket(), and Poll().
+.SS "time_t \fBInspSocket::timeout_end\fP\fC [private]\fP"
+.PP
+Definition at line 39 of file socket.h.
+.PP
+Referenced by InspSocket(), and Poll().
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/_home_.3 b/docs/man/man3/_home_.3
new file mode 100644
index 000000000..4551c1a19
--- /dev/null
+++ b/docs/man/man3/_home_.3
@@ -0,0 +1,12 @@
+.TH "/home/ Directory Reference" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+/home/ Directory Reference \-
+.SS "Directories"
+
+.in +1c
+.ti -1c
+.RI "directory \fBbrain\fP"
+.br
+.in -1c
diff --git a/docs/man/man3/_home_brain_.3 b/docs/man/man3/_home_brain_.3
new file mode 100644
index 000000000..57d2400e8
--- /dev/null
+++ b/docs/man/man3/_home_brain_.3
@@ -0,0 +1,12 @@
+.TH "/home/brain/ Directory Reference" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+/home/brain/ Directory Reference \-
+.SS "Directories"
+
+.in +1c
+.ti -1c
+.RI "directory \fBinspircd-cvs\fP"
+.br
+.in -1c
diff --git a/docs/man/man3/_home_brain_inspircd-cvs_.3 b/docs/man/man3/_home_brain_inspircd-cvs_.3
new file mode 100644
index 000000000..96ae7889f
--- /dev/null
+++ b/docs/man/man3/_home_brain_inspircd-cvs_.3
@@ -0,0 +1,12 @@
+.TH "/home/brain/inspircd-cvs/ Directory Reference" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+/home/brain/inspircd-cvs/ Directory Reference \-
+.SS "Directories"
+
+.in +1c
+.ti -1c
+.RI "directory \fBinspircd\fP"
+.br
+.in -1c
diff --git a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3 b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3
new file mode 100644
index 000000000..f1dad75d0
--- /dev/null
+++ b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3
@@ -0,0 +1,15 @@
+.TH "/home/brain/inspircd-cvs/inspircd/ Directory Reference" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+/home/brain/inspircd-cvs/inspircd/ Directory Reference \-
+.SS "Directories"
+
+.in +1c
+.ti -1c
+.RI "directory \fBinclude\fP"
+.br
+.ti -1c
+.RI "directory \fBsrc\fP"
+.br
+.in -1c
diff --git a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3 b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3
new file mode 100644
index 000000000..b7891755c
--- /dev/null
+++ b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3
@@ -0,0 +1,48 @@
+.TH "/home/brain/inspircd-cvs/inspircd/include/ Directory Reference" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+/home/brain/inspircd-cvs/inspircd/include/ Directory Reference \-
+.SS "Files"
+
+.in +1c
+.ti -1c
+.RI "file \fBbase.h\fP"
+.br
+.ti -1c
+.RI "file \fBchannels.h\fP"
+.br
+.ti -1c
+.RI "file \fBcommands.h\fP"
+.br
+.ti -1c
+.RI "file \fBconnection.h\fP"
+.br
+.ti -1c
+.RI "file \fBctables.h\fP"
+.br
+.ti -1c
+.RI "file \fBdns.h\fP"
+.br
+.ti -1c
+.RI "file \fBhashcomp.h\fP"
+.br
+.ti -1c
+.RI "file \fBmessage.h\fP"
+.br
+.ti -1c
+.RI "file \fBmode.h\fP"
+.br
+.ti -1c
+.RI "file \fBmodules.h\fP"
+.br
+.ti -1c
+.RI "file \fBsocket.h\fP"
+.br
+.ti -1c
+.RI "file \fBusers.h\fP"
+.br
+.ti -1c
+.RI "file \fBxline.h\fP"
+.br
+.in -1c
diff --git a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3 b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3
new file mode 100644
index 000000000..868e33670
--- /dev/null
+++ b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3
@@ -0,0 +1,21 @@
+.TH "/home/brain/inspircd-cvs/inspircd/src/ Directory Reference" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+/home/brain/inspircd-cvs/inspircd/src/ Directory Reference \-
+.SS "Files"
+
+.in +1c
+.ti -1c
+.RI "file \fBchannels.cpp\fP"
+.br
+.ti -1c
+.RI "file \fBmodules.cpp\fP"
+.br
+.ti -1c
+.RI "file \fBsocket.cpp\fP"
+.br
+.ti -1c
+.RI "file \fBusers.cpp\fP"
+.br
+.in -1c
diff --git a/docs/man/man3/nspace_hash_ in_addr _.3 b/docs/man/man3/nspace_hash_ in_addr _.3
new file mode 100644
index 000000000..c75ee4fc5
--- /dev/null
+++ b/docs/man/man3/nspace_hash_ in_addr _.3
@@ -0,0 +1,33 @@
+.TH "nspace::hash< in_addr >" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+nspace::hash< in_addr > \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <hashcomp.h>\fP
+.PP
+.SS "Public Member Functions"
+
+.in +1c
+.ti -1c
+.RI "size_t \fBoperator()\fP (const struct in_addr &a) const "
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SS "template<> struct nspace::hash< in_addr >"
+
+.PP
+Definition at line 54 of file hashcomp.h.
+.SH "Member Function Documentation"
+.PP
+.SS "size_t nspace::hash< in_addr >::operator() (const struct in_addr & a) const"
+.PP
+
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/nspace_hash_ string _.3 b/docs/man/man3/nspace_hash_ string _.3
new file mode 100644
index 000000000..8d218437a
--- /dev/null
+++ b/docs/man/man3/nspace_hash_ string _.3
@@ -0,0 +1,33 @@
+.TH "nspace::hash< string >" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+nspace::hash< string > \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <hashcomp.h>\fP
+.PP
+.SS "Public Member Functions"
+
+.in +1c
+.ti -1c
+.RI "size_t \fBoperator()\fP (const \fBstring\fP &s) const "
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SS "template<> struct nspace::hash< string >"
+
+.PP
+Definition at line 62 of file hashcomp.h.
+.SH "Member Function Documentation"
+.PP
+.SS "size_t nspace::hash< \fBstring\fP >::operator() (const \fBstring\fP & s) const"
+.PP
+
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/socket.cpp.3 b/docs/man/man3/socket.cpp.3
new file mode 100644
index 000000000..37e4f4a85
--- /dev/null
+++ b/docs/man/man3/socket.cpp.3
@@ -0,0 +1,86 @@
+.TH "socket.cpp" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+socket.cpp \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include 'inspircd_config.h'\fP
+.br
+\fC#include <sys/time.h>\fP
+.br
+\fC#include <sys/resource.h>\fP
+.br
+\fC#include <sys/types.h>\fP
+.br
+\fC#include <sys/socket.h>\fP
+.br
+\fC#include <netinet/in.h>\fP
+.br
+\fC#include <string>\fP
+.br
+\fC#include <unistd.h>\fP
+.br
+\fC#include <fcntl.h>\fP
+.br
+\fC#include <poll.h>\fP
+.br
+\fC#include <sstream>\fP
+.br
+\fC#include <iostream>\fP
+.br
+\fC#include <fstream>\fP
+.br
+\fC#include 'socket.h'\fP
+.br
+\fC#include 'inspircd.h'\fP
+.br
+\fC#include 'inspircd_io.h'\fP
+.br
+\fC#include 'inspircd_util.h'\fP
+.br
+\fC#include 'inspstring.h'\fP
+.br
+\fC#include 'helperfuncs.h'\fP
+.br
+
+.SS "Variables"
+
+.in +1c
+.ti -1c
+.RI "FILE * \fBlog_file\fP"
+.br
+.ti -1c
+.RI "int \fBboundPortCount\fP"
+.br
+.ti -1c
+.RI "int \fBopenSockfd\fP [MAXSOCKS]"
+.br
+.ti -1c
+.RI "time_t \fBTIME\fP"
+.br
+.ti -1c
+.RI "bool \fBunlimitcore\fP"
+.br
+.ti -1c
+.RI "int \fBMaxConn\fP"
+.br
+.in -1c
+.SH "Variable Documentation"
+.PP
+.SS "int \fBboundPortCount\fP"
+.PP
+.SS "FILE* \fBlog_file\fP"
+.PP
+.SS "int \fBMaxConn\fP"
+.PP
+.SS "int \fBopenSockfd\fP[MAXSOCKS]"
+.PP
+.SS "time_t \fBTIME\fP"
+.PP
+.SS "bool \fBunlimitcore\fP"
+.PP
+.SH "Author"
+.PP
+Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/socket.h.3 b/docs/man/man3/socket.h.3
new file mode 100644
index 000000000..a41c11226
--- /dev/null
+++ b/docs/man/man3/socket.h.3
@@ -0,0 +1,85 @@
+.TH "socket.h" 3 "27 Nov 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+socket.h \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <sys/types.h>\fP
+.br
+\fC#include <sys/socket.h>\fP
+.br
+\fC#include <netinet/in.h>\fP
+.br
+\fC#include <poll.h>\fP
+.br
+\fC#include <sstream>\fP
+.br
+\fC#include <string>\fP
+.br
+
+.SS "Classes"
+
+.in +1c
+.ti -1c
+.RI "class \fBInspSocket\fP"
+.br
+.in -1c
+.SS "Enumerations"
+
+.in +1c
+.ti -1c
+.RI "enum \fBInspSocketState\fP { \fBI_DISCONNECTED\fP, \fBI_CONNECTING\fP, \fBI_CONNECTED\fP, \fBI_LISTENING\fP, \fBI_ERROR\fP }"
+.br
+.ti -1c
+.RI "enum \fBInspSocketError\fP { \fBI_ERR_TIMEOUT\fP, \fBI_ERR_SOCKET\fP, \fBI_ERR_CONNECT\fP, \fBI_ERR_BIND\fP }"
+.br
+.in -1c
+.SH "Enumeration Type Documentation"
+.PP
+.SS "enum \fBInspSocketError\fP"
+.PP
+\fBEnumerator: \fP
+.in +1c
+.TP
+\fB\fII_ERR_TIMEOUT \fP\fP
+.TP
+\fB\fII_ERR_SOCKET \fP\fP
+.TP
+\fB\fII_ERR_CONNECT \fP\fP
+.TP
+\fB\fII_ERR_BIND \fP\fP
+
+.PP
+Definition at line 28 of file socket.h.
+.PP
+.nf
+28 { I_ERR_TIMEOUT, I_ERR_SOCKET, I_ERR_CONNECT, I_ERR_BIND };
+.fi
+.PP
+.SS "enum \fBInspSocketState\fP"
+.PP
+\fBEnumerator: \fP
+.in +1c
+.TP
+\fB\fII_DISCONNECTED \fP\fP
+.TP
+\fB\fII_CONNECTING \fP\fP
+.TP
+\fB\fII_CONNECTED \fP\fP
+.TP
+\fB\fII_LISTENING \fP\fP
+.TP
+\fB\fII_ERROR \fP\fP
+
+.PP
+Definition at line 27 of file socket.h.
+.PP
+.nf
+27 { I_DISCONNECTED, I_CONNECTING, I_CONNECTED, I_LISTENING, I_ERROR };
+.fi
+.PP
+.SH "Author"
+.PP
+Generated automatically by Doxygen for InspIRCd from the source code.