*/
#define IS_SINGLE(x,y) ( (*x == y) && (*(x+1) == 0) )
-#define DELETE(x) { do_log(DEBUG,"%s:%d: delete()",__FILE__,__LINE__); if (x) { delete x; x = NULL; } else log(DEBUG,"Attempt to delete NULL pointer!"); }
+#define DELETE(x) { InspIRCd::Log(DEBUG,"%s:%d: delete()",__FILE__,__LINE__); if (x) { delete x; x = NULL; } else InspIRCd::Log(DEBUG,"Attempt to delete NULL pointer!"); }
template<typename T> inline std::string ConvToStr(const T &in)
{
class serverstats : public classbase
{
public:
- int statsAccept;
- int statsRefused;
- int statsUnknown;
- int statsCollisions;
- int statsDns;
- int statsDnsGood;
- int statsDnsBad;
- int statsConnects;
- int statsSent;
- int statsRecv;
- int BoundPortCount;
+ unsigned long statsAccept;
+ unsigned long statsRefused;
+ unsigned long statsUnknown;
+ unsigned long statsCollisions;
+ unsigned long statsDns;
+ unsigned long statsDnsGood;
+ unsigned long statsDnsBad;
+ unsigned long statsConnects;
+ double statsSent;
+ double statsRecv;
+ unsigned long BoundPortCount;
serverstats()
{
statsAccept = statsRefused = statsUnknown = 0;
statsCollisions = statsDns = statsDnsGood = 0;
- statsDnsBad = statsConnects = statsSent = statsRecv = 0;
+ statsDnsBad = statsConnects = 0;
+ statsSent = statsRecv = 0.0;
BoundPortCount = 0;
}
};
void BuildISupport();
void MoveTo(std::string modulename,int slot);
void Start();
- void SetSignals();
+ void SetSignals(bool SEGVHandler);
bool DaemonSeed();
void MakeLowerMap();
void MoveToLast(std::string modulename);
void MoveAfter(std::string modulename, std::string after);
void MoveBefore(std::string modulename, std::string before);
+ void ProcessUser(userrec* cu);
+ void DoSocketTimeouts(time_t TIME);
+ void DoBackgroundUserStuff(time_t TIME);
+
public:
time_t startup_time;
ModeParser* ModeGrok;
CommandParser* Parser;
SocketEngine* SE;
serverstats* stats;
+ ServerConfig* Config;
+ std::vector<InspSocket*> module_sockets;
+ InspSocket* socket_ref[MAX_DESCRIPTORS]; /* XXX: This should probably be made private, with inline accessors */
+ userrec* fd_ref_table[MAX_DESCRIPTORS]; /* XXX: Ditto */
+ DNS* Res;
std::string GetRevision();
std::string GetVersionString();
bool UnloadModule(const char* filename);
InspIRCd(int argc, char** argv);
void DoOneIteration(bool process_module_sockets);
+ static void Log(int level, const char* text, ...);
+ static void Log(int level, const std::string &text);
int Run();
-
};
/* Miscellaneous stuff here, moved from inspircd_io.h */