00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #pragma once
00023
00024 #include <drizzled/plugin/plugin.h>
00025 #include <drizzled/session.h>
00026
00027 #include <string>
00028 #include <vector>
00029
00030 #include <drizzled/visibility.h>
00031
00032 namespace drizzled
00033 {
00034
00035 class Session;
00036
00037 namespace plugin
00038 {
00039
00044 class DRIZZLED_API Scheduler : public Plugin
00045 {
00046
00047 Scheduler();
00048 Scheduler(const Scheduler &);
00049 Scheduler& operator=(const Scheduler &);
00050 public:
00051 explicit Scheduler(std::string name_arg)
00052 : Plugin(name_arg, "Scheduler")
00053 {}
00054 virtual ~Scheduler() {}
00055
00060 virtual bool addSession(Session::shared_ptr &session)= 0;
00061
00065 virtual void killSession(Session *) {}
00066
00070 virtual void killSessionNow(Session::shared_ptr&) {}
00071
00072 static bool addPlugin(plugin::Scheduler *sced);
00073 static void removePlugin(plugin::Scheduler *sced);
00074 static bool setPlugin(const std::string& name);
00075 static Scheduler *getScheduler();
00076 };
00077
00078 }
00079 }
00080