+ int bytes_in;
+
+ /** Stats counter for bytes outbound
+ */
+ int bytes_out;
+
+ /** Stats counter for commands inbound
+ */
+ int cmds_in;
+
+ /** Stats counter for commands outbound
+ */
+ int cmds_out;
+
+ /** Password specified by the user when they registered (if any).
+ * This is stored even if the <connect> block doesnt need a password, so that
+ * modules may check it.
+ */
+ std::string password;
+
+ /** Contains a pointer to the connect class a user is on from
+ */
+ reference<ConnectClass> MyClass;
+
+ ConnectClass* GetClass();
+
+ /** Call this method to find the matching <connect> for a user, and to check them against it.
+ */
+ void CheckClass();
+
+ /** Server address and port that this user is connected to.
+ */
+ irc::sockets::sockaddrs server_sa;
+
+ /**
+ * @return The port number of this user.
+ */
+ int GetServerPort();
+
+ /** Used by PING checking code
+ */
+ time_t nping;
+
+ /** This value contains how far into the penalty threshold the user is.
+ * This is used either to enable fake lag or for excess flood quits
+ */
+ unsigned int CommandFloodPenalty;
+
+ static already_sent_t already_sent_id;
+ already_sent_t already_sent;
+
+ /** Stored reverse lookup from res_forward. Should not be used after resolution.
+ */
+ std::string stored_host;
+
+ /** Starts a DNS lookup of the user's IP.
+ * This will cause two UserResolver classes to be instantiated.
+ * When complete, these objects set User::dns_done to true.
+ */
+ void StartDNSLookup();
+
+ /** Use this method to fully connect a user.
+ * This will send the message of the day, check G/K/E lines, etc.
+ */
+ void FullConnect();