*/
#define ERROR -1
-/** Crucial defines
+/** Support for librodent -
+ * see http://www.chatspike.net/index.php?z=64
*/
-#define ETIREDGERBILS EAGAIN
+#define ETIREDHAMSTERS EAGAIN
/** Debug levels for use with InspIRCd::Log()
*/
x = NULL;
}
-/** Template function to convert any input type to std::string
+/** Template functions to convert any input type to std::string
*/
-template<typename T> inline std::string ConvToStr(const T &in)
+template<typename T> inline std::string ConvNumeric(const T &in)
+{
+ char res[MAXBUF];
+ char* out = res;
+ T quotient = in;
+ while (quotient) {
+ *out = "0123456789"[ std::abs( (long)quotient % 10 ) ];
+ ++out;
+ quotient /= 10;
+ }
+ if ( in < 0)
+ *out++ = '-';
+ *out = 0;
+ std::reverse(res,out);
+ return res;
+}
+
+inline std::string ConvToStr(const int in)
+{
+ return ConvNumeric(in);
+}
+
+inline std::string ConvToStr(const long in)
+{
+ return ConvNumeric(in);
+}
+
+inline std::string ConvToStr(const unsigned long in)
+{
+ return ConvNumeric(in);
+}
+
+inline std::string ConvToStr(const char* in)
+{
+ return in;
+}
+
+inline std::string ConvToStr(const bool in)
+{
+ return (in ? "1" : "0");
+}
+
+template <class T> inline std::string ConvToStr(const T &in)
{
std::stringstream tmp;
if (!(tmp << in)) return std::string();
int time_delta;
public:
+
+ /** Number of unregistered users online right now.
+ * (Unregistered means before USER/NICK/dns)
+ */
+ int unregistered_count;
+
/** List of server names we've seen.
*/
servernamelist servernames;
clonemap global_clones;
- /** Whowas container, contains a map of vectors of users tracked by WHOWAS
- */
- irc::whowas::whowas_users whowas;
-
- /** Whowas container, contains a map of time_t to users tracked by WHOWAS
- */
- irc::whowas::whowas_users_fifo whowas_fifo;
-
/** DNS class, provides resolver facilities to the core and modules
*/
DNS* Res;
void AddGlobalClone(userrec* user);
+ /** Number of users with a certain mode set on them
+ */
+ int ModeCount(const char mode);
+
/** Get the time offset in seconds
* @return The current time delta (in seconds)
*/
/** Add a dns Resolver class to this server's active set
* @param r The resolver to add
- * @return True if the resolver was added
- */
- bool AddResolver(Resolver* r);
+ * @param cached If this value is true, then the cache will
+ * be searched for the DNS result, immediately. If the value is
+ * false, then a request will be sent to the nameserver, and the
+ * result will not be immediately available. You should usually
+ * use the boolean value which you passed to the Resolver
+ * constructor, which Resolver will set appropriately depending
+ * on if cached results are available and haven't expired. It is
+ * however safe to force this value to false, forcing a remote DNS
+ * lookup, but not an update of the cache.
+ * @return True if the operation completed successfully. Note that
+ * if this method returns true, you should not attempt to access
+ * the resolver class you pass it after this call, as depending upon
+ * the request given, the object may be deleted!
+ */
+ bool AddResolver(Resolver* r, bool cached);
/** Add a command to this server's command parser
* @param f A command_t command handler object to add
*/
void RehashUsersAndChans();
+ /** Resets the cached max bans value on all channels.
+ * Called by rehash.
+ */
+ void ResetMaxBans();
+
/** Begin execution of the server.
* NOTE: this function NEVER returns. Internally,
* after performing some initialisation routines,