summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/helperfuncs.h35
-rw-r--r--include/inspircd.h29
-rw-r--r--include/modules.h4
-rw-r--r--include/socketengine.h5
-rw-r--r--include/socketengine_epoll.h6
-rw-r--r--include/socketengine_kqueue.h6
-rw-r--r--include/socketengine_select.h6
7 files changed, 43 insertions, 48 deletions
diff --git a/include/helperfuncs.h b/include/helperfuncs.h
index bae7f8326..ce169c3b0 100644
--- a/include/helperfuncs.h
+++ b/include/helperfuncs.h
@@ -14,38 +14,3 @@
* ---------------------------------------------------
*/
-#ifndef _HELPER_H_
-#define _HELPER_H_
-
-#include "dynamic.h"
-#include "base.h"
-#include "ctables.h"
-#include "users.h"
-#include "channels.h"
-#include "typedefs.h"
-#include <string>
-#include <deque>
-#include <sstream>
-
-/** Debug levels for use with InspIRCd::Log()
- */
-enum DebugLevel
-{
- DEBUG = 10,
- VERBOSE = 20,
- DEFAULT = 30,
- SPARSE = 40,
- NONE = 50,
-};
-
-/* I'm not entirely happy with this, the ## before 'args' is a g++ extension.
- * The problem is that if you #define log(l, x, args...) and then call it
- * with only two parameters, you get do_log(l, x, ), which is a syntax error...
- * The ## tells g++ to remove the trailing comma...
- * If this is ever an issue, we can just have an #ifndef GCC then #define log(a...) do_log(a)
- */
-#define STRINGIFY2(x) #x
-#define STRINGIFY(x) STRINGIFY2(x)
-#define log(l, x, args...) InspIRCd::Log(l, __FILE__ ":" STRINGIFY(__LINE__) ": " x, ##args)
-
-#endif
diff --git a/include/inspircd.h b/include/inspircd.h
index 699d910dc..3800c09ab 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -36,6 +36,28 @@
/* Crucial defines */
#define ETIREDGERBILS EAGAIN
+/** Debug levels for use with InspIRCd::Log()
+ */
+enum DebugLevel
+{
+ DEBUG = 10,
+ VERBOSE = 20,
+ DEFAULT = 30,
+ SPARSE = 40,
+ NONE = 50,
+};
+
+/* I'm not entirely happy with this, the ## before 'args' is a g++ extension.
+ * The problem is that if you #define log(l, x, args...) and then call it
+ * with only two parameters, you get do_log(l, x, ), which is a syntax error...
+ * The ## tells g++ to remove the trailing comma...
+ * If this is ever an issue, we can just have an #ifndef GCC then #define log(a...) do_log(a)
+ */
+#define STRINGIFY2(x) #x
+#define STRINGIFY(x) STRINGIFY2(x)
+#define log(l, x, args...) ServerInstance->Log(l, __FILE__ ":" STRINGIFY(__LINE__) ": " x, ##args)
+#define ilog(i, l, x, args...) i->Log(l, __FILE__ ":" STRINGIFY(__LINE__) ": " x, ##args)
+
/* This define is used in place of strcmp when we
* want to check if a char* string contains only one
* letter. Pretty fast, its just two compares and an
@@ -43,7 +65,7 @@
*/
#define IS_SINGLE(x,y) ( (*x == y) && (*(x+1) == 0) )
-#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!"); }
+#define DELETE(x) {if (x) { delete x; x = NULL; }}
template<typename T> inline std::string ConvToStr(const T &in)
{
@@ -177,7 +199,6 @@ class InspIRCd : public classbase
bool IsChannel(const char *chname);
- static void Error(int status);
static void Rehash(int status);
static void Exit(int status);
@@ -319,8 +340,8 @@ class InspIRCd : public classbase
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);
+ void Log(int level, const char* text, ...);
+ void Log(int level, const std::string &text);
int Run();
};
diff --git a/include/modules.h b/include/modules.h
index 9ca7eab5e..6142af17a 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -111,7 +111,7 @@ typedef std::map<std::string,Module*> featurelist;
} \
catch (ModuleException& modexcept) \
{ \
- log(DEBUG,"Module exception caught: %s",modexcept.GetReason()); \
+ ilog(z,DEBUG,"Module exception caught: %s",modexcept.GetReason()); \
} \
} \
}
@@ -155,7 +155,7 @@ typedef std::map<std::string,Module*> featurelist;
} \
catch (ModuleException& modexcept) \
{ \
- log(DEBUG,"Module exception cought: %s",modexcept.GetReason()); \
+ ilog(z,DEBUG,"Module exception cought: %s",modexcept.GetReason()); \
} \
} \
} \
diff --git a/include/socketengine.h b/include/socketengine.h
index a788618a2..5ccfa801e 100644
--- a/include/socketengine.h
+++ b/include/socketengine.h
@@ -46,6 +46,8 @@ const char X_ESTAB_DNS = 4;
*/
const char X_READBIT = 0x80;
+class InspIRCd;
+
/**
* The actual socketengine class presents the
* same interface on all operating systems, but
@@ -67,6 +69,7 @@ const char X_READBIT = 0x80;
class SocketEngine : public Extensible
{
protected:
+ InspIRCd* ServerInstance;
int EngineHandle; /* Handle to the socket engine if needed */
int CurrentSetSize; /* Current number of descriptors in the engine */
char ref[MAX_DESCRIPTORS]; /* Reference table */
@@ -80,7 +83,7 @@ public:
* epoll on a 2.4 linux kernel) then this
* function may bail back to the shell.
*/
- SocketEngine();
+ SocketEngine(InspIRCd* Instance);
/** Destructor
* The destructor transparently tidies up
diff --git a/include/socketengine_epoll.h b/include/socketengine_epoll.h
index ddbeb6f40..65d1150f7 100644
--- a/include/socketengine_epoll.h
+++ b/include/socketengine_epoll.h
@@ -27,12 +27,14 @@
#include <sys/epoll.h>
#define EP_DELAY 5
+class InspIRCd;
+
class EPollEngine : public SocketEngine
{
private:
struct epoll_event events[MAX_DESCRIPTORS]; /* Up to 64k sockets for epoll */
public:
- EPollEngine();
+ EPollEngine(InspIRCd* Instance);
virtual ~EPollEngine();
virtual bool AddFd(int fd, bool readable, char type);
virtual int GetMaxFds();
@@ -45,7 +47,7 @@ public:
class SocketEngineFactory
{
public:
- SocketEngine* Create() { return new EPollEngine(); }
+ SocketEngine* Create(InspIRCd* Instance) { return new EPollEngine(Instance); }
};
#endif
diff --git a/include/socketengine_kqueue.h b/include/socketengine_kqueue.h
index 822b4740a..d7451b642 100644
--- a/include/socketengine_kqueue.h
+++ b/include/socketengine_kqueue.h
@@ -28,13 +28,15 @@
#include <sys/time.h>
#include "socketengine.h"
+class InspIRCd;
+
class KQueueEngine : public SocketEngine
{
private:
struct kevent ke_list[MAX_DESCRIPTORS]; /* Up to 64k sockets for kqueue */
struct timespec ts; /* kqueue delay value */
public:
- KQueueEngine();
+ KQueueEngine(InspIRCd* Instance);
virtual ~KQueueEngine();
virtual bool AddFd(int fd, bool readable, char type);
virtual int GetMaxFds();
@@ -47,7 +49,7 @@ public:
class SocketEngineFactory
{
public:
- SocketEngine* Create() { return new KQueueEngine(); }
+ SocketEngine* Create(InspIRCd* Instance) { return new KQueueEngine(InspIRCd* Instance); }
};
#endif
diff --git a/include/socketengine_select.h b/include/socketengine_select.h
index 442f8c754..b3f7479ee 100644
--- a/include/socketengine_select.h
+++ b/include/socketengine_select.h
@@ -26,13 +26,15 @@
#include "inspircd.h"
#include "socketengine.h"
+class InspIRCd;
+
class SelectEngine : public SocketEngine
{
private:
std::map<int,int> fds; /* List of file descriptors being monitored */
fd_set wfdset, rfdset; /* Readable and writeable sets for select() */
public:
- SelectEngine();
+ SelectEngine(InspIRCd* Instance);
virtual ~SelectEngine();
virtual bool AddFd(int fd, bool readable, char type);
virtual int GetMaxFds();
@@ -45,7 +47,7 @@ public:
class SocketEngineFactory
{
public:
- SocketEngine* Create() { return new SelectEngine(); }
+ SocketEngine* Create(InspIRCd* Instance) { return new SelectEngine(InspIRCd* Instance); }
};
#endif