Mercurial > hg > orthanc
annotate OrthancFramework/Sources/MultiThreading/SharedMessageQueue.cpp @ 5081:c673997507ea attach-custom-data
advanced storage cont
author | Alain Mazy <am@osimis.io> |
---|---|
date | Tue, 13 Sep 2022 11:02:43 +0200 |
parents | 43e613a7756b |
children | 0ea402b4d901 |
rev | line source |
---|---|
450 | 1 /** |
2 * Orthanc - A Lightweight, RESTful DICOM Store | |
1900 | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
1288
6e7e5ed91c2d
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1227
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
4870
43e613a7756b
upgrade to year 2022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4831
diff
changeset
|
5 * Copyright (C) 2017-2022 Osimis S.A., Belgium |
43e613a7756b
upgrade to year 2022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4831
diff
changeset
|
6 * Copyright (C) 2021-2022 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
450 | 7 * |
8 * This program is free software: you can redistribute it and/or | |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
9 * modify it under the terms of the GNU Lesser General Public License |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
10 * as published by the Free Software Foundation, either version 3 of |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
11 * the License, or (at your option) any later version. |
450 | 12 * |
13 * This program is distributed in the hope that it will be useful, but | |
14 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
16 * Lesser General Public License for more details. |
450 | 17 * |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
18 * You should have received a copy of the GNU Lesser General Public |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
19 * License along with this program. If not, see |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
20 * <http://www.gnu.org/licenses/>. |
450 | 21 **/ |
22 | |
23 | |
824
a811bdf8b8eb
precompiled headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
723
diff
changeset
|
24 #include "../PrecompiledHeaders.h" |
450 | 25 #include "SharedMessageQueue.h" |
26 | |
1227
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
27 |
3712
2a170a8f1faf
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
28 #include "../Compatibility.h" |
2a170a8f1faf
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
29 |
1227
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
30 |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
31 /** |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
32 * FIFO (queue): |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
33 * |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
34 * back front |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
35 * +--+--+--+--+--+--+--+--+--+--+--+ |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
36 * Enqueue -> | | | | | | | | | | | | |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
37 * | | | | | | | | | | | | -> Dequeue |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
38 * +--+--+--+--+--+--+--+--+--+--+--+ |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
39 * ^ |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
40 * | |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
41 * Make room here |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
42 * |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
43 * |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
44 * LIFO (stack): |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
45 * |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
46 * back front |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
47 * +--+--+--+--+--+--+--+--+--+--+--+ |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
48 * | | | | | | | | | | | | <- Enqueue |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
49 * | | | | | | | | | | | | -> Dequeue |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
50 * +--+--+--+--+--+--+--+--+--+--+--+ |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
51 * ^ |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
52 * | |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
53 * Make room here |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
54 **/ |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
55 |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
56 |
450 | 57 namespace Orthanc |
58 { | |
1227
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
59 SharedMessageQueue::SharedMessageQueue(unsigned int maxSize) : |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
60 isFifo_(true), |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
61 maxSize_(maxSize) |
450 | 62 { |
63 } | |
64 | |
65 | |
66 SharedMessageQueue::~SharedMessageQueue() | |
67 { | |
656 | 68 for (Queue::iterator it = queue_.begin(); it != queue_.end(); ++it) |
450 | 69 { |
70 delete *it; | |
71 } | |
72 } | |
73 | |
74 | |
75 void SharedMessageQueue::Enqueue(IDynamicObject* message) | |
76 { | |
77 boost::mutex::scoped_lock lock(mutex_); | |
78 | |
79 if (maxSize_ != 0 && queue_.size() > maxSize_) | |
80 { | |
1227
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
81 if (isFifo_) |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
82 { |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
83 // Too many elements in the queue: Make room |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
84 delete queue_.front(); |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
85 queue_.pop_front(); |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
86 } |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
87 else |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
88 { |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
89 // Too many elements in the stack: Make room |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
90 delete queue_.back(); |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
91 queue_.pop_back(); |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
92 } |
450 | 93 } |
94 | |
1227
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
95 if (isFifo_) |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
96 { |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
97 // Queue policy (FIFO) |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
98 queue_.push_back(message); |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
99 } |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
100 else |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
101 { |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
102 // Stack policy (LIFO) |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
103 queue_.push_front(message); |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
104 } |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
105 |
450 | 106 elementAvailable_.notify_one(); |
107 } | |
108 | |
109 | |
110 IDynamicObject* SharedMessageQueue::Dequeue(int32_t millisecondsTimeout) | |
111 { | |
112 boost::mutex::scoped_lock lock(mutex_); | |
113 | |
114 // Wait for a message to arrive in the FIFO queue | |
115 while (queue_.empty()) | |
116 { | |
117 if (millisecondsTimeout == 0) | |
118 { | |
119 elementAvailable_.wait(lock); | |
120 } | |
121 else | |
122 { | |
123 bool success = elementAvailable_.timed_wait | |
124 (lock, boost::posix_time::milliseconds(millisecondsTimeout)); | |
125 if (!success) | |
126 { | |
127 return NULL; | |
128 } | |
129 } | |
130 } | |
131 | |
3712
2a170a8f1faf
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
132 std::unique_ptr<IDynamicObject> message(queue_.front()); |
450 | 133 queue_.pop_front(); |
723
0da078f3affc
multithreading tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
134 |
0da078f3affc
multithreading tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
135 if (queue_.empty()) |
0da078f3affc
multithreading tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
136 { |
0da078f3affc
multithreading tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
137 emptied_.notify_all(); |
0da078f3affc
multithreading tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
138 } |
450 | 139 |
140 return message.release(); | |
141 } | |
452 | 142 |
143 | |
144 | |
145 bool SharedMessageQueue::WaitEmpty(int32_t millisecondsTimeout) | |
146 { | |
147 boost::mutex::scoped_lock lock(mutex_); | |
148 | |
149 // Wait for the queue to become empty | |
723
0da078f3affc
multithreading tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
150 while (!queue_.empty()) |
452 | 151 { |
152 if (millisecondsTimeout == 0) | |
153 { | |
154 emptied_.wait(lock); | |
155 } | |
156 else | |
157 { | |
158 if (!emptied_.timed_wait | |
159 (lock, boost::posix_time::milliseconds(millisecondsTimeout))) | |
160 { | |
161 return false; | |
162 } | |
163 } | |
164 } | |
165 | |
166 return true; | |
167 } | |
1227
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
168 |
4300 | 169 bool SharedMessageQueue::IsFifoPolicy() const |
170 { | |
171 return isFifo_; | |
172 } | |
173 | |
174 bool SharedMessageQueue::IsLifoPolicy() const | |
175 { | |
176 return !isFifo_; | |
177 } | |
178 | |
1227
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
179 |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
180 void SharedMessageQueue::SetFifoPolicy() |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
181 { |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
182 boost::mutex::scoped_lock lock(mutex_); |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
183 isFifo_ = true; |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
184 } |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
185 |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
186 void SharedMessageQueue::SetLifoPolicy() |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
187 { |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
188 boost::mutex::scoped_lock lock(mutex_); |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
189 isFifo_ = false; |
7266c37d0354
lifo policy in SharedMessageQueue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
190 } |
2078
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
191 |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
192 void SharedMessageQueue::Clear() |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
193 { |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
194 boost::mutex::scoped_lock lock(mutex_); |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
195 |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
196 if (queue_.empty()) |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
197 { |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
198 return; |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
199 } |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
200 else |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
201 { |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
202 while (!queue_.empty()) |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
203 { |
3712
2a170a8f1faf
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
204 std::unique_ptr<IDynamicObject> message(queue_.front()); |
2078
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
205 queue_.pop_front(); |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
206 } |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
207 |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
208 emptied_.notify_all(); |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
209 } |
93afa6134ab3
SharedMessageQueue::Clear
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
210 } |
4169
e8005a58de16
SharedMessageQueue::GetSize()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
211 |
e8005a58de16
SharedMessageQueue::GetSize()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
212 size_t SharedMessageQueue::GetSize() |
e8005a58de16
SharedMessageQueue::GetSize()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
213 { |
e8005a58de16
SharedMessageQueue::GetSize()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
214 boost::mutex::scoped_lock lock(mutex_); |
e8005a58de16
SharedMessageQueue::GetSize()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
215 return queue_.size(); |
e8005a58de16
SharedMessageQueue::GetSize()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
216 } |
450 | 217 } |