+
+ /** Called whenever a line of WHOIS output is sent to a user.
+ * You may change the numeric and the text of the output by changing
+ * the values numeric and text, but you cannot change the user the
+ * numeric is sent to. You may however change the user's userrec values.
+ * @param user The user the numeric is being sent to
+ * @param dest The user being WHOISed
+ * @param numeric The numeric of the line being sent
+ * @param text The text of the numeric, including any parameters
+ * @return nonzero to drop the line completely so that the user does not
+ * receive it, or zero to allow the line to be sent.
+ */
+ virtual int OnWhoisLine(userrec* user, userrec* dest, int &numeric, std::string &text);
+
+ /** Called at intervals for modules to garbage-collect any hashes etc.
+ * Certain data types such as hash_map 'leak' buckets, which must be
+ * tidied up and freed by copying into a new item every so often. This
+ * method is called when it is time to do that.
+ */
+ virtual void OnGarbageCollect();
+
+ /** Called whenever a user's write buffer has been completely sent.
+ * This is called when the user's write buffer is completely empty, and
+ * there are no more pending bytes to be written and no pending write events
+ * in the socket engine's queue. This may be used to refill the buffer with
+ * data which is being spooled in a controlled manner, e.g. LIST lines.
+ * @param user The user who's buffer is now empty.
+ */
+ virtual void OnBufferFlushed(userrec* user);