ML Reference
|
00001 // **InsertLicense** code 00002 //------------------------------------------------------------------------- 00009 //------------------------------------------------------------------------- 00010 #ifndef __mlPageRequestCursor_H 00011 #define __mlPageRequestCursor_H 00012 00013 // ML-includes 00014 #ifndef __mlInitSystemML_H 00015 #include "mlInitSystemML.h" 00016 #endif 00017 00018 #include <host/mlPageRequestProcessor.h> 00019 00020 #include <set> 00021 00022 ML_START_NAMESPACE 00023 00024 class TileRequest; 00025 class PageRequest; 00026 00027 #define ML_PAGEREQUEST_TILES_NOT_CREATED -1 00028 #define ML_TILEREQUEST_PAGES_NOT_CREATED -1 00029 00030 //------------------------------------------------------------------------------------------- 00034 //------------------------------------------------------------------------------------------- 00035 class MLEXPORT PageRequestCursor : public PageRequestQueueInterface 00036 { 00037 public: 00039 PageRequestCursor(PageRequest* request); 00041 PageRequestCursor(TileRequest* request); 00043 PageRequestCursor(); 00044 00046 void init(TileRequest* request); 00047 00049 void setProcessingScope(int scope) { _processingScope = scope; } 00050 00052 int getProcessingScope() const { return _processingScope; } 00053 00055 enum CursorState { 00056 HasMoreWork, 00057 HasFinished, 00058 IsBlocked 00059 }; 00060 00065 CursorState nextStep(PageRequestQueueInterface& queue); 00066 00068 bool propagateCancellationDownIfRequestNotNeededAnymore(); 00069 00071 void propagateErrorUpwards(MLErrorCode error); 00072 00074 void collectPageRequestsWithErrors(std::set<PageRequest*>& result); 00075 00077 bool isNeeded(); 00078 00080 void clear(); 00081 00083 TileRequest* currentTileRequest() { return _tileRequest; } 00084 00086 virtual void append(PageRequest* request); 00087 00088 private: 00090 void commonInit(); 00091 00096 void moveUpToNextDown(); 00097 00099 PageRequest* _pageRequest; 00101 TileRequest* _tileRequest; 00102 00104 PageRequest* _pageRequestToPutInQueue; 00105 00107 int _processingScope; 00108 00110 int _currentDepth; 00111 }; 00112 00113 ML_END_NAMESPACE 00114 00115 #endif //of __mlPageRequestCursor_H 00116