diff Framework/Oracle/GetOrthancImageCommand.h @ 1134:87fbeb823375 broker

allocating messages from oracle commands on the stack
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 06 Nov 2019 15:16:45 +0100
parents 8e3763d1736a
children a0a33e5ea5bb
line wrap: on
line diff
--- a/Framework/Oracle/GetOrthancImageCommand.h	Wed Nov 06 12:56:23 2019 +0100
+++ b/Framework/Oracle/GetOrthancImageCommand.h	Wed Nov 06 15:16:45 2019 +0100
@@ -21,7 +21,7 @@
 
 #pragma once
 
-#include "../Messages/IMessage.h"
+#include "../Messages/IMessageEmitter.h"
 #include "OracleCommandBase.h"
 
 #include <Core/Images/ImageAccessor.h>
@@ -35,22 +35,27 @@
   public:
     typedef std::map<std::string, std::string>  HttpHeaders;
 
-    class SuccessMessage : public OriginMessage<GetOrthancImageCommand>
+    class SuccessMessage : public OracleMessageBase
     {
       ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
       
     private:
-      std::auto_ptr<Orthanc::ImageAccessor>  image_;
-      Orthanc::MimeType                      mime_;
+      const Orthanc::ImageAccessor&  image_;
+      Orthanc::MimeType              mime_;
 
     public:
-      SuccessMessage(const GetOrthancImageCommand& command,
-                     Orthanc::ImageAccessor* image,   // Takes ownership
-                     Orthanc::MimeType mime);
+      SuccessMessage(GetOrthancImageCommand& command,
+                     const Orthanc::ImageAccessor& image,
+                     Orthanc::MimeType mime) :
+        OracleMessageBase(command),
+        image_(image),
+        mime_(mime)
+      {
+      }
 
       const Orthanc::ImageAccessor& GetImage() const
       {
-        return *image_;
+        return image_;
       }
 
       Orthanc::MimeType GetMimeType() const
@@ -111,7 +116,9 @@
       return timeout_;
     }
 
-    IMessage* ProcessHttpAnswer(const std::string& answer,
-                                const HttpHeaders& answerHeaders) const;
+    void ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
+                           IMessageEmitter& emitter,
+                           const std::string& answer,
+                           const HttpHeaders& answerHeaders);
   };
 }