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 <set> 00019 00020 ML_START_NAMESPACE 00021 00022 class TileRequest; 00023 class PageRequest; 00024 class PageRequestQueueInterface; 00025 00026 #define ML_PAGEREQUEST_TILES_NOT_CREATED -1 00027 #define ML_TILEREQUEST_PAGES_NOT_CREATED -1 00028 00029 //------------------------------------------------------------------------------------------- 00033 //------------------------------------------------------------------------------------------- 00034 class ML_UNIX_ONLY_EXPORT(MLEXPORT) PageRequestCursor 00035 { 00036 public: 00038 PageRequestCursor(PageRequest* request); 00040 PageRequestCursor(TileRequest* request); 00042 PageRequestCursor(); 00043 00045 void init(TileRequest* request); 00046 00048 enum CursorState { 00049 HasMoreWork, 00050 HasFinished, 00051 IsBlocked 00052 }; 00053 00058 CursorState nextStep(PageRequestQueueInterface& queue); 00059 00061 bool propagateCancellationDownIfRequestNotNeededAnymore(); 00062 00064 void collectPageRequestsWithErrors(std::set<PageRequest*>& result); 00065 00067 bool isNeeded(); 00068 00070 void clear(); 00071 00072 private: 00077 void moveUpToNextDown(); 00078 00080 PageRequest* _pageRequest; 00082 TileRequest* _tileRequest; 00083 00085 int _currentDepth; 00086 }; 00087 00088 ML_END_NAMESPACE 00089 00090 #endif //of __mlPageRequestCursor_H 00091