#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