~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/plugin/scheduler.cc

  • Committer: Olaf van der Spek
  • Date: 2011-05-06 10:28:39 UTC
  • mto: This revision was merged to the branch mainline in revision 2303.
  • Revision ID: olafvdspek@gmail.com-20110506102839-9ahykd00lluhvx7y
Refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
#include <drizzled/gettext.h>
26
26
#include <drizzled/plugin/scheduler.h>
27
27
 
28
 
namespace drizzled
29
 
{
 
28
namespace drizzled {
30
29
 
31
30
extern size_t my_thread_stack_size;
32
31
 
33
 
std::vector<plugin::Scheduler *> all_schedulers;
 
32
typedef std::vector<plugin::Scheduler*> schedulers_t;
 
33
schedulers_t g_schedulers;
34
34
 
35
35
/* Globals (TBK) */
36
 
static plugin::Scheduler *scheduler= NULL;
37
 
 
 
36
static plugin::Scheduler* g_scheduler= NULL;
38
37
 
39
38
class FindSchedulerByName : public std::unary_function<plugin::Scheduler *, bool>
40
39
{
51
50
 
52
51
bool plugin::Scheduler::addPlugin(plugin::Scheduler *sched)
53
52
{
54
 
  std::vector<plugin::Scheduler *>::iterator iter=
55
 
    std::find_if(all_schedulers.begin(), all_schedulers.end(), 
 
53
  schedulers_t::iterator iter=
 
54
    std::find_if(g_schedulers.begin(), g_schedulers.end(), 
56
55
            FindSchedulerByName(&sched->getName()));
57
56
 
58
 
  if (iter != all_schedulers.end())
 
57
  if (iter != g_schedulers.end())
59
58
  {
60
59
    errmsg_printf(error::ERROR,
61
60
                  _("Attempted to register a scheduler %s, but a scheduler "
65
64
  }
66
65
 
67
66
  sched->deactivate();
68
 
  all_schedulers.push_back(sched);
 
67
  g_schedulers.push_back(sched);
69
68
 
70
69
  return false;
71
70
}
73
72
 
74
73
void plugin::Scheduler::removePlugin(plugin::Scheduler *sched)
75
74
{
76
 
  all_schedulers.erase(std::find(all_schedulers.begin(),
77
 
                            all_schedulers.end(),
 
75
  g_schedulers.erase(std::find(g_schedulers.begin(),
 
76
                            g_schedulers.end(),
78
77
                            sched));
79
78
}
80
79
 
81
80
 
82
81
bool plugin::Scheduler::setPlugin(const std::string& name)
83
82
{
84
 
  std::vector<plugin::Scheduler *>::iterator iter=
85
 
    std::find_if(all_schedulers.begin(), all_schedulers.end(), 
 
83
  schedulers_t::iterator iter=
 
84
    std::find_if(g_schedulers.begin(), g_schedulers.end(), 
86
85
            FindSchedulerByName(&name));
87
86
 
88
 
  if (iter != all_schedulers.end())
 
87
  if (iter != g_schedulers.end())
89
88
  {
90
 
    if (scheduler != NULL)
91
 
      scheduler->deactivate();
92
 
    scheduler= *iter;
93
 
    scheduler->activate();
 
89
    if (g_scheduler)
 
90
      g_scheduler->deactivate();
 
91
    g_scheduler= *iter;
 
92
    g_scheduler->activate();
94
93
    return false;
95
94
  }
96
95
 
103
102
 
104
103
plugin::Scheduler *plugin::Scheduler::getScheduler()
105
104
{
106
 
  return scheduler;
 
105
  return g_scheduler;
107
106
}
108
107
 
109
108
} /* namespace drizzled */