comparison 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
comparison
equal deleted inserted replaced
3849:8c96b20fb275 3850:d729d6e8b484
31 **/ 31 **/
32 32
33 33
34 #pragma once 34 #pragma once
35 35
36 #include "IDicomConnectionManager.h" 36 #if !defined(ORTHANC_ENABLE_DCMTK_NETWORKING)
37 # error The macro ORTHANC_ENABLE_DCMTK_NETWORKING must be defined
38 #endif
37 39
38 #if ORTHANC_ENABLE_DCMTK_NETWORKING == 0 40 #if ORTHANC_ENABLE_DCMTK_NETWORKING == 0
39 41
40 namespace Orthanc 42 namespace Orthanc
41 { 43 {
42 class TimeoutDicomConnectionManager : public IDicomConnectionManager 44 class TimeoutDicomConnectionManager : public boost::noncopyable
43 { 45 {
44 public: 46 public:
45 void SetTimeout(unsigned int timeout) 47 void SetTimeout(unsigned int timeout)
46 { 48 {
47 } 49 }
62 } 64 }
63 65
64 #else 66 #else
65 67
66 #include "../Compatibility.h" 68 #include "../Compatibility.h"
69 #include "DicomUserConnection.h"
67 70
68 #include <boost/date_time/posix_time/posix_time.hpp> 71 #include <boost/date_time/posix_time/posix_time.hpp>
69 72
70 namespace Orthanc 73 namespace Orthanc
71 { 74 {
72 class TimeoutDicomConnectionManager : public IDicomConnectionManager 75 class TimeoutDicomConnectionManager : public boost::noncopyable
73 { 76 {
74 private: 77 private:
75 class Resource;
76
77 std::unique_ptr<DicomUserConnection> connection_; 78 std::unique_ptr<DicomUserConnection> connection_;
78 boost::posix_time::ptime lastUse_; 79 boost::posix_time::ptime lastUse_;
79 boost::posix_time::time_duration timeout_; 80 boost::posix_time::time_duration timeout_;
80 81
81 void Touch(); 82 void Touch();
82 83
83 void CheckTimeoutInternal(); 84 void CheckTimeoutInternal();
84 85
85 public: 86 public:
87 class Resource : public boost::noncopyable
88 {
89 private:
90 TimeoutDicomConnectionManager& that_;
91
92 public:
93 Resource(TimeoutDicomConnectionManager& that);
94
95 ~Resource();
96
97 DicomUserConnection& GetConnection();
98 };
99
86 TimeoutDicomConnectionManager() : 100 TimeoutDicomConnectionManager() :
87 timeout_(boost::posix_time::milliseconds(1000)) 101 timeout_(boost::posix_time::milliseconds(1000))
88 { 102 {
89 } 103 }
90 104
94 108
95 void Close(); 109 void Close();
96 110
97 void CheckTimeout(); 111 void CheckTimeout();
98 112
99 virtual IResource* AcquireConnection(const std::string& localAet, 113 Resource* AcquireConnection(const std::string& localAet,
100 const RemoteModalityParameters& remote); 114 const RemoteModalityParameters& remote);
101 }; 115 };
102 } 116 }
103 117
104 #endif 118 #endif