Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
PipeLine.h
1#pragma once
2#include <boost/shared_ptr.hpp>
3#include <boost/container/deque.hpp>
4#include "AbsControlModule.h"
5#include "enum_macros.h"
6#include <string>
7
8class Module;
9// a linear pipline
10class PipeLine {
11 #define Status_ENUM(DO,C) \
12 DO(PL_CREATED,C) \
13 DO(PL_INITED,C) \
14 DO(PL_INITFAILED,C) \
15 DO(PL_RUNNING,C) \
16 DO(PL_RUNFAILED,C) \
17 DO(PL_STOPPING,C) \
18 DO(PL_STOPPED,C) \
19 DO(PL_TERMINATING,C) \
20 DO(PL_TERMINATED,C)
21
22 enum Status {
23 Status_ENUM(MAKE_ENUM,X)
24 };
25
26 bool mPlay;
28 typedef boost::shared_ptr<Module> item_type;
29 typedef boost::container::deque< item_type > container_type;
30 boost::shared_ptr<Module> controlModule = nullptr;
31
32 std::string mName;
34 bool validate();
36public:
37 PipeLine(std::string name) :mName(name), myStatus(PL_CREATED), mPlay(false) {}
38 ~PipeLine();
39 std::string getName() { return mName; }
40 bool appendModule(boost::shared_ptr<Module> pModule);
41 bool addControlModule(boost::shared_ptr<AbsControlModule>cModule);
42 bool init();
43 void run_all_threaded();
45 void pause();
46 void play();
47 void step();
48 void stop();
49 void term();
50 void wait_for_all(bool ignoreStatus = false);
52 void flushAllQueues(bool flushControlModuleQ=false);
53 const char* getStatus();
54};
55
Definition Module.h:151
Definition PipeLine.h:10
void pause()
Definition PipeLine.cpp:182
const char * getStatus()
Definition PipeLine.cpp:300
Status
Definition PipeLine.h:22
@ Status_ENUM
Definition PipeLine.h:23
PipeLine(std::string name)
Definition PipeLine.h:37
void step()
Definition PipeLine.cpp:212
void stop()
Definition PipeLine.cpp:230
void wait_for_all(bool ignoreStatus=false)
Definition PipeLine.cpp:251
container_type modules
Definition PipeLine.h:33
boost::shared_ptr< Module > controlModule
Definition PipeLine.h:30
Status myStatus
Definition PipeLine.h:27
bool mPlay
Definition PipeLine.h:26
~PipeLine()
Definition PipeLine.cpp:7
void play()
Definition PipeLine.cpp:195
void interrupt_wait_for_all()
Definition PipeLine.cpp:272
void run_all_threaded_withpause()
Definition PipeLine.cpp:175
bool checkCyclicDependency()
Definition PipeLine.cpp:45
void term()
Definition PipeLine.cpp:146
bool appendModule(boost::shared_ptr< Module > pModule)
Definition PipeLine.cpp:12
bool init()
Definition PipeLine.cpp:103
boost::shared_ptr< Module > item_type
Definition PipeLine.h:28
boost::container::deque< item_type > container_type
Definition PipeLine.h:29
bool addControlModule(boost::shared_ptr< AbsControlModule >cModule)
Definition PipeLine.cpp:35
bool validate()
Definition PipeLine.cpp:88
std::string mName
Definition PipeLine.h:32
void run_all_threaded()
Definition PipeLine.cpp:157
std::string getName()
Definition PipeLine.h:39
void flushAllQueues(bool flushControlModuleQ=false)
Definition PipeLine.cpp:308