ML Reference
|
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