• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5<title>Class shared_connection_block</title>
6<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
7<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
8<link rel="home" href="../../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
9<link rel="up" href="../../signals2/reference.html#header.boost.signals2.shared_connection_block_hpp" title="Header &lt;boost/signals2/shared_connection_block.hpp&gt;">
10<link rel="prev" href="optional__1_3_36_6_7_1_1_2.html" title="Class optional_last_value&lt;void&gt;">
11<link rel="next" href="signal.html" title="Class template signal">
12</head>
13<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14<table cellpadding="2" width="100%"><tr>
15<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
16<td align="center"><a href="../../../../index.html">Home</a></td>
17<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
18<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
19<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
20<td align="center"><a href="../../../../more/index.htm">More</a></td>
21</tr></table>
22<hr>
23<div class="spirit-nav">
24<a accesskey="p" href="optional__1_3_36_6_7_1_1_2.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals2/reference.html#header.boost.signals2.shared_connection_block_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="signal.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
25</div>
26<div class="refentry">
27<a name="boost.signals2.shared_connection_block"></a><div class="titlepage"></div>
28<div class="refnamediv">
29<h2><span class="refentrytitle">Class shared_connection_block</span></h2>
30<p>boost::signals2::shared_connection_block — Blocks a connection between a signal and a slot.</p>
31</div>
32<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
33<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../signals2/reference.html#header.boost.signals2.shared_connection_block_hpp" title="Header &lt;boost/signals2/shared_connection_block.hpp&gt;">boost/signals2/shared_connection_block.hpp</a>&gt;
34
35</span>
36<span class="keyword">class</span> <a class="link" href="shared_connection_block.html" title="Class shared_connection_block">shared_connection_block</a> <span class="special">{</span>
37<span class="keyword">public</span><span class="special">:</span>
38  <span class="comment">// <a class="link" href="shared_connection_block.html#boost.signals2.shared_connection_blockconstruct-copy-destruct">construct/copy/destruct</a></span>
39  <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_3-bb"><span class="identifier">shared_connection_block</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">boost::signals2::connection</a> <span class="special">&amp;</span> <span class="special">=</span> <span class="identifier">connection</span><span class="special">(</span><span class="special">)</span><span class="special">,</span>
40                          <span class="keyword">bool</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">)</span><span class="special">;</span>
41  <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_4-bb"><span class="identifier">shared_connection_block</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">signals2</span><span class="special">::</span><span class="identifier">shared_connection_block</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
42  shared_connection_block&amp;
43  <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_6-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">signals2</span><span class="special">::</span><span class="identifier">shared_connection_block</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
44  <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_5-bb"><span class="special">~</span><span class="identifier">shared_connection_block</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
45
46  <span class="comment">// <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_7-bb">connection blocking</a></span>
47  <span class="keyword">void</span> <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_7_1-bb"><span class="identifier">unblock</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
48  <span class="keyword">void</span> <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_7_2-bb"><span class="identifier">block</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
49  <span class="keyword">bool</span> <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_7_3-bb"><span class="identifier">blocking</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
50
51  <span class="comment">// <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_8-bb">miscellaneous methods</a></span>
52  <a class="link" href="connection.html" title="Class connection">boost::signals2::connection</a> <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_8_1-bb"><span class="identifier">connection</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
53<span class="special">}</span><span class="special">;</span></pre></div>
54<div class="refsect1">
55<a name="id-1.3.36.6.9.3.4"></a><h2>Description</h2>
56<p>A <code class="computeroutput">shared_connection_block</code> object blocks a
57          connection, preventing the associated slot from executing when the
58          associated signal is invoked. The connection will remain
59          blocked until every <code class="computeroutput">shared_connection_block</code> that references
60          the connection
61          releases its block.  A <code class="computeroutput">shared_connection_block</code> releases
62          its block when it is destroyed or its
63          <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_7_1-bb">unblock</a> method is called.</p>
64<p>A <code class="computeroutput">shared_connection_block</code> is safe to use even
65          after the <a class="link" href="connection.html" title="Class connection">signals2::connection</a> object it was constructed
66          from has been destroyed, or the connection it references has been
67          disconnected.</p>
68<p>
69            Note, blocking a connection does not guarantee the associated slot
70            has finished execution if it is already in the process of being run
71            when the connection block goes into effect.  This is similar
72            to the behaviour of disconnect, in that blocking a connection
73            will not wait for the connection's associated slot to complete execution.
74            This situation may arise in a multi-threaded environment if the
75            connection block goes into effect concurrently with signal invocation,
76            or in a single-threaded environment if a slot blocks its own
77            connection.
78          </p>
79<div class="refsect2">
80<a name="id-1.3.36.6.9.3.4.5"></a><h3>
81<a name="boost.signals2.shared_connection_blockconstruct-copy-destruct"></a><code class="computeroutput">shared_connection_block</code>
82        public
83       construct/copy/destruct</h3>
84<div class="orderedlist"><ol class="orderedlist" type="1">
85<li class="listitem">
86<pre class="literallayout"><a name="id-1_3_36_6_8_4_1_1_3-bb"></a><span class="identifier">shared_connection_block</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">boost::signals2::connection</a> <span class="special">&amp;</span> conn <span class="special">=</span> <span class="identifier">connection</span><span class="special">(</span><span class="special">)</span><span class="special">,</span>
87                        <span class="keyword">bool</span> initially_blocking <span class="special">=</span> <span class="keyword">true</span><span class="special">)</span><span class="special">;</span></pre>
88<div class="variablelist"><table border="0" class="variablelist compact">
89<colgroup>
90<col align="left" valign="top">
91<col>
92</colgroup>
93<tbody>
94<tr>
95<td><p><span class="term">Effects:</span></p></td>
96<td>
97<p>Creates a <code class="computeroutput">shared_connection_block</code> which can block
98            the connection referenced by <code class="computeroutput">conn</code>.  The <code class="computeroutput">shared_connection_block</code>
99            will initially block the connection if and only if the
100            <code class="computeroutput">initially_blocking</code>
101            parameter is <code class="computeroutput">true</code>.  The block on the connection may be released
102            by calling the <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_7_1-bb">unblock</a> method,
103            or destroying the <code class="computeroutput">shared_connection_block</code> object.</p>
104<p>Default construction of a <code class="computeroutput">shared_connection_block</code> results in a
105              <code class="computeroutput">shared_connection_block</code> which references the NULL connection.
106              Such a <code class="computeroutput">shared_connection_block</code> is safe to use, though not
107              particularly useful until it is assigned another
108              <code class="computeroutput">shared_connection_block</code> which references a real connection.
109            </p>
110</td>
111</tr>
112<tr>
113<td><p><span class="term">Postconditions:</span></p></td>
114<td><p><code class="computeroutput">this-&gt;blocking() == initially_blocking</code></p></td>
115</tr>
116</tbody>
117</table></div>
118</li>
119<li class="listitem">
120<pre class="literallayout"><a name="id-1_3_36_6_8_4_1_1_4-bb"></a><span class="identifier">shared_connection_block</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">signals2</span><span class="special">::</span><span class="identifier">shared_connection_block</span> <span class="special">&amp;</span> other<span class="special">)</span><span class="special">;</span></pre>
121<div class="variablelist"><table border="0" class="variablelist compact">
122<colgroup>
123<col align="left" valign="top">
124<col>
125</colgroup>
126<tbody>
127<tr>
128<td><p><span class="term">Effects:</span></p></td>
129<td><p>
130              Copy constructs a <code class="computeroutput">shared_connection_block</code> which references
131              the same connection as <code class="computeroutput">other</code>.
132            </p></td>
133</tr>
134<tr>
135<td><p><span class="term">Postconditions:</span></p></td>
136<td>
137<p><code class="computeroutput">this-&gt;connection() == other.connection()</code></p>
138<p><code class="computeroutput">this-&gt;blocking() == other.blocking()</code></p>
139</td>
140</tr>
141</tbody>
142</table></div>
143</li>
144<li class="listitem">
145<pre class="literallayout">shared_connection_block&amp;
146<a name="id-1_3_36_6_8_4_1_1_6-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">signals2</span><span class="special">::</span><span class="identifier">shared_connection_block</span> <span class="special">&amp;</span> rhs<span class="special">)</span><span class="special">;</span></pre>
147<div class="variablelist"><table border="0" class="variablelist compact">
148<colgroup>
149<col align="left" valign="top">
150<col>
151</colgroup>
152<tbody>
153<tr>
154<td><p><span class="term">Effects:</span></p></td>
155<td><p>
156              Makes <code class="computeroutput">this</code> reference the same connection as <code class="computeroutput">rhs</code>.
157            </p></td>
158</tr>
159<tr>
160<td><p><span class="term">Postconditions:</span></p></td>
161<td>
162<p><code class="computeroutput">this-&gt;connection() == rhs.connection()</code></p>
163<p><code class="computeroutput">this-&gt;blocking() == rhs.blocking()</code></p>
164</td>
165</tr>
166<tr>
167<td><p><span class="term">Throws:</span></p></td>
168<td><p>Will not throw.</p></td>
169</tr>
170</tbody>
171</table></div>
172</li>
173<li class="listitem">
174<pre class="literallayout"><a name="id-1_3_36_6_8_4_1_1_5-bb"></a><span class="special">~</span><span class="identifier">shared_connection_block</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
175<div class="variablelist"><table border="0" class="variablelist compact">
176<colgroup>
177<col align="left" valign="top">
178<col>
179</colgroup>
180<tbody><tr>
181<td><p><span class="term">Effects:</span></p></td>
182<td><p>If <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_7_3-bb">blocking</a>() is true, releases the connection block.</p></td>
183</tr></tbody>
184</table></div>
185</li>
186</ol></div>
187</div>
188<div class="refsect2">
189<a name="id-1.3.36.6.9.3.4.6"></a><h3>
190<a name="id-1_3_36_6_8_4_1_1_7-bb"></a><code class="computeroutput">shared_connection_block</code> connection blocking</h3>
191<div class="orderedlist"><ol class="orderedlist" type="1">
192<li class="listitem">
193<pre class="literallayout"><span class="keyword">void</span> <a name="id-1_3_36_6_8_4_1_1_7_1-bb"></a><span class="identifier">unblock</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
194<div class="variablelist"><table border="0" class="variablelist compact">
195<colgroup>
196<col align="left" valign="top">
197<col>
198</colgroup>
199<tbody>
200<tr>
201<td><p><span class="term">Effects:</span></p></td>
202<td><p>If <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_7_3-bb">blocking</a>() is true, releases the connection block.
203              Note, the connection may remain blocked due to
204              other <code class="computeroutput">shared_connection_block</code> objects.</p></td>
205</tr>
206<tr>
207<td><p><span class="term">Postconditions:</span></p></td>
208<td><p><code class="computeroutput">this-&gt;blocking() == false</code>.</p></td>
209</tr>
210</tbody>
211</table></div>
212</li>
213<li class="listitem">
214<pre class="literallayout"><span class="keyword">void</span> <a name="id-1_3_36_6_8_4_1_1_7_2-bb"></a><span class="identifier">block</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
215<div class="variablelist"><table border="0" class="variablelist compact">
216<colgroup>
217<col align="left" valign="top">
218<col>
219</colgroup>
220<tbody>
221<tr>
222<td><p><span class="term">Effects:</span></p></td>
223<td><p>If <a class="link" href="shared_connection_block.html#id-1_3_36_6_8_4_1_1_7_3-bb">blocking</a>() is false, reasserts a block on
224              the connection.</p></td>
225</tr>
226<tr>
227<td><p><span class="term">Postconditions:</span></p></td>
228<td><p><code class="computeroutput">this-&gt;blocking() == true</code>.</p></td>
229</tr>
230</tbody>
231</table></div>
232</li>
233<li class="listitem">
234<pre class="literallayout"><span class="keyword">bool</span> <a name="id-1_3_36_6_8_4_1_1_7_3-bb"></a><span class="identifier">blocking</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
235<div class="variablelist"><table border="0" class="variablelist compact">
236<colgroup>
237<col align="left" valign="top">
238<col>
239</colgroup>
240<tbody>
241<tr>
242<td><p><span class="term">Returns:</span></p></td>
243<td><p><code class="computeroutput">true</code> if <code class="computeroutput">this</code> is asserting a block on the connection.</p></td>
244</tr>
245<tr>
246<td><p><span class="term">Notes:</span></p></td>
247<td><p><code class="computeroutput">this-&gt;blocking() == true</code> implies <code class="computeroutput"><a class="link" href="connection.html#id-1_3_36_6_2_1_1_1_9_1-bb">connection::blocked</a>() == true</code>
248            for the connection.  However, <code class="computeroutput">this-&gt;blocking() == false</code> does not necessarily imply
249            <code class="computeroutput">connection::blocked() == false</code>, since the connection may be
250            blocked by another <code class="computeroutput">shared_connection_block</code> object.</p></td>
251</tr>
252</tbody>
253</table></div>
254</li>
255</ol></div>
256</div>
257<div class="refsect2">
258<a name="id-1.3.36.6.9.3.4.7"></a><h3>
259<a name="id-1_3_36_6_8_4_1_1_8-bb"></a><code class="computeroutput">shared_connection_block</code> miscellaneous methods</h3>
260<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
261<pre class="literallayout"><a class="link" href="connection.html" title="Class connection">boost::signals2::connection</a> <a name="id-1_3_36_6_8_4_1_1_8_1-bb"></a><span class="identifier">connection</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
262<div class="variablelist"><table border="0" class="variablelist compact">
263<colgroup>
264<col align="left" valign="top">
265<col>
266</colgroup>
267<tbody><tr>
268<td><p><span class="term">Returns:</span></p></td>
269<td><p>A connection object for the connection referenced by <code class="computeroutput">this</code>.</p></td>
270</tr></tbody>
271</table></div>
272</li></ol></div>
273</div>
274</div>
275</div>
276<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
277<td align="left"></td>
278<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<br>Copyright © 2007-2009 Frank Mori Hess<p>Distributed under the Boost
279    Software License, Version 1.0. (See accompanying file
280    <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p>
281</div></td>
282</tr></table>
283<hr>
284<div class="spirit-nav">
285<a accesskey="p" href="optional__1_3_36_6_7_1_1_2.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals2/reference.html#header.boost.signals2.shared_connection_block_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="signal.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
286</div>
287</body>
288</html>
289