summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-09-05 18:44:43 -0400
committerAdam <Adam@anope.org>2011-09-10 02:06:31 -0400
commit63cb8ca24c0d4003343340bb8413b7f84de1a6a3 (patch)
treed71f0cead730065dd8509e284d66b6767e7ebd25 /include
parentdc5d1fa21c20000b77bf713585333c79121a8df0 (diff)
Moved signal/thread/mode checking to use signal pipes
Diffstat (limited to 'include')
-rw-r--r--include/modes.h10
-rw-r--r--include/services.h31
-rw-r--r--include/threadengine.h41
3 files changed, 36 insertions, 46 deletions
diff --git a/include/modes.h b/include/modes.h
index 2fce7e9f7..1e85e3b64 100644
--- a/include/modes.h
+++ b/include/modes.h
@@ -375,6 +375,16 @@ class StackerInfo
class CoreExport ModeManager
{
protected:
+ class ModePipe : public Pipe
+ {
+ public:
+ /** Called when there are modes to be set
+ */
+ void OnNotify();
+ };
+
+ static ModePipe *mpipe;
+
/* List of pairs of user/channels and their stacker info */
static std::list<std::pair<Base *, StackerInfo *> > StackerObjects;
diff --git a/include/services.h b/include/services.h
index 9ed5e2ba3..520182e98 100644
--- a/include/services.h
+++ b/include/services.h
@@ -241,22 +241,6 @@ class DatabaseException : public CoreException
virtual ~DatabaseException() throw() { }
};
-class Signal
-{
- static std::vector<Signal *> SignalHandlers;
- static void SignalHandler(int signal);
-
- struct sigaction action, old;
- sig_atomic_t called;
- public:
- static void Process();
-
- int signal;
-
- Signal(int s);
- ~Signal();
- virtual void OnSignal() = 0;
-};
/** Debug cast to be used instead of dynamic_cast, this uses dynamic_cast
* for debug builds and static_cast on releass builds to speed up the program
@@ -406,6 +390,21 @@ template class Service<Base>;
/*************************************************************************/
+class Signal : public Pipe
+{
+ static std::vector<Signal *> SignalHandlers;
+ static void SignalHandler(int signal);
+
+ struct sigaction action, old;
+ public:
+ int signal;
+
+ Signal(int s);
+ ~Signal();
+
+ virtual void OnNotify() = 0;
+};
+
class ConvertException : public CoreException
{
public:
diff --git a/include/threadengine.h b/include/threadengine.h
index 20e3c81eb..06c4900a4 100644
--- a/include/threadengine.h
+++ b/include/threadengine.h
@@ -12,36 +12,9 @@ typedef pthread_mutex_t MutexHandle;
typedef pthread_cond_t CondHandle;
#endif
-class ThreadEngine;
class Thread;
-extern CoreExport ThreadEngine threadEngine;
-
-class CoreExport ThreadEngine
-{
- public:
- /* Vector of threads */
- std::vector<Thread *> threads;
-
- /** Threadengines constructor
- */
- ThreadEngine();
-
- /** Threadengines destructor
- */
- ~ThreadEngine();
-
- /** Start a new thread
- * @param thread A pointer to a newley allocated thread
- */
- void Start(Thread *thread);
-
- /** Check for finished threads
- */
- void Process();
-};
-
-class CoreExport Thread : public Extensible
+class CoreExport Thread : public Pipe, public Extensible
{
private:
/* Set to true to tell the thread to finish and we are waiting for it */
@@ -71,14 +44,22 @@ class CoreExport Thread : public Extensible
*/
void Exit();
+ /** Launch the thread
+ */
+ void Start();
+
/** Returns the exit state of the thread
* @return true if we want to exit
*/
bool GetExitState() const;
- /** Called to run the thread, should be overloaded
+ /** Called when this thread should be joined to
+ */
+ void OnNotify();
+
+ /** Called when the thread is run.
*/
- virtual void Run();
+ virtual void Run() = 0;
};
class CoreExport Mutex