ML Reference
MeVis/Foundation/Sources/ML/include/host/mlPageRequestProcessor.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //-------------------------------------------------------------------------
00009 //-------------------------------------------------------------------------
00010 #ifndef __mlPageRequestProcessor_H
00011 #define __mlPageRequestProcessor_H
00012 
00013 // ML-includes
00014 #ifndef __mlInitSystemML_H
00015 #include "mlInitSystemML.h"
00016 #endif
00017 
00018 #include "mlInitSystemML.h"
00019 
00020 ML_START_NAMESPACE
00021 
00022 class TileRequest;
00023 class PageRequest;
00024 class PageRequestCursor;
00025 
00026 //-------------------------------------------------------------------------------------------
00028 //-------------------------------------------------------------------------------------------
00029 class MLEXPORT PageRequestQueueInterface
00030 {
00031 public:
00033   virtual ~PageRequestQueueInterface() {};
00034 
00036   virtual void append(PageRequest* request) = 0;
00037 };
00038 
00039 
00040 //-------------------------------------------------------------------------------------------
00044 //-------------------------------------------------------------------------------------------
00045 class MLEXPORT PageRequestProcessor : public PageRequestQueueInterface
00046 {
00047 public:
00049   void addRequestCursor(PageRequestCursor* cursor) { _cursors.push_back(cursor); }
00050 
00052   MLErrorCode processAll();
00053 
00055   MLErrorCode process(double timeBudget);
00056 
00058   bool needsProcessing();
00059 
00061   MLErrorCode processNextRequest(bool& moreWork);
00062 
00064   virtual void append(PageRequest* request);
00065 
00067   void removeCancelledRequests();
00068 
00069 private:
00071   bool createMoreWork();
00072 
00074   std::deque<PageRequest*> _queue;
00075 
00077   std::vector<PageRequestCursor*> _cursors;
00078 };
00079 
00080 ML_END_NAMESPACE
00081 
00082 #endif //of __mlPageRequestProcessor_H
00083