comparison Core/DicomNetworking/TimeoutDicomConnectionManager.cpp @ 2608:25225f0b4f33 jobs

simplification wrt. dicom connection manager
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 19 May 2018 15:50:09 +0200
parents 988936118354
children f7a84b551ee4
comparison
equal deleted inserted replaced
2607:44e268605478 2608:25225f0b4f33
45 45
46 class TimeoutDicomConnectionManager::Resource : public IDicomConnectionManager::IResource 46 class TimeoutDicomConnectionManager::Resource : public IDicomConnectionManager::IResource
47 { 47 {
48 private: 48 private:
49 TimeoutDicomConnectionManager& that_; 49 TimeoutDicomConnectionManager& that_;
50 boost::mutex::scoped_lock lock_;
51 50
52 public: 51 public:
53 Resource(TimeoutDicomConnectionManager& that) : 52 Resource(TimeoutDicomConnectionManager& that) :
54 that_(that), 53 that_(that)
55 lock_(that.mutex_)
56 { 54 {
55 if (that_.connection_.get() == NULL)
56 {
57 throw OrthancException(ErrorCode_InternalError);
58 }
57 } 59 }
58 60
59 ~Resource() 61 ~Resource()
60 { 62 {
61 that_.Touch(); 63 that_.Touch();
62 } 64 }
63 65
64 DicomUserConnection& GetConnection() 66 DicomUserConnection& GetConnection()
65 { 67 {
66 if (that_.connection_.get() == NULL) 68 assert(that_.connection_.get() != NULL);
67 {
68 throw OrthancException(ErrorCode_InternalError);
69 }
70
71 return *that_.connection_; 69 return *that_.connection_;
72 } 70 }
73 }; 71 };
74 72
75 73
89 } 87 }
90 88
91 89
92 void TimeoutDicomConnectionManager::SetTimeout(unsigned int timeout) 90 void TimeoutDicomConnectionManager::SetTimeout(unsigned int timeout)
93 { 91 {
94 boost::mutex::scoped_lock lock(mutex_);
95
96 timeout_ = boost::posix_time::milliseconds(timeout); 92 timeout_ = boost::posix_time::milliseconds(timeout);
97 CheckTimeoutInternal(); 93 CheckTimeoutInternal();
98 } 94 }
99 95
100 96
101 unsigned int TimeoutDicomConnectionManager::GetTimeout() 97 unsigned int TimeoutDicomConnectionManager::GetTimeout()
102 { 98 {
103 boost::mutex::scoped_lock lock(mutex_);
104 return timeout_.total_milliseconds(); 99 return timeout_.total_milliseconds();
105 } 100 }
106 101
107 102
108 void TimeoutDicomConnectionManager::Close() 103 void TimeoutDicomConnectionManager::Close()
109 { 104 {
110 boost::mutex::scoped_lock lock(mutex_);
111 connection_.reset(NULL); 105 connection_.reset(NULL);
112 } 106 }
113 107
114 108
115 void TimeoutDicomConnectionManager::CheckTimeout() 109 void TimeoutDicomConnectionManager::CheckTimeout()
116 { 110 {
117 boost::mutex::scoped_lock lock(mutex_);
118 CheckTimeoutInternal(); 111 CheckTimeoutInternal();
119 } 112 }
120 113
121 114
122 IDicomConnectionManager::IResource* 115 IDicomConnectionManager::IResource*
123 TimeoutDicomConnectionManager::AcquireConnection(const std::string& localAet, 116 TimeoutDicomConnectionManager::AcquireConnection(const std::string& localAet,
124 const RemoteModalityParameters& remote) 117 const RemoteModalityParameters& remote)
125 { 118 {
126 boost::mutex::scoped_lock lock(mutex_);
127
128 if (connection_.get() == NULL || 119 if (connection_.get() == NULL ||
129 !connection_->IsSameAssociation(localAet, remote)) 120 !connection_->IsSameAssociation(localAet, remote))
130 { 121 {
131 connection_.reset(new DicomUserConnection(localAet, remote)); 122 connection_.reset(new DicomUserConnection(localAet, remote));
132 } 123 }