diff options
Diffstat (limited to 'docs/module-doc/classInspSocket.html')
-rw-r--r-- | docs/module-doc/classInspSocket.html | 408 |
1 files changed, 206 insertions, 202 deletions
diff --git a/docs/module-doc/classInspSocket.html b/docs/module-doc/classInspSocket.html index e8b83e847..755cb1ca0 100644 --- a/docs/module-doc/classInspSocket.html +++ b/docs/module-doc/classInspSocket.html @@ -151,11 +151,11 @@ The default constructor does nothing and should not be used. <p> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00049">49</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00048">48</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00050"></a>00050 { -<a name="l00051"></a>00051 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>; -<a name="l00052"></a>00052 } +References <a class="el" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00049"></a>00049 { +<a name="l00050"></a>00050 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>; +<a name="l00051"></a>00051 } </pre></div> <p> </td> @@ -199,13 +199,14 @@ This constructor is used to associate an existing connecting with an InspSocket <p> The given file descriptor must be valid, and when initialized, the InspSocket will be set with the given IP address and placed in CONNECTED state. <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00054">54</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00053">53</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h-source.html#l00113">IP</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00055"></a>00055 { -<a name="l00056"></a>00056 this-><a class="code" href="classInspSocket.html#fd">fd</a> = newfd; -<a name="l00057"></a>00057 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>; -<a name="l00058"></a>00058 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip; -<a name="l00059"></a>00059 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>); +References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h-source.html#l00113">IP</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00054"></a>00054 { +<a name="l00055"></a>00055 this-><a class="code" href="classInspSocket.html#fd">fd</a> = newfd; +<a name="l00056"></a>00056 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>; +<a name="l00057"></a>00057 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip; +<a name="l00058"></a>00058 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>); +<a name="l00059"></a>00059 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>; <a name="l00060"></a>00060 } </pre></div> <p> @@ -272,81 +273,83 @@ This constructor is used to create a new socket, either listening for connection <p> Definition at line <a class="el" href="socket_8cpp-source.html#l00062">62</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00078">addr</a>, <a class="el" href="socket_8h-source.html#l00084">addy</a>, <a class="el" href="socket_8cpp-source.html#l00139">Close()</a>, <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00113">IP</a>, <a class="el" href="socket_8cpp-source.html#l00262">OnError()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00063"></a>00063 { +References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00078">addr</a>, <a class="el" href="socket_8h-source.html#l00084">addy</a>, <a class="el" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00113">IP</a>, <a class="el" href="socket_8cpp-source.html#l00265">OnError()</a>, <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00063"></a>00063 { <a name="l00064"></a>00064 <span class="keywordflow">if</span> (listening) { -<a name="l00065"></a>00065 <span class="keywordflow">if</span> ((this->fd = OpenTCPSocket()) == ERROR) +<a name="l00065"></a>00065 <span class="keywordflow">if</span> ((this->fd = <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a>()) == ERROR) <a name="l00066"></a>00066 { <a name="l00067"></a>00067 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1; <a name="l00068"></a>00068 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>; <a name="l00069"></a>00069 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>); -<a name="l00070"></a>00070 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>); +<a name="l00070"></a>00070 log(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>); <a name="l00071"></a>00071 <span class="keywordflow">return</span>; <a name="l00072"></a>00072 } <a name="l00073"></a>00073 <span class="keywordflow">else</span> <a name="l00074"></a>00074 { -<a name="l00075"></a>00075 <span class="keywordflow">if</span> (BindSocket(this->fd,this->client,this->server,<a class="code" href="classInspSocket.html#port">port</a>,(<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str()) == ERROR) +<a name="l00075"></a>00075 <span class="keywordflow">if</span> (<a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a>(this->fd,this->client,this->server,<a class="code" href="classInspSocket.html#port">port</a>,(<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str()) == ERROR) <a name="l00076"></a>00076 { <a name="l00077"></a>00077 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>(); <a name="l00078"></a>00078 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1; <a name="l00079"></a>00079 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>; <a name="l00080"></a>00080 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>); -<a name="l00081"></a>00081 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno)); +<a name="l00081"></a>00081 log(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno)); <a name="l00082"></a>00082 <span class="keywordflow">return</span>; <a name="l00083"></a>00083 } <a name="l00084"></a>00084 <span class="keywordflow">else</span> <a name="l00085"></a>00085 { <a name="l00086"></a>00086 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>; <a name="l00087"></a>00087 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>); -<a name="l00088"></a>00088 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>); -<a name="l00089"></a>00089 <span class="keywordflow">return</span>; -<a name="l00090"></a>00090 } -<a name="l00091"></a>00091 } -<a name="l00092"></a>00092 } <span class="keywordflow">else</span> { -<a name="l00093"></a>00093 <span class="keywordtype">char</span>* ip; -<a name="l00094"></a>00094 this-><a class="code" href="classInspSocket.html#host">host</a> = <a class="code" href="classInspSocket.html#host">host</a>; -<a name="l00095"></a>00095 hostent* hoste = gethostbyname(<a class="code" href="classInspSocket.html#host">host</a>.c_str()); -<a name="l00096"></a>00096 <span class="keywordflow">if</span> (!hoste) { -<a name="l00097"></a>00097 ip = (<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str(); -<a name="l00098"></a>00098 } <span class="keywordflow">else</span> { -<a name="l00099"></a>00099 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste->h_addr; -<a name="l00100"></a>00100 ip = inet_ntoa(*ia); -<a name="l00101"></a>00101 } -<a name="l00102"></a>00102 -<a name="l00103"></a>00103 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip; -<a name="l00104"></a>00104 -<a name="l00105"></a>00105 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime; -<a name="l00106"></a>00106 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>; -<a name="l00107"></a>00107 <span class="keywordflow">if</span> ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) -<a name="l00108"></a>00108 { -<a name="l00109"></a>00109 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>; -<a name="l00110"></a>00110 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>); -<a name="l00111"></a>00111 <span class="keywordflow">return</span>; -<a name="l00112"></a>00112 } -<a name="l00113"></a>00113 this-><a class="code" href="classInspSocket.html#port">port</a> = <a class="code" href="classInspSocket.html#port">port</a>; -<a name="l00114"></a>00114 inet_aton(ip,&<a class="code" href="classInspSocket.html#addy">addy</a>); -<a name="l00115"></a>00115 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET; -<a name="l00116"></a>00116 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>; -<a name="l00117"></a>00117 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this->port); -<a name="l00118"></a>00118 -<a name="l00119"></a>00119 <span class="keywordtype">int</span> flags; -<a name="l00120"></a>00120 flags = fcntl(this->fd, F_GETFL, 0); -<a name="l00121"></a>00121 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK); -<a name="l00122"></a>00122 -<a name="l00123"></a>00123 <span class="keywordflow">if</span>(connect(this->fd, (sockaddr*)&this->addr,<span class="keyword">sizeof</span>(this->addr)) == -1) -<a name="l00124"></a>00124 { -<a name="l00125"></a>00125 <span class="keywordflow">if</span> (errno != EINPROGRESS) -<a name="l00126"></a>00126 { -<a name="l00127"></a>00127 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>(); -<a name="l00128"></a>00128 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>); -<a name="l00129"></a>00129 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>; -<a name="l00130"></a>00130 <span class="keywordflow">return</span>; -<a name="l00131"></a>00131 } -<a name="l00132"></a>00132 } -<a name="l00133"></a>00133 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>; -<a name="l00134"></a>00134 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>); -<a name="l00135"></a>00135 <span class="keywordflow">return</span>; -<a name="l00136"></a>00136 } -<a name="l00137"></a>00137 } +<a name="l00088"></a>00088 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>; +<a name="l00089"></a>00089 log(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>); +<a name="l00090"></a>00090 <span class="keywordflow">return</span>; +<a name="l00091"></a>00091 } +<a name="l00092"></a>00092 } +<a name="l00093"></a>00093 } <span class="keywordflow">else</span> { +<a name="l00094"></a>00094 <span class="keywordtype">char</span>* ip; +<a name="l00095"></a>00095 this-><a class="code" href="classInspSocket.html#host">host</a> = <a class="code" href="classInspSocket.html#host">host</a>; +<a name="l00096"></a>00096 hostent* hoste = gethostbyname(<a class="code" href="classInspSocket.html#host">host</a>.c_str()); +<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!hoste) { +<a name="l00098"></a>00098 ip = (<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str(); +<a name="l00099"></a>00099 } <span class="keywordflow">else</span> { +<a name="l00100"></a>00100 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste->h_addr; +<a name="l00101"></a>00101 ip = inet_ntoa(*ia); +<a name="l00102"></a>00102 } +<a name="l00103"></a>00103 +<a name="l00104"></a>00104 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip; +<a name="l00105"></a>00105 +<a name="l00106"></a>00106 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime; +<a name="l00107"></a>00107 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>; +<a name="l00108"></a>00108 <span class="keywordflow">if</span> ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) +<a name="l00109"></a>00109 { +<a name="l00110"></a>00110 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>; +<a name="l00111"></a>00111 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>); +<a name="l00112"></a>00112 <span class="keywordflow">return</span>; +<a name="l00113"></a>00113 } +<a name="l00114"></a>00114 this-><a class="code" href="classInspSocket.html#port">port</a> = <a class="code" href="classInspSocket.html#port">port</a>; +<a name="l00115"></a>00115 inet_aton(ip,&<a class="code" href="classInspSocket.html#addy">addy</a>); +<a name="l00116"></a>00116 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET; +<a name="l00117"></a>00117 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>; +<a name="l00118"></a>00118 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this->port); +<a name="l00119"></a>00119 +<a name="l00120"></a>00120 <span class="keywordtype">int</span> flags; +<a name="l00121"></a>00121 flags = fcntl(this->fd, F_GETFL, 0); +<a name="l00122"></a>00122 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK); +<a name="l00123"></a>00123 +<a name="l00124"></a>00124 <span class="keywordflow">if</span>(connect(this->fd, (sockaddr*)&this->addr,<span class="keyword">sizeof</span>(this->addr)) == -1) +<a name="l00125"></a>00125 { +<a name="l00126"></a>00126 <span class="keywordflow">if</span> (errno != EINPROGRESS) +<a name="l00127"></a>00127 { +<a name="l00128"></a>00128 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>(); +<a name="l00129"></a>00129 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>); +<a name="l00130"></a>00130 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>; +<a name="l00131"></a>00131 <span class="keywordflow">return</span>; +<a name="l00132"></a>00132 } +<a name="l00133"></a>00133 } +<a name="l00134"></a>00134 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>; +<a name="l00135"></a>00135 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>); +<a name="l00136"></a>00136 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>; +<a name="l00137"></a>00137 <span class="keywordflow">return</span>; +<a name="l00138"></a>00138 } +<a name="l00139"></a>00139 } </pre></div> <p> </td> @@ -380,11 +383,11 @@ The destructor may implicitly call <a class="el" href="classInspSocket.html#OnCl <p> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00269">269</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00272">272</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="socket_8cpp-source.html#l00139">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00270"></a>00270 { -<a name="l00271"></a>00271 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>(); -<a name="l00272"></a>00272 } +References <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00273"></a>00273 { +<a name="l00274"></a>00274 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>(); +<a name="l00275"></a>00275 } </pre></div> <p> </td> @@ -419,19 +422,20 @@ This method causes the socket to close, and may also be triggered by other metho <p> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00139">139</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00141">141</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="socket_8h-source.html#l00054">fd</a>, and <a class="el" href="socket_8cpp-source.html#l00267">OnClose()</a>. +References <a class="el" href="socket_8h-source.html#l00054">fd</a>, and <a class="el" href="socket_8cpp-source.html#l00270">OnClose()</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00269">~InspSocket()</a>.<div class="fragment"><pre class="fragment"><a name="l00140"></a>00140 { -<a name="l00141"></a>00141 <span class="keywordflow">if</span> (this->fd != -1) -<a name="l00142"></a>00142 { -<a name="l00143"></a>00143 this-><a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>(); -<a name="l00144"></a>00144 shutdown(this->fd,2); -<a name="l00145"></a>00145 close(this->fd); -<a name="l00146"></a>00146 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1; -<a name="l00147"></a>00147 } -<a name="l00148"></a>00148 } +Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00272">~InspSocket()</a>.<div class="fragment"><pre class="fragment"><a name="l00142"></a>00142 { +<a name="l00143"></a>00143 <span class="keywordflow">if</span> (this->fd != -1) +<a name="l00144"></a>00144 { +<a name="l00145"></a>00145 this-><a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>(); +<a name="l00146"></a>00146 shutdown(this->fd,2); +<a name="l00147"></a>00147 close(this->fd); +<a name="l00148"></a>00148 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = NULL; +<a name="l00149"></a>00149 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1; +<a name="l00150"></a>00150 } +<a name="l00151"></a>00151 } </pre></div> <p> </td> @@ -465,11 +469,11 @@ This method returns the socket's file descriptor as assigned by the operating sy <p> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00256">256</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00259">259</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="socket_8h-source.html#l00054">fd</a>.<div class="fragment"><pre class="fragment"><a name="l00257"></a>00257 { -<a name="l00258"></a>00258 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#fd">fd</a>; -<a name="l00259"></a>00259 } +References <a class="el" href="socket_8h-source.html#l00054">fd</a>.<div class="fragment"><pre class="fragment"><a name="l00260"></a>00260 { +<a name="l00261"></a>00261 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#fd">fd</a>; +<a name="l00262"></a>00262 } </pre></div> <p> </td> @@ -503,11 +507,11 @@ Returns the IP address associated with this connection, or an empty string if no <p> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00150">150</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00153">153</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="socket_8h-source.html#l00113">IP</a>.<div class="fragment"><pre class="fragment"><a name="l00151"></a>00151 { -<a name="l00152"></a>00152 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#IP">IP</a>; -<a name="l00153"></a>00153 } +References <a class="el" href="socket_8h-source.html#l00113">IP</a>.<div class="fragment"><pre class="fragment"><a name="l00154"></a>00154 { +<a name="l00155"></a>00155 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#IP">IP</a>; +<a name="l00156"></a>00156 } </pre></div> <p> </td> @@ -541,11 +545,11 @@ Returns the current socket state. <p> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00251">251</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00254">254</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00252"></a>00252 { -<a name="l00253"></a>00253 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#state">state</a>; -<a name="l00254"></a>00254 } +References <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00255"></a>00255 { +<a name="l00256"></a>00256 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#state">state</a>; +<a name="l00257"></a>00257 } </pre></div> <p> </td> @@ -579,9 +583,9 @@ Whenever close() is called, <a class="el" href="classInspSocket.html#OnClose_28_ <p> Please note that this means OnClose will be called alongside <a class="el" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError()</a>, <a class="el" href="classInspSocket.html#OnTimeout_28_29">OnTimeout()</a>, and <a class="el" href="classInspSocket.html#Close_28_29">Close()</a>, and also when cancelling a listening socket by calling the destructor indirectly. <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00267">267</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00270">270</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00139">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span>; } +Referenced by <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00270"></a>00270 { <span class="keywordflow">return</span>; } </pre></div> <p> </td> @@ -616,9 +620,9 @@ This method is called when an outbound connection on your socket is completed. <dl compact><dt><b>Returns:</b></dt><dd>false to abort the connection, true to continue</dd></dl> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00261">261</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00264">264</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00214">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00261"></a>00261 { <span class="keywordflow">return</span> <span class="keyword">true</span>; } +Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { <span class="keywordflow">return</span> <span class="keyword">true</span>; } </pre></div> <p> </td> @@ -653,9 +657,9 @@ When there is data waiting to be read on a socket, the <a class="el" href="class Within this method, you *MUST* call the <a class="el" href="classInspSocket.html#Read_28_29">Read()</a> method to read any pending data. At its lowest level, this event is signalled by the core via the socket engine. If you return false from this function, the core removes your socket from its list and erases it from the socket engine, then calls <a class="el" href="classInspSocket.html#Close_28_29">InspSocket::Close()</a> and deletes it. <dl compact><dt><b>Returns:</b></dt><dd>false to close the socket</dd></dl> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00265">265</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00268">268</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00214">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { <span class="keywordflow">return</span> <span class="keyword">true</span>; } +Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00268"></a>00268 { <span class="keywordflow">return</span> <span class="keyword">true</span>; } </pre></div> <p> </td> @@ -689,7 +693,7 @@ When an established connection is terminated, the OnDisconnect method is trigger <p> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00263">263</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00263"></a>00263 { <span class="keywordflow">return</span> 0; } +Definition at line <a class="el" href="socket_8cpp-source.html#l00266">266</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { <span class="keywordflow">return</span> 0; } </pre></div> <p> </td> @@ -729,9 +733,9 @@ A closed socket in itself is not an error, however errors also generate close ev </dl> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00262">262</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00265">265</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00262"></a>00262 { <span class="keywordflow">return</span>; } +Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { <span class="keywordflow">return</span>; } </pre></div> <p> </td> @@ -777,9 +781,9 @@ Given the new file descriptor in the parameters, and the IP, it is recommended y MySocket* newsocket = new MySocket(newfd,ip);<p> Once you have done this, you can then associate the new socket with the core using <a class="el" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">Server::AddSocket()</a>. <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00264">264</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00267">267</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00214">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { <span class="keywordflow">return</span> 0; } +Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span> 0; } </pre></div> <p> </td> @@ -813,9 +817,9 @@ When an outbound connection fails, and the attempt times out, you will receive t <p> The mthod will trigger once maxtime secons are reached (as given in the constructor) just before the socket's descriptor is closed. <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00266">266</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00269">269</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { <span class="keywordflow">return</span>; } +Referenced by <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00269"></a>00269 { <span class="keywordflow">return</span>; } </pre></div> <p> </td> @@ -849,37 +853,37 @@ Only the core should call this function. <p> When called, it is assumed the socket is ready to read data, and the method call routes the event to the various methods of InspSocket for you to handle. This can also cause the socket's state to change. <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00214">214</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. -<p> -References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00119">client</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00131">length</a>, <a class="el" href="socket_8cpp-source.html#l00261">OnConnected()</a>, <a class="el" href="socket_8cpp-source.html#l00265">OnDataReady()</a>, <a class="el" href="socket_8cpp-source.html#l00264">OnIncomingConnection()</a>, <a class="el" href="socket_8cpp-source.html#l00245">SetState()</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00215"></a>00215 { -<a name="l00216"></a>00216 <span class="keywordtype">int</span> incoming = -1; -<a name="l00217"></a>00217 -<a name="l00218"></a>00218 <span class="keywordflow">switch</span> (this->state) -<a name="l00219"></a>00219 { -<a name="l00220"></a>00220 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>: -<a name="l00221"></a>00221 this-><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>); -<a name="l00222"></a>00222 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span> -<a name="l00223"></a>00223 <span class="comment"> * in read-state.</span> -<a name="l00224"></a>00224 <span class="comment"> */</span> -<a name="l00225"></a>00225 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this->fd); -<a name="l00226"></a>00226 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>); -<a name="l00227"></a>00227 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>(); -<a name="l00228"></a>00228 <span class="keywordflow">break</span>; -<a name="l00229"></a>00229 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>: -<a name="l00230"></a>00230 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>); -<a name="l00231"></a>00231 incoming = accept (this->fd, (sockaddr*)&<a class="code" href="classInspSocket.html#client">client</a>,&<a class="code" href="classInspSocket.html#length">length</a>); -<a name="l00232"></a>00232 this-><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(<a class="code" href="classInspSocket.html#client">client</a>.sin_addr)); -<a name="l00233"></a>00233 <span class="keywordflow">return</span> <span class="keyword">true</span>; -<a name="l00234"></a>00234 <span class="keywordflow">break</span>; -<a name="l00235"></a>00235 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>: -<a name="l00236"></a>00236 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>(); +Definition at line <a class="el" href="socket_8cpp-source.html#l00217">217</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +<p> +References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00119">client</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00131">length</a>, <a class="el" href="socket_8cpp-source.html#l00264">OnConnected()</a>, <a class="el" href="socket_8cpp-source.html#l00268">OnDataReady()</a>, <a class="el" href="socket_8cpp-source.html#l00267">OnIncomingConnection()</a>, <a class="el" href="socket_8cpp-source.html#l00248">SetState()</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00218"></a>00218 { +<a name="l00219"></a>00219 <span class="keywordtype">int</span> incoming = -1; +<a name="l00220"></a>00220 +<a name="l00221"></a>00221 <span class="keywordflow">switch</span> (this->state) +<a name="l00222"></a>00222 { +<a name="l00223"></a>00223 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>: +<a name="l00224"></a>00224 this-><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>); +<a name="l00225"></a>00225 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span> +<a name="l00226"></a>00226 <span class="comment"> * in read-state.</span> +<a name="l00227"></a>00227 <span class="comment"> */</span> +<a name="l00228"></a>00228 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this->fd); +<a name="l00229"></a>00229 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>); +<a name="l00230"></a>00230 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>(); +<a name="l00231"></a>00231 <span class="keywordflow">break</span>; +<a name="l00232"></a>00232 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>: +<a name="l00233"></a>00233 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>); +<a name="l00234"></a>00234 incoming = accept (this->fd, (sockaddr*)&<a class="code" href="classInspSocket.html#client">client</a>,&<a class="code" href="classInspSocket.html#length">length</a>); +<a name="l00235"></a>00235 this-><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(<a class="code" href="classInspSocket.html#client">client</a>.sin_addr)); +<a name="l00236"></a>00236 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l00237"></a>00237 <span class="keywordflow">break</span>; -<a name="l00238"></a>00238 <span class="keywordflow">default</span>: -<a name="l00239"></a>00239 <span class="keywordflow">break</span>; -<a name="l00240"></a>00240 } -<a name="l00241"></a>00241 -<a name="l00242"></a>00242 <span class="keywordflow">return</span> <span class="keyword">true</span>; -<a name="l00243"></a>00243 } +<a name="l00238"></a>00238 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>: +<a name="l00239"></a>00239 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>(); +<a name="l00240"></a>00240 <span class="keywordflow">break</span>; +<a name="l00241"></a>00241 <span class="keywordflow">default</span>: +<a name="l00242"></a>00242 <span class="keywordflow">break</span>; +<a name="l00243"></a>00243 } +<a name="l00244"></a>00244 +<a name="l00245"></a>00245 <span class="keywordflow">return</span> <span class="keyword">true</span>; +<a name="l00246"></a>00246 } </pre></div> <p> </td> @@ -913,21 +917,21 @@ Reads all pending bytes from the socket into a char* array which can be up to 16 <p> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00155">155</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00158">158</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="socket_8h-source.html#l00106">ibuf</a>.<div class="fragment"><pre class="fragment"><a name="l00156"></a>00156 { -<a name="l00157"></a>00157 <span class="keywordtype">int</span> n = recv(this->fd,this->ibuf,<span class="keyword">sizeof</span>(this->ibuf),0); -<a name="l00158"></a>00158 <span class="keywordflow">if</span> (n > 0) -<a name="l00159"></a>00159 { -<a name="l00160"></a>00160 <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>[n] = 0; -<a name="l00161"></a>00161 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>; -<a name="l00162"></a>00162 } -<a name="l00163"></a>00163 <span class="keywordflow">else</span> -<a name="l00164"></a>00164 { -<a name="l00165"></a>00165 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>); -<a name="l00166"></a>00166 <span class="keywordflow">return</span> NULL; -<a name="l00167"></a>00167 } -<a name="l00168"></a>00168 } +References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, and <a class="el" href="socket_8h-source.html#l00106">ibuf</a>.<div class="fragment"><pre class="fragment"><a name="l00159"></a>00159 { +<a name="l00160"></a>00160 <span class="keywordtype">int</span> n = recv(this->fd,this->ibuf,<span class="keyword">sizeof</span>(this->ibuf),0); +<a name="l00161"></a>00161 <span class="keywordflow">if</span> (n > 0) +<a name="l00162"></a>00162 { +<a name="l00163"></a>00163 <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>[n] = 0; +<a name="l00164"></a>00164 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>; +<a name="l00165"></a>00165 } +<a name="l00166"></a>00166 <span class="keywordflow">else</span> +<a name="l00167"></a>00167 { +<a name="l00168"></a>00168 log(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>); +<a name="l00169"></a>00169 <span class="keywordflow">return</span> NULL; +<a name="l00170"></a>00170 } +<a name="l00171"></a>00171 } </pre></div> <p> </td> @@ -962,14 +966,14 @@ Changes the socket's state. <p> The core uses this to change socket states, and you should not call it directly. <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00245">245</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +Definition at line <a class="el" href="socket_8cpp-source.html#l00248">248</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. <p> -References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>. +References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00214">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00246"></a>00246 { -<a name="l00247"></a>00247 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>); -<a name="l00248"></a>00248 this-><a class="code" href="classInspSocket.html#state">state</a> = s; -<a name="l00249"></a>00249 } +Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00249"></a>00249 { +<a name="l00250"></a>00250 log(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>); +<a name="l00251"></a>00251 this-><a class="code" href="classInspSocket.html#state">state</a> = s; +<a name="l00252"></a>00252 } </pre></div> <p> </td> @@ -1005,23 +1009,23 @@ This function checks if the socket has timed out yet, given the current time in <dl compact><dt><b>Returns:</b></dt><dd>true if timed out, false if not timed out</dd></dl> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00197">197</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. -<p> -References <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8cpp-source.html#l00262">OnError()</a>, <a class="el" href="socket_8cpp-source.html#l00266">OnTimeout()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, and <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>.<div class="fragment"><pre class="fragment"><a name="l00198"></a>00198 { -<a name="l00199"></a>00199 <span class="keywordflow">if</span> ((this->state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) && (current > <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>)) -<a name="l00200"></a>00200 { -<a name="l00201"></a>00201 <span class="comment">// for non-listening sockets, the timeout can occur</span> -<a name="l00202"></a>00202 <span class="comment">// which causes termination of the connection after</span> -<a name="l00203"></a>00203 <span class="comment">// the given number of seconds without a successful</span> -<a name="l00204"></a>00204 <span class="comment">// connection.</span> -<a name="l00205"></a>00205 this-><a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>(); -<a name="l00206"></a>00206 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>); -<a name="l00207"></a>00207 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>; -<a name="l00208"></a>00208 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>; -<a name="l00209"></a>00209 <span class="keywordflow">return</span> <span class="keyword">true</span>; -<a name="l00210"></a>00210 } -<a name="l00211"></a>00211 <span class="keywordflow">return</span> <span class="keyword">false</span>; -<a name="l00212"></a>00212 } +Definition at line <a class="el" href="socket_8cpp-source.html#l00200">200</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. +<p> +References <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8cpp-source.html#l00265">OnError()</a>, <a class="el" href="socket_8cpp-source.html#l00269">OnTimeout()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, and <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>.<div class="fragment"><pre class="fragment"><a name="l00201"></a>00201 { +<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((this->state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) && (current > <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>)) +<a name="l00203"></a>00203 { +<a name="l00204"></a>00204 <span class="comment">// for non-listening sockets, the timeout can occur</span> +<a name="l00205"></a>00205 <span class="comment">// which causes termination of the connection after</span> +<a name="l00206"></a>00206 <span class="comment">// the given number of seconds without a successful</span> +<a name="l00207"></a>00207 <span class="comment">// connection.</span> +<a name="l00208"></a>00208 this-><a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>(); +<a name="l00209"></a>00209 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>); +<a name="l00210"></a>00210 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>; +<a name="l00211"></a>00211 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>; +<a name="l00212"></a>00212 <span class="keywordflow">return</span> <span class="keyword">true</span>; +<a name="l00213"></a>00213 } +<a name="l00214"></a>00214 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<a name="l00215"></a>00215 } </pre></div> <p> </td> @@ -1061,27 +1065,27 @@ No carriage returns or linefeeds are appended to the string. <dl compact><dt><b> </dl> <p> -Definition at line <a class="el" href="socket_8cpp-source.html#l00174">174</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00175"></a>00175 { -<a name="l00176"></a>00176 <span class="keywordtype">char</span>* d = (<span class="keywordtype">char</span>*)data.c_str(); -<a name="l00177"></a>00177 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written = 0; -<a name="l00178"></a>00178 <span class="keywordtype">int</span> n = 0; -<a name="l00179"></a>00179 <span class="keywordtype">int</span> s = data.length(); -<a name="l00180"></a>00180 <span class="keywordflow">while</span> ((written < data.length()) && (n >= 0)) -<a name="l00181"></a>00181 { -<a name="l00182"></a>00182 n = send(this->fd,d,s,0); -<a name="l00183"></a>00183 <span class="keywordflow">if</span> (n > 0) -<a name="l00184"></a>00184 { -<a name="l00185"></a>00185 <span class="comment">// If we didnt write everything, advance</span> -<a name="l00186"></a>00186 <span class="comment">// the pointers so that when we retry</span> -<a name="l00187"></a>00187 <span class="comment">// the next time around the loop, we try</span> -<a name="l00188"></a>00188 <span class="comment">// to write what we failed to write before.</span> -<a name="l00189"></a>00189 written += n; -<a name="l00190"></a>00190 s -= n; -<a name="l00191"></a>00191 d += n; -<a name="l00192"></a>00192 } -<a name="l00193"></a>00193 } -<a name="l00194"></a>00194 <span class="keywordflow">return</span> written; -<a name="l00195"></a>00195 } +Definition at line <a class="el" href="socket_8cpp-source.html#l00177">177</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00178"></a>00178 { +<a name="l00179"></a>00179 <span class="keywordtype">char</span>* d = (<span class="keywordtype">char</span>*)data.c_str(); +<a name="l00180"></a>00180 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written = 0; +<a name="l00181"></a>00181 <span class="keywordtype">int</span> n = 0; +<a name="l00182"></a>00182 <span class="keywordtype">int</span> s = data.length(); +<a name="l00183"></a>00183 <span class="keywordflow">while</span> ((written < data.length()) && (n >= 0)) +<a name="l00184"></a>00184 { +<a name="l00185"></a>00185 n = send(this->fd,d,s,0); +<a name="l00186"></a>00186 <span class="keywordflow">if</span> (n > 0) +<a name="l00187"></a>00187 { +<a name="l00188"></a>00188 <span class="comment">// If we didnt write everything, advance</span> +<a name="l00189"></a>00189 <span class="comment">// the pointers so that when we retry</span> +<a name="l00190"></a>00190 <span class="comment">// the next time around the loop, we try</span> +<a name="l00191"></a>00191 <span class="comment">// to write what we failed to write before.</span> +<a name="l00192"></a>00192 written += n; +<a name="l00193"></a>00193 s -= n; +<a name="l00194"></a>00194 d += n; +<a name="l00195"></a>00195 } +<a name="l00196"></a>00196 } +<a name="l00197"></a>00197 <span class="keywordflow">return</span> written; +<a name="l00198"></a>00198 } </pre></div> <p> </td> @@ -1172,7 +1176,7 @@ Client sockaddr structure used by accept(). <p> Definition at line <a class="el" href="socket_8h-source.html#l00119">119</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00214">Poll()</a>. </td> +Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>. </td> </tr> </table> <a class="anchor" name="fd"></a><!-- doxytag: member="InspSocket::fd" ref="fd" args="" --><p> @@ -1201,7 +1205,7 @@ The file descriptor of this socket. <p> Definition at line <a class="el" href="socket_8h-source.html#l00054">54</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00139">Close()</a>, <a class="el" href="socket_8cpp-source.html#l00256">GetFd()</a>, and <a class="el" href="socket_8cpp-source.html#l00054">InspSocket()</a>. </td> +Referenced by <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>, <a class="el" href="socket_8cpp-source.html#l00259">GetFd()</a>, and <a class="el" href="socket_8cpp-source.html#l00053">InspSocket()</a>. </td> </tr> </table> <a class="anchor" name="host"></a><!-- doxytag: member="InspSocket::host" ref="host" args="" --><p> @@ -1257,7 +1261,7 @@ The class which extends InspSocket is expected to implement an extendable buffer <p> Definition at line <a class="el" href="socket_8h-source.html#l00106">106</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00155">Read()</a>. </td> +Referenced by <a class="el" href="socket_8cpp-source.html#l00158">Read()</a>. </td> </tr> </table> <a class="anchor" name="IP"></a><!-- doxytag: member="InspSocket::IP" ref="IP" args="" --><p> @@ -1286,7 +1290,7 @@ The IP address being connected to stored in string form for easy retrieval by ac <p> Definition at line <a class="el" href="socket_8h-source.html#l00113">113</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00150">GetIP()</a>, and <a class="el" href="socket_8cpp-source.html#l00054">InspSocket()</a>. </td> +Referenced by <a class="el" href="socket_8cpp-source.html#l00153">GetIP()</a>, and <a class="el" href="socket_8cpp-source.html#l00053">InspSocket()</a>. </td> </tr> </table> <a class="anchor" name="length"></a><!-- doxytag: member="InspSocket::length" ref="length" args="" --><p> @@ -1315,7 +1319,7 @@ Used by accept() to indicate the sizes of the sockaddr_in structures. <p> Definition at line <a class="el" href="socket_8h-source.html#l00131">131</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00214">Poll()</a>. </td> +Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>. </td> </tr> </table> <a class="anchor" name="port"></a><!-- doxytag: member="InspSocket::port" ref="port" args="" --><p> @@ -1398,7 +1402,7 @@ The state for this socket, either listening, connecting, connected or error. <p> Definition at line <a class="el" href="socket_8h-source.html#l00072">72</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00251">GetState()</a>, <a class="el" href="socket_8cpp-source.html#l00049">InspSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00245">SetState()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>. </td> +Referenced by <a class="el" href="socket_8cpp-source.html#l00254">GetState()</a>, <a class="el" href="socket_8cpp-source.html#l00048">InspSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00248">SetState()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>. </td> </tr> </table> <a class="anchor" name="timeout"></a><!-- doxytag: member="InspSocket::timeout" ref="timeout" args="" --><p> @@ -1427,7 +1431,7 @@ This value is true if the socket has timed out. <p> Definition at line <a class="el" href="socket_8h-source.html#l00097">97</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>. </td> +Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>. </td> </tr> </table> <a class="anchor" name="timeout_5Fend"></a><!-- doxytag: member="InspSocket::timeout_end" ref="timeout_5Fend" args="" --><p> @@ -1456,12 +1460,12 @@ When this time is reached, the socket times out if it is in the CONNECTING state <p> Definition at line <a class="el" href="socket_8h-source.html#l00091">91</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. <p> -Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>. </td> +Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>. </td> </tr> </table> <hr>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="socket_8h-source.html">socket.h</a><li><a class="el" href="socket_8cpp-source.html">socket.cpp</a></ul> -<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 12 18:31:02 2005 for InspIRCd by +<hr size="1"><address style="align: right;"><small>Generated on Wed Dec 14 14:49:31 2005 for InspIRCd by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address> </body> |