]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - docs/module-doc/classuserrec.html
Fixed 'fake direction' messages being put out by user->registered = 7 being set too...
[user/henk/code/inspircd.git] / docs / module-doc / classuserrec.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>InspIRCd: userrec Class Reference</title>
4 <link href="inspircd.doxygen.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.4.4-20050815 -->
7 <div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
8 <h1>userrec Class Reference</h1><!-- doxytag: class="userrec" --><!-- doxytag: inherits="connection" -->Holds all information about a user This class stores all information about a user connected to the irc server.  
9 <a href="#_details">More...</a>
10 <p>
11 <code>#include &lt;<a class="el" href="users_8h-source.html">users.h</a>&gt;</code>
12 <p>
13 Inheritance diagram for userrec:<p><center><img src="classuserrec__inherit__graph.gif" border="0" usemap="#userrec__inherit__map" alt="Inheritance graph"></center>
14 <map name="userrec__inherit__map">
15 <area href="classconnection.html" shape="rect" coords="7,156,92,183" alt="">
16 <area href="classExtensible.html" shape="rect" coords="8,81,91,108" alt="">
17 <area href="classclassbase.html" shape="rect" coords="10,7,90,33" alt="">
18 </map>
19 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for userrec:<p><center><img src="classuserrec__coll__graph.gif" border="0" usemap="#userrec__coll__map" alt="Collaboration graph"></center>
20 <map name="userrec__coll__map">
21 <area href="classconnection.html" shape="rect" coords="199,429,284,456" alt="">
22 <area href="classucrec.html" shape="rect" coords="215,7,268,33" alt="">
23 </map>
24 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classuserrec-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
25 <tr><td></td></tr>
26 <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
27 <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#userrec_28_29">userrec</a> ()</td></tr>
28
29 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#_7Euserrec_28_29">~userrec</a> ()</td></tr>
30
31 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetFullHost_28_29">GetFullHost</a> ()</td></tr>
32
33 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the full displayed host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form.  <a href="#GetFullHost_28_29"></a><br></td></tr>
34 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetFullRealHost_28_29">GetFullRealHost</a> ()</td></tr>
35
36 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form.  <a href="#GetFullRealHost_28_29"></a><br></td></tr>
37 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a> (char *channel)</td></tr>
38
39 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if a user is invited to a channel.  <a href="#IsInvited_28char_20_2Achannel_29"></a><br></td></tr>
40 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">InviteTo</a> (char *channel)</td></tr>
41
42 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a channel to a users invite list (invites them to a channel).  <a href="#InviteTo_28char_20_2Achannel_29"></a><br></td></tr>
43 <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a> (char *channel)</td></tr>
44
45 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a channel from a users invite list.  <a href="#RemoveInvite_28char_20_2Achannel_29"></a><br></td></tr>
46 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">HasPermission</a> (char *command)</td></tr>
47
48 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true or false for if a user can execute a privilaged oper command.  <a href="#HasPermission_28char_20_2Acommand_29"></a><br></td></tr>
49 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">ReadData</a> (void *buffer, size_t size)</td></tr>
50
51 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calls read() to read some data for this user using their fd.  <a href="#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29"></a><br></td></tr>
52 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">AddBuffer</a> (<a class="el" href="namespaceirc.html#string">std::string</a> a)</td></tr>
53
54 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method adds data to the buffer of the user.  <a href="#AddBuffer_28std_3A_3Astring_20a_29"></a><br></td></tr>
55 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#BufferIsReady_28_29">BufferIsReady</a> ()</td></tr>
56
57 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method returns true if the buffer contains at least one carriage return character (e.g.  <a href="#BufferIsReady_28_29"></a><br></td></tr>
58 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a> ()</td></tr>
59
60 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function clears the entire buffer by setting it to an empty string.  <a href="#ClearBuffer_28_29"></a><br></td></tr>
61 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetBuffer_28_29">GetBuffer</a> ()</td></tr>
62
63 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method returns the first available string at the tail end of the buffer and advances the tail end of the buffer past the string.  <a href="#GetBuffer_28_29"></a><br></td></tr>
64 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a> (<a class="el" href="namespaceirc.html#string">std::string</a> error)</td></tr>
65
66 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the write error for a connection.  <a href="#SetWriteError_28std_3A_3Astring_20error_29"></a><br></td></tr>
67 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetWriteError_28_29">GetWriteError</a> ()</td></tr>
68
69 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the write error which last occured on this connection or an empty string if none occured.  <a href="#GetWriteError_28_29"></a><br></td></tr>
70 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">AddWriteBuf</a> (<a class="el" href="namespaceirc.html#string">std::string</a> data)</td></tr>
71
72 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds to the user's write buffer.  <a href="#AddWriteBuf_28std_3A_3Astring_20data_29"></a><br></td></tr>
73 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a> ()</td></tr>
74
75 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flushes as much of the user's buffer to the file descriptor as possible.  <a href="#FlushWriteBuf_28_29"></a><br></td></tr>
76 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="users_8h.html#InvitedList">InvitedList</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetInviteList_28_29">GetInviteList</a> ()</td></tr>
77
78 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the list of channels this user has been invited to but has not yet joined.  <a href="#GetInviteList_28_29"></a><br></td></tr>
79 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a> ()</td></tr>
80
81 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shuts down and closes the user's socket.  <a href="#CloseSocket_28_29"></a><br></td></tr>
82 <tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
83 <tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a> [NICKMAX]</td></tr>
84
85 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The users nickname.  <a href="#nick_5BNICKMAX_5D"></a><br></td></tr>
86 <tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a> [IDENTMAX+2]</td></tr>
87
88 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The users ident reply.  <a href="#ident_5BIDENTMAX_2B_32_5D"></a><br></td></tr>
89 <tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a> [160]</td></tr>
90
91 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The host displayed to non-opers (used for cloaking etc).  <a href="#dhost_5B_31_36_30_5D"></a><br></td></tr>
92 <tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a> [MAXGECOS+1]</td></tr>
93
94 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The users full name.  <a href="#fullname_5BMAXGECOS_2B_31_5D"></a><br></td></tr>
95 <tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#modes_5B_35_34_5D">modes</a> [54]</td></tr>
96
97 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The user's mode string.  <a href="#modes_5B_35_34_5D"></a><br></td></tr>
98 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classucrec.html">ucrec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#chans_5BMAXCHANS_5D">chans</a> [MAXCHANS]</td></tr>
99
100 <tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#server">server</a></td></tr>
101
102 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The server the user is connected to.  <a href="#server"></a><br></td></tr>
103 <tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a> [MAXAWAY+1]</td></tr>
104
105 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The user's away message.  <a href="#awaymsg_5BMAXAWAY_2B_31_5D"></a><br></td></tr>
106 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#flood">flood</a></td></tr>
107
108 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood.  <a href="#flood"></a><br></td></tr>
109 <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#timeout">timeout</a></td></tr>
110
111 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of seconds this user is given to send USER/NICK If they do not send their details in this time limit they will be disconnected.  <a href="#timeout"></a><br></td></tr>
112 <tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a> [NICKMAX]</td></tr>
113
114 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The oper type they logged in as, if they are an oper.  <a href="#oper_5BNICKMAX_5D"></a><br></td></tr>
115 <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#dns_5Fdone">dns_done</a></td></tr>
116
117 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">True when <a class="el" href="classDNS.html">DNS</a> lookups are completed.  <a href="#dns_5Fdone"></a><br></td></tr>
118 <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#pingmax">pingmax</a></td></tr>
119
120 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of seconds between PINGs for this user (set from &lt;connect:allow&gt; tag.  <a href="#pingmax"></a><br></td></tr>
121 <tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#password_5BMAXBUF_5D">password</a> [MAXBUF]</td></tr>
122
123 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Password specified by the user when they registered.  <a href="#password_5BMAXBUF_5D"></a><br></td></tr>
124 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#recvq">recvq</a></td></tr>
125
126 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User's receive queue.  <a href="#recvq"></a><br></td></tr>
127 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#sendq">sendq</a></td></tr>
128
129 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User's send queue.  <a href="#sendq"></a><br></td></tr>
130 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#lines_5Fin">lines_in</a></td></tr>
131
132 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flood counters.  <a href="#lines_5Fin"></a><br></td></tr>
133 <tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#reset_5Fdue">reset_due</a></td></tr>
134
135 <tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#threshold">threshold</a></td></tr>
136
137 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#WriteError">WriteError</a></td></tr>
138
139 <tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#sendqmax">sendqmax</a></td></tr>
140
141 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximum size this user's sendq can become.  <a href="#sendqmax"></a><br></td></tr>
142 <tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#recvqmax">recvqmax</a></td></tr>
143
144 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximum size this user's recvq can become.  <a href="#recvqmax"></a><br></td></tr>
145 <tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
146 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="users_8h.html#InvitedList">InvitedList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#invites">invites</a></td></tr>
147
148 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A list of channels the user has a pending invite to.  <a href="#invites"></a><br></td></tr>
149 </table>
150 <hr><a name="_details"></a><h2>Detailed Description</h2>
151 Holds all information about a user This class stores all information about a user connected to the irc server. 
152 <p>
153 Everything about a connection is stored here primarily, from the user's socket ID (file descriptor) through to the user's nickname and hostname. Use the Find method of the server class to locate a specific user by nickname.
154 <p>
155
156 <p>
157 Definition at line <a class="el" href="users_8h-source.html#l00108">108</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
158 <a class="anchor" name="userrec_28_29"></a><!-- doxytag: member="userrec::userrec" ref="userrec_28_29" args="()" --><p>
159 <table class="mdTable" cellpadding="2" cellspacing="0">
160   <tr>
161     <td class="mdRow">
162       <table cellpadding="0" cellspacing="0" border="0">
163         <tr>
164           <td class="md" nowrap valign="top">userrec::userrec           </td>
165           <td class="md" valign="top">(&nbsp;</td>
166           <td class="mdname1" valign="top" nowrap>          </td>
167           <td class="md" valign="top">&nbsp;)&nbsp;</td>
168           <td class="md" nowrap></td>
169         </tr>
170       </table>
171     </td>
172   </tr>
173 </table>
174 <table cellspacing="5" cellpadding="0" border="0">
175   <tr>
176     <td>
177       &nbsp;
178     </td>
179     <td>
180
181 <p>
182
183 <p>
184 Definition at line <a class="el" href="users_8cpp-source.html#l00033">33</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
185 <p>
186 References <a class="el" href="users_8h-source.html#l00155">awaymsg</a>, <a class="el" href="connection_8h-source.html#l00054">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="channels_8h-source.html#l00252">ucrec::channel</a>, <a class="el" href="users_8h-source.html#l00146">chans</a>, <a class="el" href="connection_8h-source.html#l00062">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00131">dhost</a>, <a class="el" href="users_8h-source.html#l00178">dns_done</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8h-source.html#l00161">flood</a>, <a class="el" href="users_8h-source.html#l00135">fullname</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00126">ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00114">invites</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00084">connection::lastping</a>, <a class="el" href="users_8h-source.html#l00203">lines_in</a>, <a class="el" href="users_8h-source.html#l00144">modes</a>, <a class="el" href="users_8h-source.html#l00121">nick</a>, <a class="el" href="connection_8h-source.html#l00096">connection::nping</a>, <a class="el" href="users_8h-source.html#l00174">oper</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="users_8h-source.html#l00194">recvq</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="users_8h-source.html#l00204">reset_due</a>, <a class="el" href="users_8h-source.html#l00199">sendq</a>, <a class="el" href="users_8h-source.html#l00150">server</a>, <a class="el" href="channels_8cpp.html#ServerName_5BMAXBUF_5D">ServerName</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="users_8h-source.html#l00167">timeout</a>, and <a class="el" href="channels_8h-source.html#l00247">ucrec::uc_modes</a>.<div class="fragment"><pre class="fragment"><a name="l00034"></a>00034 {
187 <a name="l00035"></a>00035         <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
188 <a name="l00036"></a>00036         strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
189 <a name="l00037"></a>00037         strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
190 <a name="l00038"></a>00038         <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
191 <a name="l00039"></a>00039         strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
192 <a name="l00040"></a>00040         strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
193 <a name="l00041"></a>00041         strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
194 <a name="l00042"></a>00042         strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
195 <a name="l00043"></a>00043         strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
196 <a name="l00044"></a>00044         <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)FindServerNamePtr(ServerName);
197 <a name="l00045"></a>00045         strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
198 <a name="l00046"></a>00046         strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
199 <a name="l00047"></a>00047         <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
200 <a name="l00048"></a>00048         <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
201 <a name="l00049"></a>00049         <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
202 <a name="l00050"></a>00050         <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
203 <a name="l00051"></a>00051         <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
204 <a name="l00052"></a>00052         <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
205 <a name="l00053"></a>00053         <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
206 <a name="l00054"></a>00054         <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
207 <a name="l00055"></a>00055         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
208 <a name="l00056"></a>00056         {
209 <a name="l00057"></a>00057                 this-&gt;<a class="code" href="classuserrec.html#chans_5BMAXCHANS_5D">chans</a>[i].<a class="code" href="classucrec.html#channel">channel</a> = NULL;
210 <a name="l00058"></a>00058                 this-&gt;<a class="code" href="classuserrec.html#chans_5BMAXCHANS_5D">chans</a>[i].<a class="code" href="classucrec.html#uc_5Fmodes">uc_modes</a> = 0;
211 <a name="l00059"></a>00059         }
212 <a name="l00060"></a>00060         <a class="code" href="classuserrec.html#invites">invites</a>.clear();
213 <a name="l00061"></a>00061 }
214 </pre></div>
215 <p>
216     </td>
217   </tr>
218 </table>
219 <a class="anchor" name="_7Euserrec_28_29"></a><!-- doxytag: member="userrec::~userrec" ref="_7Euserrec_28_29" args="()" --><p>
220 <table class="mdTable" cellpadding="2" cellspacing="0">
221   <tr>
222     <td class="mdRow">
223       <table cellpadding="0" cellspacing="0" border="0">
224         <tr>
225           <td class="md" nowrap valign="top">virtual userrec::~userrec           </td>
226           <td class="md" valign="top">(&nbsp;</td>
227           <td class="mdname1" valign="top" nowrap>          </td>
228           <td class="md" valign="top">&nbsp;)&nbsp;</td>
229           <td class="md" nowrap><code> [inline, virtual]</code></td>
230         </tr>
231       </table>
232     </td>
233   </tr>
234 </table>
235 <table cellspacing="5" cellpadding="0" border="0">
236   <tr>
237     <td>
238       &nbsp;
239     </td>
240     <td>
241
242 <p>
243
244 <p>
245 Definition at line <a class="el" href="users_8h-source.html#l00221">221</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<div class="fragment"><pre class="fragment"><a name="l00221"></a>00221 {  }
246 </pre></div>
247 <p>
248     </td>
249   </tr>
250 </table>
251 <hr><h2>Member Function Documentation</h2>
252 <a class="anchor" name="AddBuffer_28std_3A_3Astring_20a_29"></a><!-- doxytag: member="userrec::AddBuffer" ref="AddBuffer_28std_3A_3Astring_20a_29" args="(std::string a)" --><p>
253 <table class="mdTable" cellpadding="2" cellspacing="0">
254   <tr>
255     <td class="mdRow">
256       <table cellpadding="0" cellspacing="0" border="0">
257         <tr>
258           <td class="md" nowrap valign="top">bool userrec::AddBuffer           </td>
259           <td class="md" valign="top">(&nbsp;</td>
260           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td>
261           <td class="mdname1" valign="top" nowrap> <em>a</em>          </td>
262           <td class="md" valign="top">&nbsp;)&nbsp;</td>
263           <td class="md" nowrap></td>
264         </tr>
265       </table>
266     </td>
267   </tr>
268 </table>
269 <table cellspacing="5" cellpadding="0" border="0">
270   <tr>
271     <td>
272       &nbsp;
273     </td>
274     <td>
275
276 <p>
277 This method adds data to the buffer of the user. 
278 <p>
279 The buffer can grow to any size within limits of the available memory, managed by the size of a <a class="el" href="namespaceirc.html#string">std::string</a>, however if any individual line in the buffer grows over 600 bytes in length (which is 88 chars over the RFC-specified limit per line) then the method will return false and the text will not be inserted.
280 <p>
281 Definition at line <a class="el" href="users_8cpp-source.html#l00194">194</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
282 <p>
283 References <a class="el" href="users_8h-source.html#l00194">recvq</a>, <a class="el" href="users_8h-source.html#l00217">recvqmax</a>, and <a class="el" href="users_8cpp-source.html#l00288">SetWriteError()</a>.<div class="fragment"><pre class="fragment"><a name="l00195"></a>00195 {
284 <a name="l00196"></a>00196         <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
285 <a name="l00197"></a>00197         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; a.length(); i++)
286 <a name="l00198"></a>00198                 <span class="keywordflow">if</span> ((a[i] != <span class="charliteral">'\r'</span>) &amp;&amp; (a[i] != <span class="charliteral">'\0'</span>) &amp;&amp; (a[i] != 7))
287 <a name="l00199"></a>00199                         b = b + a[i];
288 <a name="l00200"></a>00200         std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
289 <a name="l00201"></a>00201         stream &lt;&lt; b;
290 <a name="l00202"></a>00202         <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
291 <a name="l00203"></a>00203         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
292 <a name="l00204"></a>00204         <span class="comment">// count the size of the first line in the buffer.</span>
293 <a name="l00205"></a>00205         <span class="keywordflow">while</span> (i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
294 <a name="l00206"></a>00206         {
295 <a name="l00207"></a>00207                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
296 <a name="l00208"></a>00208                         <span class="keywordflow">break</span>;
297 <a name="l00209"></a>00209         }
298 <a name="l00210"></a>00210         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
299 <a name="l00211"></a>00211         {
300 <a name="l00212"></a>00212                 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
301 <a name="l00213"></a>00213                 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#recvq">recvq</a>.length(),this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
302 <a name="l00214"></a>00214         }
303 <a name="l00215"></a>00215         <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
304 <a name="l00216"></a>00216         <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
305 <a name="l00217"></a>00217         <span class="keywordflow">return</span> (i &lt; 600);
306 <a name="l00218"></a>00218 }
307 </pre></div>
308 <p>
309     </td>
310   </tr>
311 </table>
312 <a class="anchor" name="AddWriteBuf_28std_3A_3Astring_20data_29"></a><!-- doxytag: member="userrec::AddWriteBuf" ref="AddWriteBuf_28std_3A_3Astring_20data_29" args="(std::string data)" --><p>
313 <table class="mdTable" cellpadding="2" cellspacing="0">
314   <tr>
315     <td class="mdRow">
316       <table cellpadding="0" cellspacing="0" border="0">
317         <tr>
318           <td class="md" nowrap valign="top">void userrec::AddWriteBuf           </td>
319           <td class="md" valign="top">(&nbsp;</td>
320           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td>
321           <td class="mdname1" valign="top" nowrap> <em>data</em>          </td>
322           <td class="md" valign="top">&nbsp;)&nbsp;</td>
323           <td class="md" nowrap></td>
324         </tr>
325       </table>
326     </td>
327   </tr>
328 </table>
329 <table cellspacing="5" cellpadding="0" border="0">
330   <tr>
331     <td>
332       &nbsp;
333     </td>
334     <td>
335
336 <p>
337 Adds to the user's write buffer. 
338 <p>
339 You may add any amount of text up to this users sendq value, if you exceed the sendq value, <a class="el" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError()</a> will be called to set the users error string to "SendQ exceeded", and further buffer adds will be dropped.
340 <p>
341 Definition at line <a class="el" href="users_8cpp-source.html#l00250">250</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
342 <p>
343 References <a class="el" href="users_8h-source.html#l00199">sendq</a>, <a class="el" href="users_8h-source.html#l00213">sendqmax</a>, and <a class="el" href="users_8cpp-source.html#l00288">SetWriteError()</a>.<div class="fragment"><pre class="fragment"><a name="l00251"></a>00251 {
344 <a name="l00252"></a>00252         <span class="keywordflow">if</span> (this-&gt;GetWriteError() != <span class="stringliteral">""</span>)
345 <a name="l00253"></a>00253                 <span class="keywordflow">return</span>;
346 <a name="l00254"></a>00254         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
347 <a name="l00255"></a>00255         {
348 <a name="l00256"></a>00256                 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#sendq">sendq</a>.length() + data.length(),this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
349 <a name="l00257"></a>00257                 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
350 <a name="l00258"></a>00258                 <span class="keywordflow">return</span>;
351 <a name="l00259"></a>00259         }
352 <a name="l00260"></a>00260         std::stringstream stream;
353 <a name="l00261"></a>00261         stream &lt;&lt; <a class="code" href="classuserrec.html#sendq">sendq</a> &lt;&lt; data;
354 <a name="l00262"></a>00262         <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
355 <a name="l00263"></a>00263 }
356 </pre></div>
357 <p>
358     </td>
359   </tr>
360 </table>
361 <a class="anchor" name="BufferIsReady_28_29"></a><!-- doxytag: member="userrec::BufferIsReady" ref="BufferIsReady_28_29" args="()" --><p>
362 <table class="mdTable" cellpadding="2" cellspacing="0">
363   <tr>
364     <td class="mdRow">
365       <table cellpadding="0" cellspacing="0" border="0">
366         <tr>
367           <td class="md" nowrap valign="top">bool userrec::BufferIsReady           </td>
368           <td class="md" valign="top">(&nbsp;</td>
369           <td class="mdname1" valign="top" nowrap>          </td>
370           <td class="md" valign="top">&nbsp;)&nbsp;</td>
371           <td class="md" nowrap></td>
372         </tr>
373       </table>
374     </td>
375   </tr>
376 </table>
377 <table cellspacing="5" cellpadding="0" border="0">
378   <tr>
379     <td>
380       &nbsp;
381     </td>
382     <td>
383
384 <p>
385 This method returns true if the buffer contains at least one carriage return character (e.g. 
386 <p>
387 one complete line may be read)
388 <p>
389 Definition at line <a class="el" href="users_8cpp-source.html#l00220">220</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
390 <p>
391 References <a class="el" href="users_8h-source.html#l00194">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00221"></a>00221 {
392 <a name="l00222"></a>00222         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
393 <a name="l00223"></a>00223                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
394 <a name="l00224"></a>00224                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
395 <a name="l00225"></a>00225         <span class="keywordflow">return</span> <span class="keyword">false</span>;
396 <a name="l00226"></a>00226 }
397 </pre></div>
398 <p>
399     </td>
400   </tr>
401 </table>
402 <a class="anchor" name="ClearBuffer_28_29"></a><!-- doxytag: member="userrec::ClearBuffer" ref="ClearBuffer_28_29" args="()" --><p>
403 <table class="mdTable" cellpadding="2" cellspacing="0">
404   <tr>
405     <td class="mdRow">
406       <table cellpadding="0" cellspacing="0" border="0">
407         <tr>
408           <td class="md" nowrap valign="top">void userrec::ClearBuffer           </td>
409           <td class="md" valign="top">(&nbsp;</td>
410           <td class="mdname1" valign="top" nowrap>          </td>
411           <td class="md" valign="top">&nbsp;)&nbsp;</td>
412           <td class="md" nowrap></td>
413         </tr>
414       </table>
415     </td>
416   </tr>
417 </table>
418 <table cellspacing="5" cellpadding="0" border="0">
419   <tr>
420     <td>
421       &nbsp;
422     </td>
423     <td>
424
425 <p>
426 This function clears the entire buffer by setting it to an empty string. 
427 <p>
428
429 <p>
430 Definition at line <a class="el" href="users_8cpp-source.html#l00228">228</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
431 <p>
432 References <a class="el" href="users_8h-source.html#l00194">recvq</a>.
433 <p>
434 Referenced by <a class="el" href="modules_8cpp-source.html#l00670">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00639">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00229"></a>00229 {
435 <a name="l00230"></a>00230         <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
436 <a name="l00231"></a>00231 }
437 </pre></div>
438 <p>
439     </td>
440   </tr>
441 </table>
442 <a class="anchor" name="CloseSocket_28_29"></a><!-- doxytag: member="userrec::CloseSocket" ref="CloseSocket_28_29" args="()" --><p>
443 <table class="mdTable" cellpadding="2" cellspacing="0">
444   <tr>
445     <td class="mdRow">
446       <table cellpadding="0" cellspacing="0" border="0">
447         <tr>
448           <td class="md" nowrap valign="top">void userrec::CloseSocket           </td>
449           <td class="md" valign="top">(&nbsp;</td>
450           <td class="mdname1" valign="top" nowrap>          </td>
451           <td class="md" valign="top">&nbsp;)&nbsp;</td>
452           <td class="md" nowrap></td>
453         </tr>
454       </table>
455     </td>
456   </tr>
457 </table>
458 <table cellspacing="5" cellpadding="0" border="0">
459   <tr>
460     <td>
461       &nbsp;
462     </td>
463     <td>
464
465 <p>
466 Shuts down and closes the user's socket. 
467 <p>
468
469 <p>
470 Definition at line <a class="el" href="users_8cpp-source.html#l00063">63</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00064"></a>00064 {
471 <a name="l00065"></a>00065         shutdown(this-&gt;fd,2);
472 <a name="l00066"></a>00066         close(this-&gt;fd);
473 <a name="l00067"></a>00067 }
474 </pre></div>
475 <p>
476     </td>
477   </tr>
478 </table>
479 <a class="anchor" name="FlushWriteBuf_28_29"></a><!-- doxytag: member="userrec::FlushWriteBuf" ref="FlushWriteBuf_28_29" args="()" --><p>
480 <table class="mdTable" cellpadding="2" cellspacing="0">
481   <tr>
482     <td class="mdRow">
483       <table cellpadding="0" cellspacing="0" border="0">
484         <tr>
485           <td class="md" nowrap valign="top">void userrec::FlushWriteBuf           </td>
486           <td class="md" valign="top">(&nbsp;</td>
487           <td class="mdname1" valign="top" nowrap>          </td>
488           <td class="md" valign="top">&nbsp;)&nbsp;</td>
489           <td class="md" nowrap></td>
490         </tr>
491       </table>
492     </td>
493   </tr>
494 </table>
495 <table cellspacing="5" cellpadding="0" border="0">
496   <tr>
497     <td>
498       &nbsp;
499     </td>
500     <td>
501
502 <p>
503 Flushes as much of the user's buffer to the file descriptor as possible. 
504 <p>
505 This function may not always flush the entire buffer, rather instead as much of it as it possibly can. If the send() call fails to send the entire buffer, the buffer position is advanced forwards and the rest of the data sent at the next call to this method.
506 <p>
507 Definition at line <a class="el" href="users_8cpp-source.html#l00266">266</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
508 <p>
509 References <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00199">sendq</a>, and <a class="el" href="users_8cpp-source.html#l00288">SetWriteError()</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 {
510 <a name="l00268"></a>00268         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
511 <a name="l00269"></a>00269         {
512 <a name="l00270"></a>00270                 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
513 <a name="l00271"></a>00271                 <span class="keywordtype">int</span> n_sent = write(this-&gt;fd,tb,this-&gt;sendq.length());
514 <a name="l00272"></a>00272                 <span class="keywordflow">if</span> (n_sent == -1)
515 <a name="l00273"></a>00273                 {
516 <a name="l00274"></a>00274                         this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
517 <a name="l00275"></a>00275                 }
518 <a name="l00276"></a>00276                 <span class="keywordflow">else</span>
519 <a name="l00277"></a>00277                 {
520 <a name="l00278"></a>00278                         <span class="comment">// advance the queue</span>
521 <a name="l00279"></a>00279                         tb += n_sent;
522 <a name="l00280"></a>00280                         this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
523 <a name="l00281"></a>00281                         <span class="comment">// update the user's stats counters</span>
524 <a name="l00282"></a>00282                         this-&gt;<a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
525 <a name="l00283"></a>00283                         this-&gt;<a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
526 <a name="l00284"></a>00284                 }
527 <a name="l00285"></a>00285         }
528 <a name="l00286"></a>00286 }
529 </pre></div>
530 <p>
531     </td>
532   </tr>
533 </table>
534 <a class="anchor" name="GetBuffer_28_29"></a><!-- doxytag: member="userrec::GetBuffer" ref="GetBuffer_28_29" args="()" --><p>
535 <table class="mdTable" cellpadding="2" cellspacing="0">
536   <tr>
537     <td class="mdRow">
538       <table cellpadding="0" cellspacing="0" border="0">
539         <tr>
540           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> userrec::GetBuffer           </td>
541           <td class="md" valign="top">(&nbsp;</td>
542           <td class="mdname1" valign="top" nowrap>          </td>
543           <td class="md" valign="top">&nbsp;)&nbsp;</td>
544           <td class="md" nowrap></td>
545         </tr>
546       </table>
547     </td>
548   </tr>
549 </table>
550 <table cellspacing="5" cellpadding="0" border="0">
551   <tr>
552     <td>
553       &nbsp;
554     </td>
555     <td>
556
557 <p>
558 This method returns the first available string at the tail end of the buffer and advances the tail end of the buffer past the string. 
559 <p>
560 This means it is a one way operation in a similar way to strtok(), and multiple calls return multiple lines if they are available. The results of this function if there are no lines to be read are unknown, always use <a class="el" href="classuserrec.html#BufferIsReady_28_29">BufferIsReady()</a> to check if it is ok to read the buffer before calling <a class="el" href="classuserrec.html#GetBuffer_28_29">GetBuffer()</a>.
561 <p>
562 Definition at line <a class="el" href="users_8cpp-source.html#l00233">233</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
563 <p>
564 References <a class="el" href="users_8h-source.html#l00194">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00234"></a>00234 {
565 <a name="l00235"></a>00235         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
566 <a name="l00236"></a>00236                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
567 <a name="l00237"></a>00237         <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
568 <a name="l00238"></a>00238         <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
569 <a name="l00239"></a>00239         <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) &amp;&amp; (strlen(line)))
570 <a name="l00240"></a>00240         {
571 <a name="l00241"></a>00241                 ret = ret + *line;
572 <a name="l00242"></a>00242                 line++;
573 <a name="l00243"></a>00243         }
574 <a name="l00244"></a>00244         <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
575 <a name="l00245"></a>00245                 line++;
576 <a name="l00246"></a>00246         <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
577 <a name="l00247"></a>00247         <span class="keywordflow">return</span> ret;
578 <a name="l00248"></a>00248 }
579 </pre></div>
580 <p>
581     </td>
582   </tr>
583 </table>
584 <a class="anchor" name="GetFullHost_28_29"></a><!-- doxytag: member="userrec::GetFullHost" ref="GetFullHost_28_29" args="()" --><p>
585 <table class="mdTable" cellpadding="2" cellspacing="0">
586   <tr>
587     <td class="mdRow">
588       <table cellpadding="0" cellspacing="0" border="0">
589         <tr>
590           <td class="md" nowrap valign="top">char * userrec::GetFullHost           </td>
591           <td class="md" valign="top">(&nbsp;</td>
592           <td class="mdname1" valign="top" nowrap>          </td>
593           <td class="md" valign="top">&nbsp;)&nbsp;</td>
594           <td class="md" nowrap><code> [virtual]</code></td>
595         </tr>
596       </table>
597     </td>
598   </tr>
599 </table>
600 <table cellspacing="5" cellpadding="0" border="0">
601   <tr>
602     <td>
603       &nbsp;
604     </td>
605     <td>
606
607 <p>
608 Returns the full displayed host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. 
609 <p>
610
611 <p>
612 Definition at line <a class="el" href="users_8cpp-source.html#l00069">69</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
613 <p>
614 References <a class="el" href="users_8h-source.html#l00131">dhost</a>, <a class="el" href="users_8h-source.html#l00126">ident</a>, and <a class="el" href="users_8h-source.html#l00121">nick</a>.<div class="fragment"><pre class="fragment"><a name="l00070"></a>00070 {
615 <a name="l00071"></a>00071         <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
616 <a name="l00072"></a>00072         snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
617 <a name="l00073"></a>00073         <span class="keywordflow">return</span> result;
618 <a name="l00074"></a>00074 }
619 </pre></div>
620 <p>
621     </td>
622   </tr>
623 </table>
624 <a class="anchor" name="GetFullRealHost_28_29"></a><!-- doxytag: member="userrec::GetFullRealHost" ref="GetFullRealHost_28_29" args="()" --><p>
625 <table class="mdTable" cellpadding="2" cellspacing="0">
626   <tr>
627     <td class="mdRow">
628       <table cellpadding="0" cellspacing="0" border="0">
629         <tr>
630           <td class="md" nowrap valign="top">char * userrec::GetFullRealHost           </td>
631           <td class="md" valign="top">(&nbsp;</td>
632           <td class="mdname1" valign="top" nowrap>          </td>
633           <td class="md" valign="top">&nbsp;)&nbsp;</td>
634           <td class="md" nowrap><code> [virtual]</code></td>
635         </tr>
636       </table>
637     </td>
638   </tr>
639 </table>
640 <table cellspacing="5" cellpadding="0" border="0">
641   <tr>
642     <td>
643       &nbsp;
644     </td>
645     <td>
646
647 <p>
648 Returns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. 
649 <p>
650 If any form of hostname cloaking is in operation, e.g. through a module, then this method will ignore it and return the true hostname.
651 <p>
652 Definition at line <a class="el" href="users_8cpp-source.html#l00087">87</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
653 <p>
654 References <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00126">ident</a>, and <a class="el" href="users_8h-source.html#l00121">nick</a>.<div class="fragment"><pre class="fragment"><a name="l00088"></a>00088 {
655 <a name="l00089"></a>00089         <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
656 <a name="l00090"></a>00090         snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
657 <a name="l00091"></a>00091         <span class="keywordflow">return</span> fresult;
658 <a name="l00092"></a>00092 }
659 </pre></div>
660 <p>
661     </td>
662   </tr>
663 </table>
664 <a class="anchor" name="GetInviteList_28_29"></a><!-- doxytag: member="userrec::GetInviteList" ref="GetInviteList_28_29" args="()" --><p>
665 <table class="mdTable" cellpadding="2" cellspacing="0">
666   <tr>
667     <td class="mdRow">
668       <table cellpadding="0" cellspacing="0" border="0">
669         <tr>
670           <td class="md" nowrap valign="top"><a class="el" href="users_8h.html#InvitedList">InvitedList</a> * userrec::GetInviteList           </td>
671           <td class="md" valign="top">(&nbsp;</td>
672           <td class="mdname1" valign="top" nowrap>          </td>
673           <td class="md" valign="top">&nbsp;)&nbsp;</td>
674           <td class="md" nowrap></td>
675         </tr>
676       </table>
677     </td>
678   </tr>
679 </table>
680 <table cellspacing="5" cellpadding="0" border="0">
681   <tr>
682     <td>
683       &nbsp;
684     </td>
685     <td>
686
687 <p>
688 Returns the list of channels this user has been invited to but has not yet joined. 
689 <p>
690
691 <p>
692 Definition at line <a class="el" href="users_8cpp-source.html#l00108">108</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
693 <p>
694 References <a class="el" href="users_8h-source.html#l00114">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00109"></a>00109 {
695 <a name="l00110"></a>00110         <span class="keywordflow">return</span> &amp;<a class="code" href="classuserrec.html#invites">invites</a>;
696 <a name="l00111"></a>00111 }
697 </pre></div>
698 <p>
699     </td>
700   </tr>
701 </table>
702 <a class="anchor" name="GetWriteError_28_29"></a><!-- doxytag: member="userrec::GetWriteError" ref="GetWriteError_28_29" args="()" --><p>
703 <table class="mdTable" cellpadding="2" cellspacing="0">
704   <tr>
705     <td class="mdRow">
706       <table cellpadding="0" cellspacing="0" border="0">
707         <tr>
708           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> userrec::GetWriteError           </td>
709           <td class="md" valign="top">(&nbsp;</td>
710           <td class="mdname1" valign="top" nowrap>          </td>
711           <td class="md" valign="top">&nbsp;)&nbsp;</td>
712           <td class="md" nowrap></td>
713         </tr>
714       </table>
715     </td>
716   </tr>
717 </table>
718 <table cellspacing="5" cellpadding="0" border="0">
719   <tr>
720     <td>
721       &nbsp;
722     </td>
723     <td>
724
725 <p>
726 Returns the write error which last occured on this connection or an empty string if none occured. 
727 <p>
728
729 <p>
730 Definition at line <a class="el" href="users_8cpp-source.html#l00296">296</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
731 <p>
732 References <a class="el" href="users_8h-source.html#l00209">WriteError</a>.<div class="fragment"><pre class="fragment"><a name="l00297"></a>00297 {
733 <a name="l00298"></a>00298         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a>;
734 <a name="l00299"></a>00299 }
735 </pre></div>
736 <p>
737     </td>
738   </tr>
739 </table>
740 <a class="anchor" name="HasPermission_28char_20_2Acommand_29"></a><!-- doxytag: member="userrec::HasPermission" ref="HasPermission_28char_20_2Acommand_29" args="(char *command)" --><p>
741 <table class="mdTable" cellpadding="2" cellspacing="0">
742   <tr>
743     <td class="mdRow">
744       <table cellpadding="0" cellspacing="0" border="0">
745         <tr>
746           <td class="md" nowrap valign="top">bool userrec::HasPermission           </td>
747           <td class="md" valign="top">(&nbsp;</td>
748           <td class="md" nowrap valign="top">char *&nbsp;</td>
749           <td class="mdname1" valign="top" nowrap> <em>command</em>          </td>
750           <td class="md" valign="top">&nbsp;)&nbsp;</td>
751           <td class="md" nowrap></td>
752         </tr>
753       </table>
754     </td>
755   </tr>
756 </table>
757 <table cellspacing="5" cellpadding="0" border="0">
758   <tr>
759     <td>
760       &nbsp;
761     </td>
762     <td>
763
764 <p>
765 Returns true or false for if a user can execute a privilaged oper command. 
766 <p>
767 This is done by looking up their oper type from <a class="el" href="classuserrec.html#oper_5BNICKMAX_5D">userrec::oper</a>, then referencing this to their oper classes and checking the commands they can execute.
768 <p>
769 Definition at line <a class="el" href="users_8cpp-source.html#l00142">142</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
770 <p>
771 References <a class="el" href="channels_8cpp.html#config_5Ff">config_f</a>, and <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>.<div class="fragment"><pre class="fragment"><a name="l00143"></a>00143 {
772 <a name="l00144"></a>00144         <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
773 <a name="l00145"></a>00145         <span class="keywordtype">char</span>* mycmd;
774 <a name="l00146"></a>00146         <span class="keywordtype">char</span>* savept;
775 <a name="l00147"></a>00147         <span class="keywordtype">char</span>* savept2;
776 <a name="l00148"></a>00148         
777 <a name="l00149"></a>00149         <span class="comment">// are they even an oper at all?</span>
778 <a name="l00150"></a>00150         <span class="keywordflow">if</span> (strchr(this-&gt;modes,<span class="charliteral">'o'</span>))
779 <a name="l00151"></a>00151         {
780 <a name="l00152"></a>00152                 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** HasPermission: %s is an oper"</span>,this-&gt;nick);
781 <a name="l00153"></a>00153                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j &lt; ConfValueEnum(<span class="stringliteral">"type"</span>,&amp;config_f); j++)
782 <a name="l00154"></a>00154                 {
783 <a name="l00155"></a>00155                         ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&amp;config_f);
784 <a name="l00156"></a>00156                         <span class="keywordflow">if</span> (!strcmp(TypeName,this-&gt;oper))
785 <a name="l00157"></a>00157                         {
786 <a name="l00158"></a>00158                                 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** HasPermission: %s is an oper of type '%s'"</span>,this-&gt;nick,this-&gt;oper);
787 <a name="l00159"></a>00159                                 ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&amp;config_f);
788 <a name="l00160"></a>00160                                 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&amp;savept);
789 <a name="l00161"></a>00161                                 <span class="keywordflow">while</span> (myclass)
790 <a name="l00162"></a>00162                                 {
791 <a name="l00163"></a>00163                                         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** HasPermission: checking classtype '%s'"</span>,myclass);
792 <a name="l00164"></a>00164                                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k &lt; ConfValueEnum(<span class="stringliteral">"class"</span>,&amp;config_f); k++)
793 <a name="l00165"></a>00165                                         {
794 <a name="l00166"></a>00166                                                 ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&amp;config_f);
795 <a name="l00167"></a>00167                                                 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
796 <a name="l00168"></a>00168                                                 {
797 <a name="l00169"></a>00169                                                         ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&amp;config_f);
798 <a name="l00170"></a>00170                                                         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** HasPermission: found class named %s with commands: '%s'"</span>,ClassName,CommandList);
799 <a name="l00171"></a>00171                                                         
800 <a name="l00172"></a>00172                                                         
801 <a name="l00173"></a>00173                                                         mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&amp;savept2);
802 <a name="l00174"></a>00174                                                         <span class="keywordflow">while</span> (mycmd)
803 <a name="l00175"></a>00175                                                         {
804 <a name="l00176"></a>00176                                                                 <span class="keywordflow">if</span> (!strcasecmp(mycmd,command))
805 <a name="l00177"></a>00177                                                                 {
806 <a name="l00178"></a>00178                                                                         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** Command %s found, returning true"</span>,command);
807 <a name="l00179"></a>00179                                                                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
808 <a name="l00180"></a>00180                                                                 }
809 <a name="l00181"></a>00181                                                                 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept2);
810 <a name="l00182"></a>00182                                                         }
811 <a name="l00183"></a>00183                                                 }
812 <a name="l00184"></a>00184                                         }
813 <a name="l00185"></a>00185                                         myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept);
814 <a name="l00186"></a>00186                                 }
815 <a name="l00187"></a>00187                         }
816 <a name="l00188"></a>00188                 }
817 <a name="l00189"></a>00189         }
818 <a name="l00190"></a>00190         <span class="keywordflow">return</span> <span class="keyword">false</span>;
819 <a name="l00191"></a>00191 }
820 </pre></div>
821 <p>
822     </td>
823   </tr>
824 </table>
825 <a class="anchor" name="InviteTo_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::InviteTo" ref="InviteTo_28char_20_2Achannel_29" args="(char *channel)" --><p>
826 <table class="mdTable" cellpadding="2" cellspacing="0">
827   <tr>
828     <td class="mdRow">
829       <table cellpadding="0" cellspacing="0" border="0">
830         <tr>
831           <td class="md" nowrap valign="top">void userrec::InviteTo           </td>
832           <td class="md" valign="top">(&nbsp;</td>
833           <td class="md" nowrap valign="top">char *&nbsp;</td>
834           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
835           <td class="md" valign="top">&nbsp;)&nbsp;</td>
836           <td class="md" nowrap><code> [virtual]</code></td>
837         </tr>
838       </table>
839     </td>
840   </tr>
841 </table>
842 <table cellspacing="5" cellpadding="0" border="0">
843   <tr>
844     <td>
845       &nbsp;
846     </td>
847     <td>
848
849 <p>
850 Adds a channel to a users invite list (invites them to a channel). 
851 <p>
852
853 <p>
854 Definition at line <a class="el" href="users_8cpp-source.html#l00113">113</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
855 <p>
856 References <a class="el" href="users_8h-source.html#l00039">Invited::channel</a>, and <a class="el" href="users_8h-source.html#l00114">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00114"></a>00114 {
857 <a name="l00115"></a>00115         <a class="code" href="classInvited.html">Invited</a> i;
858 <a name="l00116"></a>00116         strlcpy(i.<a class="code" href="classInvited.html#channel_5BCHANMAX_5D">channel</a>,channel,CHANMAX);
859 <a name="l00117"></a>00117         <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
860 <a name="l00118"></a>00118 }
861 </pre></div>
862 <p>
863     </td>
864   </tr>
865 </table>
866 <a class="anchor" name="IsInvited_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::IsInvited" ref="IsInvited_28char_20_2Achannel_29" args="(char *channel)" --><p>
867 <table class="mdTable" cellpadding="2" cellspacing="0">
868   <tr>
869     <td class="mdRow">
870       <table cellpadding="0" cellspacing="0" border="0">
871         <tr>
872           <td class="md" nowrap valign="top">bool userrec::IsInvited           </td>
873           <td class="md" valign="top">(&nbsp;</td>
874           <td class="md" nowrap valign="top">char *&nbsp;</td>
875           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
876           <td class="md" valign="top">&nbsp;)&nbsp;</td>
877           <td class="md" nowrap><code> [virtual]</code></td>
878         </tr>
879       </table>
880     </td>
881   </tr>
882 </table>
883 <table cellspacing="5" cellpadding="0" border="0">
884   <tr>
885     <td>
886       &nbsp;
887     </td>
888     <td>
889
890 <p>
891 Returns true if a user is invited to a channel. 
892 <p>
893
894 <p>
895 Definition at line <a class="el" href="users_8cpp-source.html#l00094">94</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
896 <p>
897 References <a class="el" href="users_8h-source.html#l00114">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00095"></a>00095 {
898 <a name="l00096"></a>00096         <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
899 <a name="l00097"></a>00097         {
900 <a name="l00098"></a>00098                 <span class="keywordflow">if</span> (i-&gt;channel) {
901 <a name="l00099"></a>00099                         <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
902 <a name="l00100"></a>00100                         {
903 <a name="l00101"></a>00101                                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
904 <a name="l00102"></a>00102                         }
905 <a name="l00103"></a>00103                 }
906 <a name="l00104"></a>00104         }
907 <a name="l00105"></a>00105         <span class="keywordflow">return</span> <span class="keyword">false</span>;
908 <a name="l00106"></a>00106 }
909 </pre></div>
910 <p>
911     </td>
912   </tr>
913 </table>
914 <a class="anchor" name="ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29"></a><!-- doxytag: member="userrec::ReadData" ref="ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29" args="(void *buffer, size_t size)" --><p>
915 <table class="mdTable" cellpadding="2" cellspacing="0">
916   <tr>
917     <td class="mdRow">
918       <table cellpadding="0" cellspacing="0" border="0">
919         <tr>
920           <td class="md" nowrap valign="top">int userrec::ReadData           </td>
921           <td class="md" valign="top">(&nbsp;</td>
922           <td class="md" nowrap valign="top">void *&nbsp;</td>
923           <td class="mdname" nowrap> <em>buffer</em>, </td>
924         </tr>
925         <tr>
926           <td class="md" nowrap align="right"></td>
927           <td class="md"></td>
928           <td class="md" nowrap>size_t&nbsp;</td>
929           <td class="mdname" nowrap> <em>size</em></td>
930         </tr>
931         <tr>
932           <td class="md"></td>
933           <td class="md">)&nbsp;</td>
934           <td class="md" colspan="2"></td>
935         </tr>
936       </table>
937     </td>
938   </tr>
939 </table>
940 <table cellspacing="5" cellpadding="0" border="0">
941   <tr>
942     <td>
943       &nbsp;
944     </td>
945     <td>
946
947 <p>
948 Calls read() to read some data for this user using their fd. 
949 <p>
950
951 <p>
952 Definition at line <a class="el" href="users_8cpp-source.html#l00076">76</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
953 <p>
954 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>.<div class="fragment"><pre class="fragment"><a name="l00077"></a>00077 {
955 <a name="l00078"></a>00078         <span class="keywordflow">if</span> (this-&gt;fd &gt; -1)
956 <a name="l00079"></a>00079         {
957 <a name="l00080"></a>00080                 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"userrec::ReadData on fd %d"</span>,this-&gt;fd);
958 <a name="l00081"></a>00081                 <span class="keywordflow">return</span> read(this-&gt;fd, buffer, size);
959 <a name="l00082"></a>00082         }
960 <a name="l00083"></a>00083         <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
961 <a name="l00084"></a>00084 }
962 </pre></div>
963 <p>
964     </td>
965   </tr>
966 </table>
967 <a class="anchor" name="RemoveInvite_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::RemoveInvite" ref="RemoveInvite_28char_20_2Achannel_29" args="(char *channel)" --><p>
968 <table class="mdTable" cellpadding="2" cellspacing="0">
969   <tr>
970     <td class="mdRow">
971       <table cellpadding="0" cellspacing="0" border="0">
972         <tr>
973           <td class="md" nowrap valign="top">void userrec::RemoveInvite           </td>
974           <td class="md" valign="top">(&nbsp;</td>
975           <td class="md" nowrap valign="top">char *&nbsp;</td>
976           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
977           <td class="md" valign="top">&nbsp;)&nbsp;</td>
978           <td class="md" nowrap><code> [virtual]</code></td>
979         </tr>
980       </table>
981     </td>
982   </tr>
983 </table>
984 <table cellspacing="5" cellpadding="0" border="0">
985   <tr>
986     <td>
987       &nbsp;
988     </td>
989     <td>
990
991 <p>
992 Removes a channel from a users invite list. 
993 <p>
994 This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.
995 <p>
996 Definition at line <a class="el" href="users_8cpp-source.html#l00120">120</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
997 <p>
998 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="users_8h-source.html#l00114">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00121"></a>00121 {
999 <a name="l00122"></a>00122         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
1000 <a name="l00123"></a>00123         <span class="keywordflow">if</span> (channel)
1001 <a name="l00124"></a>00124         {
1002 <a name="l00125"></a>00125                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
1003 <a name="l00126"></a>00126                 {
1004 <a name="l00127"></a>00127                         <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
1005 <a name="l00128"></a>00128                         {
1006 <a name="l00129"></a>00129                                 <span class="keywordflow">if</span> (i-&gt;channel)
1007 <a name="l00130"></a>00130                                 {
1008 <a name="l00131"></a>00131                                         <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
1009 <a name="l00132"></a>00132                                         {
1010 <a name="l00133"></a>00133                                                 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
1011 <a name="l00134"></a>00134                                                 <span class="keywordflow">return</span>;
1012 <a name="l00135"></a>00135                                         }
1013 <a name="l00136"></a>00136                                 }
1014 <a name="l00137"></a>00137                         }
1015 <a name="l00138"></a>00138                 }
1016 <a name="l00139"></a>00139         }
1017 <a name="l00140"></a>00140 }
1018 </pre></div>
1019 <p>
1020     </td>
1021   </tr>
1022 </table>
1023 <a class="anchor" name="SetWriteError_28std_3A_3Astring_20error_29"></a><!-- doxytag: member="userrec::SetWriteError" ref="SetWriteError_28std_3A_3Astring_20error_29" args="(std::string error)" --><p>
1024 <table class="mdTable" cellpadding="2" cellspacing="0">
1025   <tr>
1026     <td class="mdRow">
1027       <table cellpadding="0" cellspacing="0" border="0">
1028         <tr>
1029           <td class="md" nowrap valign="top">void userrec::SetWriteError           </td>
1030           <td class="md" valign="top">(&nbsp;</td>
1031           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td>
1032           <td class="mdname1" valign="top" nowrap> <em>error</em>          </td>
1033           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1034           <td class="md" nowrap></td>
1035         </tr>
1036       </table>
1037     </td>
1038   </tr>
1039 </table>
1040 <table cellspacing="5" cellpadding="0" border="0">
1041   <tr>
1042     <td>
1043       &nbsp;
1044     </td>
1045     <td>
1046
1047 <p>
1048 Sets the write error for a connection. 
1049 <p>
1050 This is done because the actual disconnect of a client may occur at an inopportune time such as half way through /LIST output. The WriteErrors of clients are checked at a more ideal time (in the mainloop) and errored clients purged.
1051 <p>
1052 Definition at line <a class="el" href="users_8cpp-source.html#l00288">288</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
1053 <p>
1054 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="users_8h-source.html#l00209">WriteError</a>.
1055 <p>
1056 Referenced by <a class="el" href="users_8cpp-source.html#l00194">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00250">AddWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00266">FlushWriteBuf()</a>.<div class="fragment"><pre class="fragment"><a name="l00289"></a>00289 {
1057 <a name="l00290"></a>00290         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this-&gt;nick,error.c_str());
1058 <a name="l00291"></a>00291         <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
1059 <a name="l00292"></a>00292         <span class="keywordflow">if</span> (this-&gt;WriteError == <span class="stringliteral">""</span>)
1060 <a name="l00293"></a>00293                 this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
1061 <a name="l00294"></a>00294 }
1062 </pre></div>
1063 <p>
1064     </td>
1065   </tr>
1066 </table>
1067 <hr><h2>Member Data Documentation</h2>
1068 <a class="anchor" name="awaymsg_5BMAXAWAY_2B_31_5D"></a><!-- doxytag: member="userrec::awaymsg" ref="awaymsg_5BMAXAWAY_2B_31_5D" args="[MAXAWAY+1]" --><p>
1069 <table class="mdTable" cellpadding="2" cellspacing="0">
1070   <tr>
1071     <td class="mdRow">
1072       <table cellpadding="0" cellspacing="0" border="0">
1073         <tr>
1074           <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">userrec::awaymsg</a>[MAXAWAY+1]          </td>
1075         </tr>
1076       </table>
1077     </td>
1078   </tr>
1079 </table>
1080 <table cellspacing="5" cellpadding="0" border="0">
1081   <tr>
1082     <td>
1083       &nbsp;
1084     </td>
1085     <td>
1086
1087 <p>
1088 The user's away message. 
1089 <p>
1090 If this string is empty, the user is not marked as away.
1091 <p>
1092 Definition at line <a class="el" href="users_8h-source.html#l00155">155</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1093 <p>
1094 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1095   </tr>
1096 </table>
1097 <a class="anchor" name="chans_5BMAXCHANS_5D"></a><!-- doxytag: member="userrec::chans" ref="chans_5BMAXCHANS_5D" args="[MAXCHANS]" --><p>
1098 <table class="mdTable" cellpadding="2" cellspacing="0">
1099   <tr>
1100     <td class="mdRow">
1101       <table cellpadding="0" cellspacing="0" border="0">
1102         <tr>
1103           <td class="md" nowrap valign="top"><a class="el" href="classucrec.html">ucrec</a> <a class="el" href="classuserrec.html#chans_5BMAXCHANS_5D">userrec::chans</a>[MAXCHANS]          </td>
1104         </tr>
1105       </table>
1106     </td>
1107   </tr>
1108 </table>
1109 <table cellspacing="5" cellpadding="0" border="0">
1110   <tr>
1111     <td>
1112       &nbsp;
1113     </td>
1114     <td>
1115
1116 <p>
1117
1118 <p>
1119 Definition at line <a class="el" href="users_8h-source.html#l00146">146</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1120 <p>
1121 Referenced by <a class="el" href="modules_8cpp-source.html#l00670">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1122   </tr>
1123 </table>
1124 <a class="anchor" name="dhost_5B_31_36_30_5D"></a><!-- doxytag: member="userrec::dhost" ref="dhost_5B_31_36_30_5D" args="[160]" --><p>
1125 <table class="mdTable" cellpadding="2" cellspacing="0">
1126   <tr>
1127     <td class="mdRow">
1128       <table cellpadding="0" cellspacing="0" border="0">
1129         <tr>
1130           <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#dhost_5B_31_36_30_5D">userrec::dhost</a>[160]          </td>
1131         </tr>
1132       </table>
1133     </td>
1134   </tr>
1135 </table>
1136 <table cellspacing="5" cellpadding="0" border="0">
1137   <tr>
1138     <td>
1139       &nbsp;
1140     </td>
1141     <td>
1142
1143 <p>
1144 The host displayed to non-opers (used for cloaking etc). 
1145 <p>
1146 This usually matches the value of <a class="el" href="classconnection.html#host_5B_31_36_30_5D">userrec::host</a>.
1147 <p>
1148 Definition at line <a class="el" href="users_8h-source.html#l00131">131</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1149 <p>
1150 Referenced by <a class="el" href="users_8cpp-source.html#l00069">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1151   </tr>
1152 </table>
1153 <a class="anchor" name="dns_5Fdone"></a><!-- doxytag: member="userrec::dns_done" ref="dns_5Fdone" args="" --><p>
1154 <table class="mdTable" cellpadding="2" cellspacing="0">
1155   <tr>
1156     <td class="mdRow">
1157       <table cellpadding="0" cellspacing="0" border="0">
1158         <tr>
1159           <td class="md" nowrap valign="top">bool <a class="el" href="classuserrec.html#dns_5Fdone">userrec::dns_done</a>          </td>
1160         </tr>
1161       </table>
1162     </td>
1163   </tr>
1164 </table>
1165 <table cellspacing="5" cellpadding="0" border="0">
1166   <tr>
1167     <td>
1168       &nbsp;
1169     </td>
1170     <td>
1171
1172 <p>
1173 True when <a class="el" href="classDNS.html">DNS</a> lookups are completed. 
1174 <p>
1175
1176 <p>
1177 Definition at line <a class="el" href="users_8h-source.html#l00178">178</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1178 <p>
1179 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1180   </tr>
1181 </table>
1182 <a class="anchor" name="flood"></a><!-- doxytag: member="userrec::flood" ref="flood" args="" --><p>
1183 <table class="mdTable" cellpadding="2" cellspacing="0">
1184   <tr>
1185     <td class="mdRow">
1186       <table cellpadding="0" cellspacing="0" border="0">
1187         <tr>
1188           <td class="md" nowrap valign="top">int <a class="el" href="classuserrec.html#flood">userrec::flood</a>          </td>
1189         </tr>
1190       </table>
1191     </td>
1192   </tr>
1193 </table>
1194 <table cellspacing="5" cellpadding="0" border="0">
1195   <tr>
1196     <td>
1197       &nbsp;
1198     </td>
1199     <td>
1200
1201 <p>
1202 Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. 
1203 <p>
1204
1205 <p>
1206 Definition at line <a class="el" href="users_8h-source.html#l00161">161</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1207 <p>
1208 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1209   </tr>
1210 </table>
1211 <a class="anchor" name="fullname_5BMAXGECOS_2B_31_5D"></a><!-- doxytag: member="userrec::fullname" ref="fullname_5BMAXGECOS_2B_31_5D" args="[MAXGECOS+1]" --><p>
1212 <table class="mdTable" cellpadding="2" cellspacing="0">
1213   <tr>
1214     <td class="mdRow">
1215       <table cellpadding="0" cellspacing="0" border="0">
1216         <tr>
1217           <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">userrec::fullname</a>[MAXGECOS+1]          </td>
1218         </tr>
1219       </table>
1220     </td>
1221   </tr>
1222 </table>
1223 <table cellspacing="5" cellpadding="0" border="0">
1224   <tr>
1225     <td>
1226       &nbsp;
1227     </td>
1228     <td>
1229
1230 <p>
1231 The users full name. 
1232 <p>
1233
1234 <p>
1235 Definition at line <a class="el" href="users_8h-source.html#l00135">135</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1236 <p>
1237 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1238   </tr>
1239 </table>
1240 <a class="anchor" name="ident_5BIDENTMAX_2B_32_5D"></a><!-- doxytag: member="userrec::ident" ref="ident_5BIDENTMAX_2B_32_5D" args="[IDENTMAX+2]" --><p>
1241 <table class="mdTable" cellpadding="2" cellspacing="0">
1242   <tr>
1243     <td class="mdRow">
1244       <table cellpadding="0" cellspacing="0" border="0">
1245         <tr>
1246           <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">userrec::ident</a>[IDENTMAX+2]          </td>
1247         </tr>
1248       </table>
1249     </td>
1250   </tr>
1251 </table>
1252 <table cellspacing="5" cellpadding="0" border="0">
1253   <tr>
1254     <td>
1255       &nbsp;
1256     </td>
1257     <td>
1258
1259 <p>
1260 The users ident reply. 
1261 <p>
1262 Two characters are added to the user-defined limit to compensate for the tilde etc.
1263 <p>
1264 Definition at line <a class="el" href="users_8h-source.html#l00126">126</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1265 <p>
1266 Referenced by <a class="el" href="users_8cpp-source.html#l00069">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00087">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00670">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00639">Server::UserToPseudo()</a>.    </td>
1267   </tr>
1268 </table>
1269 <a class="anchor" name="invites"></a><!-- doxytag: member="userrec::invites" ref="invites" args="" --><p>
1270 <table class="mdTable" cellpadding="2" cellspacing="0">
1271   <tr>
1272     <td class="mdRow">
1273       <table cellpadding="0" cellspacing="0" border="0">
1274         <tr>
1275           <td class="md" nowrap valign="top"><a class="el" href="users_8h.html#InvitedList">InvitedList</a> <a class="el" href="classuserrec.html#invites">userrec::invites</a><code> [private]</code>          </td>
1276         </tr>
1277       </table>
1278     </td>
1279   </tr>
1280 </table>
1281 <table cellspacing="5" cellpadding="0" border="0">
1282   <tr>
1283     <td>
1284       &nbsp;
1285     </td>
1286     <td>
1287
1288 <p>
1289 A list of channels the user has a pending invite to. 
1290 <p>
1291
1292 <p>
1293 Definition at line <a class="el" href="users_8h-source.html#l00114">114</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1294 <p>
1295 Referenced by <a class="el" href="users_8cpp-source.html#l00108">GetInviteList()</a>, <a class="el" href="users_8cpp-source.html#l00113">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00094">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00120">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1296   </tr>
1297 </table>
1298 <a class="anchor" name="lines_5Fin"></a><!-- doxytag: member="userrec::lines_in" ref="lines_5Fin" args="" --><p>
1299 <table class="mdTable" cellpadding="2" cellspacing="0">
1300   <tr>
1301     <td class="mdRow">
1302       <table cellpadding="0" cellspacing="0" border="0">
1303         <tr>
1304           <td class="md" nowrap valign="top">int <a class="el" href="classuserrec.html#lines_5Fin">userrec::lines_in</a>          </td>
1305         </tr>
1306       </table>
1307     </td>
1308   </tr>
1309 </table>
1310 <table cellspacing="5" cellpadding="0" border="0">
1311   <tr>
1312     <td>
1313       &nbsp;
1314     </td>
1315     <td>
1316
1317 <p>
1318 Flood counters. 
1319 <p>
1320
1321 <p>
1322 Definition at line <a class="el" href="users_8h-source.html#l00203">203</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1323 <p>
1324 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1325   </tr>
1326 </table>
1327 <a class="anchor" name="modes_5B_35_34_5D"></a><!-- doxytag: member="userrec::modes" ref="modes_5B_35_34_5D" args="[54]" --><p>
1328 <table class="mdTable" cellpadding="2" cellspacing="0">
1329   <tr>
1330     <td class="mdRow">
1331       <table cellpadding="0" cellspacing="0" border="0">
1332         <tr>
1333           <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#modes_5B_35_34_5D">userrec::modes</a>[54]          </td>
1334         </tr>
1335       </table>
1336     </td>
1337   </tr>
1338 </table>
1339 <table cellspacing="5" cellpadding="0" border="0">
1340   <tr>
1341     <td>
1342       &nbsp;
1343     </td>
1344     <td>
1345
1346 <p>
1347 The user's mode string. 
1348 <p>
1349 This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit. it is limited to length 54, as there can only be a maximum of 52 user modes (26 upper, 26 lower case) a null terminating char, and an optional + character.
1350 <p>
1351 Definition at line <a class="el" href="users_8h-source.html#l00144">144</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1352 <p>
1353 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1354   </tr>
1355 </table>
1356 <a class="anchor" name="nick_5BNICKMAX_5D"></a><!-- doxytag: member="userrec::nick" ref="nick_5BNICKMAX_5D" args="[NICKMAX]" --><p>
1357 <table class="mdTable" cellpadding="2" cellspacing="0">
1358   <tr>
1359     <td class="mdRow">
1360       <table cellpadding="0" cellspacing="0" border="0">
1361         <tr>
1362           <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec::nick</a>[NICKMAX]          </td>
1363         </tr>
1364       </table>
1365     </td>
1366   </tr>
1367 </table>
1368 <table cellspacing="5" cellpadding="0" border="0">
1369   <tr>
1370     <td>
1371       &nbsp;
1372     </td>
1373     <td>
1374
1375 <p>
1376 The users nickname. 
1377 <p>
1378 An invalid nickname indicates an unregistered connection prior to the NICK command.
1379 <p>
1380 Definition at line <a class="el" href="users_8h-source.html#l00121">121</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1381 <p>
1382 Referenced by <a class="el" href="modules_8cpp-source.html#l00894">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00069">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00087">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00670">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1383   </tr>
1384 </table>
1385 <a class="anchor" name="oper_5BNICKMAX_5D"></a><!-- doxytag: member="userrec::oper" ref="oper_5BNICKMAX_5D" args="[NICKMAX]" --><p>
1386 <table class="mdTable" cellpadding="2" cellspacing="0">
1387   <tr>
1388     <td class="mdRow">
1389       <table cellpadding="0" cellspacing="0" border="0">
1390         <tr>
1391           <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#oper_5BNICKMAX_5D">userrec::oper</a>[NICKMAX]          </td>
1392         </tr>
1393       </table>
1394     </td>
1395   </tr>
1396 </table>
1397 <table cellspacing="5" cellpadding="0" border="0">
1398   <tr>
1399     <td>
1400       &nbsp;
1401     </td>
1402     <td>
1403
1404 <p>
1405 The oper type they logged in as, if they are an oper. 
1406 <p>
1407 This is used to check permissions in operclasses, so that we can say 'yay' or 'nay' to any commands they issue. The value of this is the value of a valid 'type name=' tag.
1408 <p>
1409 Definition at line <a class="el" href="users_8h-source.html#l00174">174</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1410 <p>
1411 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1412   </tr>
1413 </table>
1414 <a class="anchor" name="password_5BMAXBUF_5D"></a><!-- doxytag: member="userrec::password" ref="password_5BMAXBUF_5D" args="[MAXBUF]" --><p>
1415 <table class="mdTable" cellpadding="2" cellspacing="0">
1416   <tr>
1417     <td class="mdRow">
1418       <table cellpadding="0" cellspacing="0" border="0">
1419         <tr>
1420           <td class="md" nowrap valign="top">char <a class="el" href="classuserrec.html#password_5BMAXBUF_5D">userrec::password</a>[MAXBUF]          </td>
1421         </tr>
1422       </table>
1423     </td>
1424   </tr>
1425 </table>
1426 <table cellspacing="5" cellpadding="0" border="0">
1427   <tr>
1428     <td>
1429       &nbsp;
1430     </td>
1431     <td>
1432
1433 <p>
1434 Password specified by the user when they registered. 
1435 <p>
1436 This is stored even if the &lt;connect&gt; block doesnt need a password, so that modules may check it.
1437 <p>
1438 Definition at line <a class="el" href="users_8h-source.html#l00188">188</a> of file <a class="el" href="users_8h-source.html">users.h</a>.    </td>
1439   </tr>
1440 </table>
1441 <a class="anchor" name="pingmax"></a><!-- doxytag: member="userrec::pingmax" ref="pingmax" args="" --><p>
1442 <table class="mdTable" cellpadding="2" cellspacing="0">
1443   <tr>
1444     <td class="mdRow">
1445       <table cellpadding="0" cellspacing="0" border="0">
1446         <tr>
1447           <td class="md" nowrap valign="top">unsigned int <a class="el" href="classuserrec.html#pingmax">userrec::pingmax</a>          </td>
1448         </tr>
1449       </table>
1450     </td>
1451   </tr>
1452 </table>
1453 <table cellspacing="5" cellpadding="0" border="0">
1454   <tr>
1455     <td>
1456       &nbsp;
1457     </td>
1458     <td>
1459
1460 <p>
1461 Number of seconds between PINGs for this user (set from &lt;connect:allow&gt; tag. 
1462 <p>
1463
1464 <p>
1465 Definition at line <a class="el" href="users_8h-source.html#l00182">182</a> of file <a class="el" href="users_8h-source.html">users.h</a>.    </td>
1466   </tr>
1467 </table>
1468 <a class="anchor" name="recvq"></a><!-- doxytag: member="userrec::recvq" ref="recvq" args="" --><p>
1469 <table class="mdTable" cellpadding="2" cellspacing="0">
1470   <tr>
1471     <td class="mdRow">
1472       <table cellpadding="0" cellspacing="0" border="0">
1473         <tr>
1474           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classuserrec.html#recvq">userrec::recvq</a>          </td>
1475         </tr>
1476       </table>
1477     </td>
1478   </tr>
1479 </table>
1480 <table cellspacing="5" cellpadding="0" border="0">
1481   <tr>
1482     <td>
1483       &nbsp;
1484     </td>
1485     <td>
1486
1487 <p>
1488 User's receive queue. 
1489 <p>
1490 Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
1491 <p>
1492 Definition at line <a class="el" href="users_8h-source.html#l00194">194</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1493 <p>
1494 Referenced by <a class="el" href="users_8cpp-source.html#l00194">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00220">BufferIsReady()</a>, <a class="el" href="users_8cpp-source.html#l00228">ClearBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00233">GetBuffer()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1495   </tr>
1496 </table>
1497 <a class="anchor" name="recvqmax"></a><!-- doxytag: member="userrec::recvqmax" ref="recvqmax" args="" --><p>
1498 <table class="mdTable" cellpadding="2" cellspacing="0">
1499   <tr>
1500     <td class="mdRow">
1501       <table cellpadding="0" cellspacing="0" border="0">
1502         <tr>
1503           <td class="md" nowrap valign="top">long <a class="el" href="classuserrec.html#recvqmax">userrec::recvqmax</a>          </td>
1504         </tr>
1505       </table>
1506     </td>
1507   </tr>
1508 </table>
1509 <table cellspacing="5" cellpadding="0" border="0">
1510   <tr>
1511     <td>
1512       &nbsp;
1513     </td>
1514     <td>
1515
1516 <p>
1517 Maximum size this user's recvq can become. 
1518 <p>
1519
1520 <p>
1521 Definition at line <a class="el" href="users_8h-source.html#l00217">217</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1522 <p>
1523 Referenced by <a class="el" href="users_8cpp-source.html#l00194">AddBuffer()</a>.    </td>
1524   </tr>
1525 </table>
1526 <a class="anchor" name="reset_5Fdue"></a><!-- doxytag: member="userrec::reset_due" ref="reset_5Fdue" args="" --><p>
1527 <table class="mdTable" cellpadding="2" cellspacing="0">
1528   <tr>
1529     <td class="mdRow">
1530       <table cellpadding="0" cellspacing="0" border="0">
1531         <tr>
1532           <td class="md" nowrap valign="top">time_t <a class="el" href="classuserrec.html#reset_5Fdue">userrec::reset_due</a>          </td>
1533         </tr>
1534       </table>
1535     </td>
1536   </tr>
1537 </table>
1538 <table cellspacing="5" cellpadding="0" border="0">
1539   <tr>
1540     <td>
1541       &nbsp;
1542     </td>
1543     <td>
1544
1545 <p>
1546
1547 <p>
1548 Definition at line <a class="el" href="users_8h-source.html#l00204">204</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1549 <p>
1550 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1551   </tr>
1552 </table>
1553 <a class="anchor" name="sendq"></a><!-- doxytag: member="userrec::sendq" ref="sendq" args="" --><p>
1554 <table class="mdTable" cellpadding="2" cellspacing="0">
1555   <tr>
1556     <td class="mdRow">
1557       <table cellpadding="0" cellspacing="0" border="0">
1558         <tr>
1559           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classuserrec.html#sendq">userrec::sendq</a>          </td>
1560         </tr>
1561       </table>
1562     </td>
1563   </tr>
1564 </table>
1565 <table cellspacing="5" cellpadding="0" border="0">
1566   <tr>
1567     <td>
1568       &nbsp;
1569     </td>
1570     <td>
1571
1572 <p>
1573 User's send queue. 
1574 <p>
1575 Lines waiting to be sent are stored here until their buffer is flushed.
1576 <p>
1577 Definition at line <a class="el" href="users_8h-source.html#l00199">199</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1578 <p>
1579 Referenced by <a class="el" href="users_8cpp-source.html#l00250">AddWriteBuf()</a>, <a class="el" href="users_8cpp-source.html#l00266">FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1580   </tr>
1581 </table>
1582 <a class="anchor" name="sendqmax"></a><!-- doxytag: member="userrec::sendqmax" ref="sendqmax" args="" --><p>
1583 <table class="mdTable" cellpadding="2" cellspacing="0">
1584   <tr>
1585     <td class="mdRow">
1586       <table cellpadding="0" cellspacing="0" border="0">
1587         <tr>
1588           <td class="md" nowrap valign="top">long <a class="el" href="classuserrec.html#sendqmax">userrec::sendqmax</a>          </td>
1589         </tr>
1590       </table>
1591     </td>
1592   </tr>
1593 </table>
1594 <table cellspacing="5" cellpadding="0" border="0">
1595   <tr>
1596     <td>
1597       &nbsp;
1598     </td>
1599     <td>
1600
1601 <p>
1602 Maximum size this user's sendq can become. 
1603 <p>
1604
1605 <p>
1606 Definition at line <a class="el" href="users_8h-source.html#l00213">213</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1607 <p>
1608 Referenced by <a class="el" href="users_8cpp-source.html#l00250">AddWriteBuf()</a>.    </td>
1609   </tr>
1610 </table>
1611 <a class="anchor" name="server"></a><!-- doxytag: member="userrec::server" ref="server" args="" --><p>
1612 <table class="mdTable" cellpadding="2" cellspacing="0">
1613   <tr>
1614     <td class="mdRow">
1615       <table cellpadding="0" cellspacing="0" border="0">
1616         <tr>
1617           <td class="md" nowrap valign="top">char* <a class="el" href="classuserrec.html#server">userrec::server</a>          </td>
1618         </tr>
1619       </table>
1620     </td>
1621   </tr>
1622 </table>
1623 <table cellspacing="5" cellpadding="0" border="0">
1624   <tr>
1625     <td>
1626       &nbsp;
1627     </td>
1628     <td>
1629
1630 <p>
1631 The server the user is connected to. 
1632 <p>
1633
1634 <p>
1635 Definition at line <a class="el" href="users_8h-source.html#l00150">150</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1636 <p>
1637 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1638   </tr>
1639 </table>
1640 <a class="anchor" name="threshold"></a><!-- doxytag: member="userrec::threshold" ref="threshold" args="" --><p>
1641 <table class="mdTable" cellpadding="2" cellspacing="0">
1642   <tr>
1643     <td class="mdRow">
1644       <table cellpadding="0" cellspacing="0" border="0">
1645         <tr>
1646           <td class="md" nowrap valign="top">long <a class="el" href="classuserrec.html#threshold">userrec::threshold</a>          </td>
1647         </tr>
1648       </table>
1649     </td>
1650   </tr>
1651 </table>
1652 <table cellspacing="5" cellpadding="0" border="0">
1653   <tr>
1654     <td>
1655       &nbsp;
1656     </td>
1657     <td>
1658
1659 <p>
1660
1661 <p>
1662 Definition at line <a class="el" href="users_8h-source.html#l00205">205</a> of file <a class="el" href="users_8h-source.html">users.h</a>.    </td>
1663   </tr>
1664 </table>
1665 <a class="anchor" name="timeout"></a><!-- doxytag: member="userrec::timeout" ref="timeout" args="" --><p>
1666 <table class="mdTable" cellpadding="2" cellspacing="0">
1667   <tr>
1668     <td class="mdRow">
1669       <table cellpadding="0" cellspacing="0" border="0">
1670         <tr>
1671           <td class="md" nowrap valign="top">unsigned int <a class="el" href="classuserrec.html#timeout">userrec::timeout</a>          </td>
1672         </tr>
1673       </table>
1674     </td>
1675   </tr>
1676 </table>
1677 <table cellspacing="5" cellpadding="0" border="0">
1678   <tr>
1679     <td>
1680       &nbsp;
1681     </td>
1682     <td>
1683
1684 <p>
1685 Number of seconds this user is given to send USER/NICK If they do not send their details in this time limit they will be disconnected. 
1686 <p>
1687
1688 <p>
1689 Definition at line <a class="el" href="users_8h-source.html#l00167">167</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1690 <p>
1691 Referenced by <a class="el" href="users_8cpp-source.html#l00033">userrec()</a>.    </td>
1692   </tr>
1693 </table>
1694 <a class="anchor" name="WriteError"></a><!-- doxytag: member="userrec::WriteError" ref="WriteError" args="" --><p>
1695 <table class="mdTable" cellpadding="2" cellspacing="0">
1696   <tr>
1697     <td class="mdRow">
1698       <table cellpadding="0" cellspacing="0" border="0">
1699         <tr>
1700           <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classuserrec.html#WriteError">userrec::WriteError</a>          </td>
1701         </tr>
1702       </table>
1703     </td>
1704   </tr>
1705 </table>
1706 <table cellspacing="5" cellpadding="0" border="0">
1707   <tr>
1708     <td>
1709       &nbsp;
1710     </td>
1711     <td>
1712
1713 <p>
1714
1715 <p>
1716 Definition at line <a class="el" href="users_8h-source.html#l00209">209</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1717 <p>
1718 Referenced by <a class="el" href="users_8cpp-source.html#l00296">GetWriteError()</a>, and <a class="el" href="users_8cpp-source.html#l00288">SetWriteError()</a>.    </td>
1719   </tr>
1720 </table>
1721 <hr>The documentation for this class was generated from the following files:<ul>
1722 <li><a class="el" href="users_8h-source.html">users.h</a><li><a class="el" href="users_8cpp-source.html">users.cpp</a></ul>
1723 <hr size="1"><address style="align: right;"><small>Generated on Sun Nov 27 01:43:26 2005 for InspIRCd by&nbsp;
1724 <a href="http://www.doxygen.org/index.html">
1725 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
1726 </body>
1727 </html>