#ifndef _PL_QUEUE_H_
|
#define _PL_QUEUE_H_
|
|
#include "PipeLine.h"
|
|
struct PL_Queue_Config
|
{
|
size_t maxBlockCount;
|
size_t maxBlockSize;
|
bool cacheEmptyBlock;//#todo not implement
|
|
bool syncQueueFull;
|
bool syncQueueEmpty;
|
bool queueFullDropBlock;
|
bool copyData; //#todo not implement (copy ptr)
|
|
PL_Queue_Config() :
|
maxBlockCount(100), maxBlockSize(300000), cacheEmptyBlock(false),
|
syncQueueFull(true), syncQueueEmpty(true), queueFullDropBlock(false), copyData(true)
|
{
|
}
|
};
|
|
class PL_Queue : public PipeLineElem
|
{
|
public:
|
PL_Queue();
|
virtual ~PL_Queue();
|
|
virtual bool init(void* args);
|
virtual void finit();
|
|
virtual bool pay(const PipeMaterial& pm);
|
virtual bool gain(PipeMaterial& pm);
|
|
private:
|
static void pm_deleter_qb(PipeMaterial* pm);
|
|
void* internal;
|
};
|
|
PipeLineElem* create_PL_Queue();
|
|
#endif
|