7 #include "system/system_call.h" 8 #include "controller/AbstractController.h" 10 #include "SerialMaster.h" 14 bool *p_program_terminated) :
AbstractMaster(p_program_terminated),
15 m_simulator(simulator)
22 return m_state != terminated;
34 assert(m_state != terminated);
49 p_controller->iterate();
57 return m_pending_tasks.size() < 1;
63 m_pending_tasks.push(input_string);
69 return m_finished_tasks.empty();
75 return m_finished_tasks.front();
81 m_finished_tasks.pop();
87 while (!m_finished_tasks.empty()) m_finished_tasks.pop();
88 while (!m_pending_tasks.empty()) m_pending_tasks.pop();
100 void SerialMaster::processTask()
103 if (m_pending_tasks.empty())
107 TaskHandler& current_task = m_pending_tasks.front();
110 std::string output_string;
112 std::tie(output_string, error_code) =
113 system_call_error_code(m_simulator, current_task.
getInputString());
119 m_finished_tasks.push(std::move(m_pending_tasks.front()));
122 m_pending_tasks.pop();
virtual void iterate() override
virtual bool needMorePendingTasks() const override
virtual TaskHandler & frontFinishedTask() override
virtual bool finishedTasksEmpty() const override
virtual void popFinishedTask() override
std::weak_ptr< AbstractController > m_p_controller
bool programTerminated() const
virtual void pushPendingTask(const std::string &input_string) override
SerialMaster(const Command &simulator, bool *p_program_terminated)
std::string getInputString() const
void recordOutputAndErrorCode(const std::string &output_string, int error_code)
virtual void flush() override
virtual void terminate() override
virtual bool isActive() const override