diff Core/DicomNetworking/TimeoutDicomConnectionManager.h @ 3850:d729d6e8b484

removing useless abstraction IDicomConnectionManager
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 20 Apr 2020 14:45:21 +0200
parents 2a170a8f1faf
children 6498739a3c3c
line wrap: on
line diff
--- a/Core/DicomNetworking/TimeoutDicomConnectionManager.h	Mon Apr 20 14:24:36 2020 +0200
+++ b/Core/DicomNetworking/TimeoutDicomConnectionManager.h	Mon Apr 20 14:45:21 2020 +0200
@@ -33,13 +33,15 @@
 
 #pragma once
 
-#include "IDicomConnectionManager.h"
+#if !defined(ORTHANC_ENABLE_DCMTK_NETWORKING)
+#  error The macro ORTHANC_ENABLE_DCMTK_NETWORKING must be defined
+#endif
 
 #if ORTHANC_ENABLE_DCMTK_NETWORKING == 0
 
 namespace Orthanc
 {
-  class TimeoutDicomConnectionManager : public IDicomConnectionManager
+  class TimeoutDicomConnectionManager : public boost::noncopyable
   {
   public:
     void SetTimeout(unsigned int timeout)
@@ -64,16 +66,15 @@
 #else
 
 #include "../Compatibility.h"
+#include "DicomUserConnection.h"
 
 #include <boost/date_time/posix_time/posix_time.hpp>
 
 namespace Orthanc
 {
-  class TimeoutDicomConnectionManager : public IDicomConnectionManager
+  class TimeoutDicomConnectionManager : public boost::noncopyable
   {
   private:
-    class Resource;
-
     std::unique_ptr<DicomUserConnection>  connection_;
     boost::posix_time::ptime              lastUse_;
     boost::posix_time::time_duration      timeout_;
@@ -83,6 +84,19 @@
     void CheckTimeoutInternal();
 
   public:
+    class Resource : public boost::noncopyable
+    {
+    private:
+      TimeoutDicomConnectionManager&  that_;
+
+    public:
+      Resource(TimeoutDicomConnectionManager& that);
+      
+      ~Resource();
+
+      DicomUserConnection& GetConnection();
+    };
+
     TimeoutDicomConnectionManager() :
       timeout_(boost::posix_time::milliseconds(1000))
     {
@@ -96,8 +110,8 @@
 
     void CheckTimeout();
 
-    virtual IResource* AcquireConnection(const std::string& localAet,
-                                         const RemoteModalityParameters& remote);
+    Resource* AcquireConnection(const std::string& localAet,
+                                const RemoteModalityParameters& remote);
   };
 }