Pakman
AbstractMaster.h
1 #ifndef ABSTRACTMASTER_H
2 #define ABSTRACTMASTER_H
3 
4 #include <memory>
5 #include <string>
6 
7 #include "core/common.h"
8 #include "core/TaskHandler.h"
9 
10 class AbstractController;
11 class LongOptions;
12 class Arguments;
13 
49 {
50  public:
51 
57  AbstractMaster(bool *p_program_terminated);
58 
60  virtual ~AbstractMaster() = default;
61 
63  virtual bool isActive() const = 0;
64 
66  virtual bool needMorePendingTasks() const = 0;
67 
72  virtual void pushPendingTask(const std::string& input_string) = 0;
73 
75  virtual bool finishedTasksEmpty() const = 0;
76 
78  virtual TaskHandler& frontFinishedTask() = 0;
79 
81  virtual void popFinishedTask() = 0;
82 
84  virtual void flush() = 0;
85 
87  virtual void terminate() = 0;
88 
97  static master_t getMaster(const std::string& arg);
98 
114  static std::string help(master_t master);
115 
131  static void addLongOptions(master_t master, LongOptions& lopts);
132 
148  static void run(master_t master, controller_t controller,
149  const Arguments& args);
150 
165  static void cleanup(master_t master);
166 
167  protected:
168 
174  void assignController(
175  std::shared_ptr<AbstractController> p_controller);
176 
178  virtual void iterate() = 0;
179 
181  bool programTerminated() const;
182 
184 
185  std::weak_ptr<AbstractController> m_p_controller;
186 
187  private:
188 
190  // Pointer to program terminated flag
191  bool *m_p_program_terminated;
192 };
193 
194 #endif // ABSTRACTMASTER_H
virtual void terminate()=0
virtual ~AbstractMaster()=default
virtual bool isActive() const =0
virtual bool needMorePendingTasks() const =0
static void cleanup(master_t master)
controller_t
Definition: common.h:45
static void run(master_t master, controller_t controller, const Arguments &args)
master_t
Definition: common.h:37
virtual bool finishedTasksEmpty() const =0
void assignController(std::shared_ptr< AbstractController > p_controller)
static void addLongOptions(master_t master, LongOptions &lopts)
virtual void popFinishedTask()=0
virtual void flush()=0
std::weak_ptr< AbstractController > m_p_controller
bool programTerminated() const
virtual void pushPendingTask(const std::string &input_string)=0
static master_t getMaster(const std::string &arg)
virtual TaskHandler & frontFinishedTask()=0
AbstractMaster(bool *p_program_terminated)
virtual void iterate()=0
static std::string help(master_t master)