]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - docs/module-doc/users_8cpp-source.html
Re-added the dot graphs again
[user/henk/code/inspircd.git] / docs / module-doc / users_8cpp-source.html
index 7d30e34131a85e5ca86f8bdc76336a97d3bbde96..ffe5afc8678910383f32cbb8ef67aab4b6bece49 100644 (file)
 00036         strcpy(<a class="code" href="classuserrec.html#o2">dhost</a>,<span class="stringliteral">""</span>);
 00037         strcpy(<a class="code" href="classuserrec.html#o3">fullname</a>,<span class="stringliteral">""</span>);
 00038         strcpy(<a class="code" href="classuserrec.html#o4">modes</a>,<span class="stringliteral">""</span>);
-00039         strcpy(<a class="code" href="classconnection.html#o3">inbuf</a>,<span class="stringliteral">""</span>);
-00040         strcpy(<a class="code" href="classuserrec.html#o6">server</a>,<span class="stringliteral">""</span>);
-00041         strcpy(<a class="code" href="classuserrec.html#o7">awaymsg</a>,<span class="stringliteral">""</span>);
-00042         strcpy(<a class="code" href="classuserrec.html#o11">oper</a>,<span class="stringliteral">""</span>);
-00043         <a class="code" href="classuserrec.html#o17">reset_due</a> = <a class="code" href="channels_8cpp.html#a37">TIME</a>;
-00044         <a class="code" href="classuserrec.html#o16">lines_in</a> = 0;
-00045         <a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="classconnection.html#o12">lastping</a> = <a class="code" href="classconnection.html#o13">signon</a> = <a class="code" href="classconnection.html#o14">idle_lastmsg</a> = <a class="code" href="classconnection.html#o15">nping</a> = <a class="code" href="classconnection.html#o10">registered</a> = 0;
-00046         <a class="code" href="classuserrec.html#o9">flood</a> = <a class="code" href="classconnection.html#o9">port</a> = <a class="code" href="classconnection.html#o4">bytes_in</a> = <a class="code" href="classconnection.html#o5">bytes_out</a> = <a class="code" href="classconnection.html#o6">cmds_in</a> = <a class="code" href="classconnection.html#o7">cmds_out</a> = 0;
-00047         <a class="code" href="classconnection.html#o8">haspassed</a> = <span class="keyword">false</span>;
-00048         <a class="code" href="classuserrec.html#o12">dns_done</a> = <span class="keyword">false</span>;
-00049         <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
+00039         strcpy(<a class="code" href="classuserrec.html#o6">server</a>,<span class="stringliteral">""</span>);
+00040         strcpy(<a class="code" href="classuserrec.html#o7">awaymsg</a>,<span class="stringliteral">""</span>);
+00041         strcpy(<a class="code" href="classuserrec.html#o11">oper</a>,<span class="stringliteral">""</span>);
+00042         <a class="code" href="classuserrec.html#o18">reset_due</a> = <a class="code" href="channels_8cpp.html#a37">TIME</a>;
+00043         <a class="code" href="classuserrec.html#o17">lines_in</a> = 0;
+00044         <a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="classconnection.html#o10">lastping</a> = <a class="code" href="classconnection.html#o11">signon</a> = <a class="code" href="classconnection.html#o12">idle_lastmsg</a> = <a class="code" href="classconnection.html#o13">nping</a> = <a class="code" href="classconnection.html#o9">registered</a> = 0;
+00045         <a class="code" href="classuserrec.html#o9">flood</a> = <a class="code" href="classconnection.html#o8">port</a> = <a class="code" href="classconnection.html#o3">bytes_in</a> = <a class="code" href="classconnection.html#o4">bytes_out</a> = <a class="code" href="classconnection.html#o5">cmds_in</a> = <a class="code" href="classconnection.html#o6">cmds_out</a> = 0;
+00046         <a class="code" href="classconnection.html#o7">haspassed</a> = <span class="keyword">false</span>;
+00047         <a class="code" href="classuserrec.html#o12">dns_done</a> = <span class="keyword">false</span>;
+00048         <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
+00049         <a class="code" href="classuserrec.html#o16">sendq</a> = <span class="stringliteral">""</span>;
 00050         strcpy(<a class="code" href="classuserrec.html#o8">result</a>,<span class="stringliteral">""</span>);
 00051         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
 00052         {
 00182                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
 00183                         <span class="keywordflow">break</span>;
 00184         }
-00185         <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
-00186         <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
-00187         <span class="keywordflow">return</span> (i &lt; 600);
-00188 }
-00189 
-<a name="l00190"></a><a class="code" href="classuserrec.html#a9">00190</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#a9">userrec::BufferIsReady</a>()
-00191 {
-00192         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classuserrec.html#o15">recvq</a>.length(); i++)
-00193                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>[i] == <span class="charliteral">'\n'</span>)
-00194                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00195         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00196 }
-00197 
-<a name="l00198"></a><a class="code" href="classuserrec.html#a10">00198</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a10">userrec::ClearBuffer</a>()
-00199 {
-00200         <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
+00185         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>.length() &gt; this-&gt;<a class="code" href="classuserrec.html#o22">recvqmax</a>)
+00186         {
+00187                 this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
+00188                 WriteOpers(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#o15">recvq</a>.length(),this-&gt;<a class="code" href="classuserrec.html#o22">recvqmax</a>);
+00189         }
+00190         <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
+00191         <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
+00192         <span class="keywordflow">return</span> (i &lt; 600);
+00193 }
+00194 
+<a name="l00195"></a><a class="code" href="classuserrec.html#a9">00195</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#a9">userrec::BufferIsReady</a>()
+00196 {
+00197         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classuserrec.html#o15">recvq</a>.length(); i++)
+00198                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>[i] == <span class="charliteral">'\n'</span>)
+00199                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00200         <span class="keywordflow">return</span> <span class="keyword">false</span>;
 00201 }
 00202 
-<a name="l00203"></a><a class="code" href="classuserrec.html#a11">00203</a> std::string <a class="code" href="classuserrec.html#a11">userrec::GetBuffer</a>()
+<a name="l00203"></a><a class="code" href="classuserrec.html#a10">00203</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a10">userrec::ClearBuffer</a>()
 00204 {
-00205         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a> == <span class="stringliteral">""</span>)
-00206                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-00207         <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#o15">recvq</a>.c_str();
-00208         std::string ret = <span class="stringliteral">""</span>;
-00209         <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) &amp;&amp; (strlen(line)))
-00210         {
-00211                 ret = ret + *line;
-00212                 line++;
-00213         }
-00214         <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
-00215                 line++;
-00216         <a class="code" href="classuserrec.html#o15">recvq</a> = line;
-00217         <span class="keywordflow">return</span> ret;
-00218 }
-00219 
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sat May 7 15:34:21 2005 for InspIRCd by
+00205         <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
+00206 }
+00207 
+<a name="l00208"></a><a class="code" href="classuserrec.html#a11">00208</a> std::string <a class="code" href="classuserrec.html#a11">userrec::GetBuffer</a>()
+00209 {
+00210         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a> == <span class="stringliteral">""</span>)
+00211                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+00212         <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#o15">recvq</a>.c_str();
+00213         std::string ret = <span class="stringliteral">""</span>;
+00214         <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) &amp;&amp; (strlen(line)))
+00215         {
+00216                 ret = ret + *line;
+00217                 line++;
+00218         }
+00219         <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
+00220                 line++;
+00221         <a class="code" href="classuserrec.html#o15">recvq</a> = line;
+00222         <span class="keywordflow">return</span> ret;
+00223 }
+00224 
+<a name="l00225"></a><a class="code" href="classuserrec.html#a14">00225</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a14">userrec::AddWriteBuf</a>(std::string data)
+00226 {
+00227         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classuserrec.html#a13">GetWriteError</a>() != <span class="stringliteral">""</span>)
+00228                 <span class="keywordflow">return</span>;
+00229         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o16">sendq</a>.length() + data.length() &gt; this-&gt;<a class="code" href="classuserrec.html#o21">sendqmax</a>)
+00230         {
+00231                 WriteOpers(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#o16">sendq</a>.length() + data.length(),this-&gt;<a class="code" href="classuserrec.html#o21">sendqmax</a>);
+00232                 this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
+00233                 <span class="keywordflow">return</span>;
+00234         }
+00235         std::stringstream stream;
+00236         stream &lt;&lt; <a class="code" href="classuserrec.html#o16">sendq</a> &lt;&lt; data;
+00237         <a class="code" href="classuserrec.html#o16">sendq</a> = stream.str();
+00238 }
+00239 
+00240 <span class="comment">// send AS MUCH OF THE USERS SENDQ as we are able to (might not be all of it)</span>
+<a name="l00241"></a><a class="code" href="classuserrec.html#a15">00241</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a15">userrec::FlushWriteBuf</a>()
+00242 {
+00243         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o16">sendq</a>.length())
+00244         {
+00245                 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classuserrec.html#o16">sendq</a>.c_str();
+00246                 <span class="keywordtype">int</span> n_sent = write(this-&gt;fd,tb,this-&gt;sendq.length());
+00247                 <span class="keywordflow">if</span> (n_sent == -1)
+00248                 {
+00249                         this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(strerror(errno));
+00250                 }
+00251                 <span class="keywordflow">else</span>
+00252                 {
+00253                         <span class="comment">// advance the queue</span>
+00254                         tb += n_sent;
+00255                         this-&gt;<a class="code" href="classuserrec.html#o16">sendq</a> = tb;
+00256                         <span class="comment">// update the user's stats counters</span>
+00257                         this-&gt;<a class="code" href="classconnection.html#o4">bytes_out</a> += n_sent;
+00258                         this-&gt;<a class="code" href="classconnection.html#o6">cmds_out</a>++;
+00259                 }
+00260         }
+00261 }
+00262 
+<a name="l00263"></a><a class="code" href="classuserrec.html#a12">00263</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a12">userrec::SetWriteError</a>(std::string error)
+00264 {
+00265         log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this-&gt;nick,error.c_str());
+00266         <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
+00267         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a> == <span class="stringliteral">""</span>)
+00268                 this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a> = error;
+00269 }
+00270 
+<a name="l00271"></a><a class="code" href="classuserrec.html#a13">00271</a> std::string <a class="code" href="classuserrec.html#a13">userrec::GetWriteError</a>()
+00272 {
+00273         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a>;
+00274 }
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri May 13 01:58:43 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>