MeVisLabToolboxReference
MeVis/Foundation/Sources/MLBackgroundTasks/mlBackgroundTaskMessages.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00009 //----------------------------------------------------------------------------------
00010 
00011 
00012 #ifndef __mlBackgroundTaskMessages_H
00013 #define __mlBackgroundTaskMessages_H
00014 
00015 
00016 // Local includes
00017 #include "MLBackgroundTasksSystem.h"
00018 #include "mlBackgroundTaskMessage.h"
00019 #include "mlImagingBackgroundTask.h"
00020 #include "mlBackgroundTaskMethodCallMessage.h"
00021 
00022 ML_START_NAMESPACE
00023 
00024 class GetTileJobBase;
00025 class ProcessAllPagesHandler;
00026 
00027 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskFinishedMessage : public BackgroundTaskMessage {
00028 public:
00029   BackgroundTaskFinishedMessage(BackgroundTask* task):BackgroundTaskMessage() { setSender(task); }
00030 
00031   virtual void execute();
00032 
00033 };
00034 
00035 //--------------------------------------------------------------------------------------
00036 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLGetTileBaseMessage : public BackgroundTaskMessage {
00037 public:
00038   BackgroundTaskMLGetTileBaseMessage(BackgroundRequestId tileId, Module* module)
00039     : BackgroundTaskMessage(), _request(NULL), _module(module), _tileId(tileId), _resultWasSent(false) {
00040   }
00041 
00042   ~BackgroundTaskMLGetTileBaseMessage();
00043 
00044   virtual void executeSynchronous();
00045 
00046   virtual bool finishedProcessing();
00047 
00048   virtual void taskWillBeDestroyed();
00049 
00050   static  void tileRequestFinishedCB(void* data, TileRequest* request);
00051 
00052   virtual void sendFinishedRequest() = 0;
00053 
00054   virtual void sendFailedRequest() = 0;
00055 
00056   virtual void sendProgress() = 0;
00057 
00058 protected:
00059   GetTileJobBase*      _request;
00060   Module*              _module;
00061   BackgroundRequestId  _tileId;
00062   bool                 _resultWasSent;
00063 };
00064 
00065 //--------------------------------------------------------------------------------------
00066 
00067 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLGetTileMessage : public BackgroundTaskMLGetTileBaseMessage {
00068 public:
00069   BackgroundTaskMLGetTileMessage(BackgroundRequestId tileId, Module* module,
00070     int inputImageIndex, MLDataType type, const SubImageBox& box, const ScaleShiftData& shift = ScaleShiftData(),
00071     int getTileFlags = 0, ManagedSubImage* externalBuffer = NULL);
00072 
00073   ~BackgroundTaskMLGetTileMessage();
00074 
00075   virtual void execute();
00076 
00077   virtual void sendFinishedRequest();
00078 
00079   virtual void sendFailedRequest();
00080 
00081   virtual void sendProgress();
00082 
00083 private:
00084   ManagedSubImage* _externalBuffer;
00085   int              _inputImageIndex;
00086   MLDataType       _type;
00087   SubImageBox      _box;
00088   ScaleShiftData   _shift;
00089   int              _getTileFlags;
00090 };
00091 
00092 //--------------------------------------------------------------------------------------
00093 
00094 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLProcessAllPagesMessage : public BackgroundTaskMLGetTileBaseMessage {
00095 public:
00096   BackgroundTaskMLProcessAllPagesMessage(BackgroundRequestId tileId, Module* module, ProcessAllPagesHandler* handler, const SubImageBox& box);
00097 
00098   ~BackgroundTaskMLProcessAllPagesMessage();
00099 
00100   virtual void execute();
00101 
00102   virtual void sendFinishedRequest();
00103 
00104   virtual void sendFailedRequest();
00105 
00106   virtual void sendProgress();
00107 
00108 private:
00109   ProcessAllPagesHandler* _handler;
00110   SubImageBox             _box;
00111   bool                    _ownsHandler;
00112 };
00113 
00114 //--------------------------------------------------------------------------------------
00115 
00116 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLGetTileResultMessage : public BackgroundTaskMessage {
00117 public:
00118   BackgroundTaskMLGetTileResultMessage(ImagingBackgroundTask* task, BackgroundRequestId tileId, ManagedSubImage* img):BackgroundTaskMessage() {
00119     _task = task;
00120     _image = img;
00121     _tileId = tileId;
00122   }
00123   ~BackgroundTaskMLGetTileResultMessage();
00124 
00125   virtual void execute();
00126 
00127 private:
00128   BackgroundRequestId    _tileId;
00129   ManagedSubImage*       _image;
00130   ImagingBackgroundTask* _task;
00131 };
00132 
00133 
00134 //--------------------------------------------------------------------------------------
00135 
00136 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLProcessAllPagesResultMessage : public BackgroundTaskMessage {
00137 public:
00138   BackgroundTaskMLProcessAllPagesResultMessage(ImagingBackgroundTask* task, BackgroundRequestId requestId, ProcessAllPagesHandler* handler):BackgroundTaskMessage() {
00139     _task = task;
00140     _handler = handler;
00141     _requestId = requestId;
00142   }
00143   ~BackgroundTaskMLProcessAllPagesResultMessage();
00144 
00145   virtual void execute();
00146 
00147 private:
00148   BackgroundRequestId    _requestId;
00149   ProcessAllPagesHandler* _handler;
00150   ImagingBackgroundTask* _task;
00151 };
00152 
00153 ML_END_NAMESPACE
00154 
00155 #endif
00156 
00157