OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
WorkStage< InputT, ResultT, ExternalT, SubResultT > Class Template Reference

#include <work_pipeline.h>

Inheritance diagram for WorkStage< InputT, ResultT, ExternalT, SubResultT >:
Collaboration diagram for WorkStage< InputT, ResultT, ExternalT, SubResultT >:

Public Types

typedef boost::function
< ExternalBase::Efn(uint32_t
inst, const std::vector
< ExternalT * > &exts, const
InputT &inp, SubResultT
&subRes)> 
ExecuteFn
 
typedef boost::function< bool(const
std::vector< boost::shared_ptr
< SubResultT > > &subs, const
boost::shared_ptr< InputT >
&inp, ResultT &res)> 
MergeFn
 

Public Member Functions

 WorkStage (std::vector< std::pair< int, int > > tinfo, ExecuteFn efn, MergeFn mfn=0, int tid=0, int tinst=-1)
 
void Start (uint32_t stage, FinFn finFn, const boost::shared_ptr< InputT > &inp)
 
boost::shared_ptr< ResultT > Result () const
 
void Release ()
 
- Public Member Functions inherited from WorkStageIf< InputT, ResultT >
virtual ~WorkStageIf ()
 

Private Member Functions

bool Runner (void)
 
void WorkProcCb (uint32_t inst, bool ret_code)
 
void StageProceed (boost::true_type)
 
void StageProceed (boost::false_type)
 

Private Attributes

uint32_t stage_
 
tbb::atomic< uint32_t > remainingInst_
 
FinFn finFn_
 
boost::shared_ptr< InputT > inp_
 
boost::shared_ptr< ResultT > res_
 
std::vector< boost::shared_ptr
< WorkProcessor< InputT,
SubResultT, ExternalT > > > 
workers_
 
std::vector< boost::shared_ptr
< SubResultT > > 
subRes_
 
const MergeFn merger_
 
const ExecuteFn efn_
 
bool finished_
 
bool running_
 
const int tid_
 
const int tinst_
 
const std::vector< std::pair
< int, int > > 
tinfo_
 

Detailed Description

template<typename InputT, typename ResultT, typename ExternalT, typename SubResultT = ResultT>
class WorkStage< InputT, ResultT, ExternalT, SubResultT >

Definition at line 106 of file work_pipeline.h.

Member Typedef Documentation

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
typedef boost::function< ExternalBase::Efn( uint32_t inst, const std::vector<ExternalT*> & exts, const InputT & inp, SubResultT & subRes )> WorkStage< InputT, ResultT, ExternalT, SubResultT >::ExecuteFn

Definition at line 129 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
typedef boost::function< bool( const std::vector<boost::shared_ptr<SubResultT> > & subs, const boost::shared_ptr<InputT> & inp, ResultT & res )> WorkStage< InputT, ResultT, ExternalT, SubResultT >::MergeFn

Definition at line 144 of file work_pipeline.h.

Constructor & Destructor Documentation

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT >
WorkStage< InputT, ResultT, ExternalT, SubResultT >::WorkStage ( std::vector< std::pair< int, int > >  tinfo,
ExecuteFn  efn,
MergeFn  mfn = 0,
int  tid = 0,
int  tinst = -1 
)

Definition at line 10 of file work_pipeline-inl.h.

Member Function Documentation

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT >
void WorkStage< InputT, ResultT, ExternalT, SubResultT >::Release ( )
virtual

Implements WorkStageIf< InputT, ResultT >.

Definition at line 55 of file work_pipeline-inl.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT >
boost::shared_ptr< ResultT > WorkStage< InputT, ResultT, ExternalT, SubResultT >::Result ( ) const
virtual

Implements WorkStageIf< InputT, ResultT >.

Definition at line 48 of file work_pipeline-inl.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT >
bool WorkStage< InputT, ResultT, ExternalT, SubResultT >::Runner ( void  )
private

Definition at line 68 of file work_pipeline-inl.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
void WorkStage< InputT, ResultT, ExternalT, SubResultT >::StageProceed ( boost::true_type  )
inlineprivate

Definition at line 177 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
void WorkStage< InputT, ResultT, ExternalT, SubResultT >::StageProceed ( boost::false_type  )
inlineprivate

Definition at line 178 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT >
void WorkStage< InputT, ResultT, ExternalT, SubResultT >::Start ( uint32_t  stage,
FinFn  finFn,
const boost::shared_ptr< InputT > &  inp 
)
virtual

Implements WorkStageIf< InputT, ResultT >.

Definition at line 25 of file work_pipeline-inl.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT >
void WorkStage< InputT, ResultT, ExternalT, SubResultT >::WorkProcCb ( uint32_t  inst,
bool  ret_code 
)
private

Definition at line 82 of file work_pipeline-inl.h.

Here is the call graph for this function:

Member Data Documentation

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
const ExecuteFn WorkStage< InputT, ResultT, ExternalT, SubResultT >::efn_
private

Definition at line 168 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
FinFn WorkStage< InputT, ResultT, ExternalT, SubResultT >::finFn_
private

Definition at line 162 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
bool WorkStage< InputT, ResultT, ExternalT, SubResultT >::finished_
private

Definition at line 169 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
boost::shared_ptr<InputT> WorkStage< InputT, ResultT, ExternalT, SubResultT >::inp_
private

Definition at line 163 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
const MergeFn WorkStage< InputT, ResultT, ExternalT, SubResultT >::merger_
private

Definition at line 167 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
tbb::atomic<uint32_t> WorkStage< InputT, ResultT, ExternalT, SubResultT >::remainingInst_
private

Definition at line 161 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
boost::shared_ptr<ResultT> WorkStage< InputT, ResultT, ExternalT, SubResultT >::res_
private

Definition at line 164 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
bool WorkStage< InputT, ResultT, ExternalT, SubResultT >::running_
private

Definition at line 170 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
uint32_t WorkStage< InputT, ResultT, ExternalT, SubResultT >::stage_
private

Definition at line 160 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
std::vector<boost::shared_ptr<SubResultT> > WorkStage< InputT, ResultT, ExternalT, SubResultT >::subRes_
private

Definition at line 166 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
const int WorkStage< InputT, ResultT, ExternalT, SubResultT >::tid_
private

Definition at line 171 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
const std::vector<std::pair<int,int> > WorkStage< InputT, ResultT, ExternalT, SubResultT >::tinfo_
private

Definition at line 173 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
const int WorkStage< InputT, ResultT, ExternalT, SubResultT >::tinst_
private

Definition at line 172 of file work_pipeline.h.

template<typename InputT , typename ResultT , typename ExternalT , typename SubResultT = ResultT>
std::vector<boost::shared_ptr<WorkProcessor<InputT,SubResultT,ExternalT> > > WorkStage< InputT, ResultT, ExternalT, SubResultT >::workers_
private

Definition at line 165 of file work_pipeline.h.


The documentation for this class was generated from the following files: