blob: 38cfe8af0db3840c095740782d175c6328570637 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Qpid Proton C++ API: server_direct.cpp</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Qpid Proton C++ API
&#160;<span id="projectnumber">0.32.0</span>
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('server_direct_8cpp-example.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">server_direct.cpp</div> </div>
</div><!--header-->
<div class="contents">
<p>A variant of the server part of a request-response example that accepts incoming connections and does not need an intermediary. Much like the original server, it receives incoming requests, converts the body to uppercase and sends the result back to the indicated reply address. Can be used in conjunction with any of the client alternatives.</p>
<div class="fragment"><div class="line"><span class="comment">/*</span></div>
<div class="line"><span class="comment"> *</span></div>
<div class="line"><span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
<div class="line"><span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
<div class="line"><span class="comment"> * distributed with this work for additional information</span></div>
<div class="line"><span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
<div class="line"><span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
<div class="line"><span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
<div class="line"><span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
<div class="line"><span class="comment"> *</span></div>
<div class="line"><span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><span class="comment"> *</span></div>
<div class="line"><span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
<div class="line"><span class="comment"> * software distributed under the License is distributed on an</span></div>
<div class="line"><span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
<div class="line"><span class="comment"> * KIND, either express or implied. See the License for the</span></div>
<div class="line"><span class="comment"> * specific language governing permissions and limitations</span></div>
<div class="line"><span class="comment"> * under the License.</span></div>
<div class="line"><span class="comment"> *</span></div>
<div class="line"><span class="comment"> */</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#include &quot;options.hpp&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="container_8hpp.html">proton/container.hpp</a>&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="listen__handler_8hpp.html">proton/listen_handler.hpp</a>&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="listener_8hpp.html">proton/listener.hpp</a>&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="message_8hpp.html">proton/message.hpp</a>&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="message__id_8hpp.html">proton/message_id.hpp</a>&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="messaging__handler_8hpp.html">proton/messaging_handler.hpp</a>&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="sender_8hpp.html">proton/sender.hpp</a>&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="sender__options_8hpp.html">proton/sender_options.hpp</a>&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="source__options_8hpp.html">proton/source_options.hpp</a>&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="tracker_8hpp.html">proton/tracker.hpp</a>&gt;</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;sstream&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;cctype&gt;</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#include &quot;fake_cpp11.hpp&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">class </span>server : <span class="keyword">public</span> <a name="_a0"></a><a class="code" href="classproton_1_1messaging__handler.html">proton::messaging_handler</a> {</div>
<div class="line"> <span class="keyword">private</span>:</div>
<div class="line"> <span class="keyword">class </span>listener_ready_handler : <span class="keyword">public</span> <a name="_a1"></a><a class="code" href="classproton_1_1listen__handler.html">proton::listen_handler</a> {</div>
<div class="line"> <span class="keywordtype">void</span> on_open(<a name="_a2"></a><a class="code" href="classproton_1_1listener.html">proton::listener</a>&amp; l) OVERRIDE {</div>
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;listening on &quot;</span> &lt;&lt; l.<a name="a3"></a><a class="code" href="classproton_1_1listener.html#a0a3b88007d7cb5fa8d890376c5a8b102">port</a>() &lt;&lt; std::endl;</div>
<div class="line"> }</div>
<div class="line"> };</div>
<div class="line"> </div>
<div class="line"> <span class="keyword">typedef</span> std::map&lt;std::string, proton::sender&gt; sender_map;</div>
<div class="line"> listener_ready_handler listen_handler;</div>
<div class="line"> std::string url;</div>
<div class="line"> sender_map senders;</div>
<div class="line"> <span class="keywordtype">int</span> address_counter;</div>
<div class="line"> </div>
<div class="line"> <span class="keyword">public</span>:</div>
<div class="line"> server(<span class="keyword">const</span> std::string &amp;u) : url(u), address_counter(0) {}</div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">void</span> <a name="a4"></a><a class="code" href="classproton_1_1messaging__handler.html#a9188622c33638e076d2214080129c824">on_container_start</a>(<a name="_a5"></a><a class="code" href="classproton_1_1container.html">proton::container</a> &amp;c) OVERRIDE {</div>
<div class="line"> c.<a name="a6"></a><a class="code" href="classproton_1_1container.html#a9e138b28e9589583915cf5c5e0e7a524">listen</a>(url, listen_handler);</div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> std::string to_upper(<span class="keyword">const</span> std::string &amp;s) {</div>
<div class="line"> std::string uc(s);</div>
<div class="line"> <span class="keywordtype">size_t</span> l = uc.size();</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i&lt;l; i++)</div>
<div class="line"> uc[i] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(std::toupper(uc[i]));</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">return</span> uc;</div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> std::string generate_address() {</div>
<div class="line"> std::ostringstream addr;</div>
<div class="line"> addr &lt;&lt; <span class="stringliteral">&quot;server&quot;</span> &lt;&lt; address_counter++;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">return</span> addr.str();</div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">void</span> <a name="a7"></a><a class="code" href="classproton_1_1messaging__handler.html#ac655d56c64574c9eb7b10e80d32764f4">on_sender_open</a>(<a name="_a8"></a><a class="code" href="classproton_1_1sender.html">proton::sender</a> &amp;sender) OVERRIDE {</div>
<div class="line"> <span class="keywordflow">if</span> (sender.<a name="a9"></a><a class="code" href="classproton_1_1sender.html#a91a9e8a9445b29d83dd0514cd76503ae">source</a>().<a name="a10"></a><a class="code" href="classproton_1_1terminus.html#adcc4ef24adb8478230018c519aa636ec">dynamic</a>()) {</div>
<div class="line"> std::string addr = generate_address();</div>
<div class="line"> sender.<a name="a11"></a><a class="code" href="classproton_1_1sender.html#a9e8555112049fc2b4945120b3c45f8ab">open</a>(<a name="_a12"></a><a class="code" href="classproton_1_1sender__options.html">proton::sender_options</a>().source(<a name="_a13"></a><a class="code" href="classproton_1_1source__options.html">proton::source_options</a>().address(addr)));</div>
<div class="line"> senders[addr] = sender;</div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">void</span> <a name="a14"></a><a class="code" href="classproton_1_1messaging__handler.html#a584c9daeadf4322801f58e054017fecb">on_message</a>(<a name="_a15"></a><a class="code" href="classproton_1_1delivery.html">proton::delivery</a> &amp;, <a name="_a16"></a><a class="code" href="classproton_1_1message.html">proton::message</a> &amp;m) OVERRIDE {</div>
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;Received &quot;</span> &lt;&lt; m.<a name="a17"></a><a class="code" href="classproton_1_1message.html#ae9af642f154a68ec0eb8e715ecaf95ae">body</a>() &lt;&lt; std::endl;</div>
<div class="line"> </div>
<div class="line"> std::string reply_to = m.<a name="a18"></a><a class="code" href="classproton_1_1message.html#a4032b495d721bd6d29bfa33ebb8ac5fe">reply_to</a>();</div>
<div class="line"> sender_map::iterator it = senders.find(reply_to);</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (it == senders.end()) {</div>
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;No link for reply_to: &quot;</span> &lt;&lt; reply_to &lt;&lt; std::endl;</div>
<div class="line"> } <span class="keywordflow">else</span> {</div>
<div class="line"> <a class="code" href="classproton_1_1sender.html">proton::sender</a> sender = it-&gt;second;</div>
<div class="line"> <a class="code" href="classproton_1_1message.html">proton::message</a> reply;</div>
<div class="line"> </div>
<div class="line"> reply.<a name="a19"></a><a class="code" href="classproton_1_1message.html#a2fda6a98616365e06f1d4a627d1a58ac">to</a>(reply_to);</div>
<div class="line"> reply.<a class="code" href="classproton_1_1message.html#ae9af642f154a68ec0eb8e715ecaf95ae">body</a>(to_upper(proton::get&lt;std::string&gt;(m.<a class="code" href="classproton_1_1message.html#ae9af642f154a68ec0eb8e715ecaf95ae">body</a>())));</div>
<div class="line"> reply.<a name="a20"></a><a class="code" href="classproton_1_1message.html#ad159656f1742235cd22a9c6aaabf9d2d">correlation_id</a>(m.<a class="code" href="classproton_1_1message.html#ad159656f1742235cd22a9c6aaabf9d2d">correlation_id</a>());</div>
<div class="line"> </div>
<div class="line"> sender.<a name="a21"></a><a class="code" href="classproton_1_1sender.html#a214eb30b24e6831d016a47b9dddda830">send</a>(reply);</div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">};</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
<div class="line"> std::string address(<span class="stringliteral">&quot;amqp://127.0.0.1:5672/examples&quot;</span>);</div>
<div class="line"> example::options opts(argc, argv);</div>
<div class="line"> </div>
<div class="line"> opts.add_value(address, <span class="charliteral">&#39;a&#39;</span>, <span class="stringliteral">&quot;address&quot;</span>, <span class="stringliteral">&quot;listen on URL&quot;</span>, <span class="stringliteral">&quot;URL&quot;</span>);</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">try</span> {</div>
<div class="line"> opts.parse();</div>
<div class="line"> </div>
<div class="line"> server srv(address);</div>
<div class="line"> <a class="code" href="classproton_1_1container.html">proton::container</a>(srv).<a name="a22"></a><a class="code" href="classproton_1_1container.html#a13a43e6d814de94978c515cb084873b1">run</a>();</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">return</span> 0;</div>
<div class="line"> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> example::bad_option&amp; e) {</div>
<div class="line"> std::cout &lt;&lt; opts &lt;&lt; std::endl &lt;&lt; e.what() &lt;&lt; std::endl;</div>
<div class="line"> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {</div>
<div class="line"> std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;</div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">return</span> 1;</div>
<div class="line">}</div>
</div><!-- fragment --> </div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="alistener_8hpp_html"><div class="ttname"><a href="listener_8hpp.html">listener.hpp</a></div><div class="ttdoc">A listener for incoming connections.</div></div>
<div class="ttc" id="amessaging__handler_8hpp_html"><div class="ttname"><a href="messaging__handler_8hpp.html">messaging_handler.hpp</a></div><div class="ttdoc">Handler for Proton messaging events.</div></div>
<div class="ttc" id="amessage_8hpp_html"><div class="ttname"><a href="message_8hpp.html">message.hpp</a></div><div class="ttdoc">An AMQP message.</div></div>
<div class="ttc" id="atracker_8hpp_html"><div class="ttname"><a href="tracker_8hpp.html">tracker.hpp</a></div><div class="ttdoc">A tracker for a sent message.</div></div>
<div class="ttc" id="aclassproton_1_1source__options_html"><div class="ttname"><a href="classproton_1_1source__options.html">proton::source_options</a></div><div class="ttdoc">Options for creating a source node for a sender or receiver.</div><div class="ttdef"><b>Definition:</b> source_options.hpp:44</div></div>
<div class="ttc" id="aclassproton_1_1listener_html"><div class="ttname"><a href="classproton_1_1listener.html">proton::listener</a></div><div class="ttdoc">A listener for incoming connections.</div><div class="ttdef"><b>Definition:</b> listener.hpp:33</div></div>
<div class="ttc" id="aclassproton_1_1container_html"><div class="ttname"><a href="classproton_1_1container.html">proton::container</a></div><div class="ttdoc">A top-level container of connections, sessions, and links.</div><div class="ttdef"><b>Definition:</b> container.hpp:50</div></div>
<div class="ttc" id="aclassproton_1_1messaging__handler_html_a9188622c33638e076d2214080129c824"><div class="ttname"><a href="classproton_1_1messaging__handler.html#a9188622c33638e076d2214080129c824">proton::messaging_handler::on_container_start</a></div><div class="ttdeci">virtual void on_container_start(container &amp;)</div><div class="ttdoc">The container event loop is starting.</div></div>
<div class="ttc" id="aclassproton_1_1terminus_html_adcc4ef24adb8478230018c519aa636ec"><div class="ttname"><a href="classproton_1_1terminus.html#adcc4ef24adb8478230018c519aa636ec">proton::terminus::dynamic</a></div><div class="ttdeci">bool dynamic() const</div><div class="ttdoc">True if the remote node is created dynamically.</div></div>
<div class="ttc" id="aclassproton_1_1container_html_a9e138b28e9589583915cf5c5e0e7a524"><div class="ttname"><a href="classproton_1_1container.html#a9e138b28e9589583915cf5c5e0e7a524">proton::container::listen</a></div><div class="ttdeci">listener listen(const std::string &amp;listen_url, listen_handler &amp;handler)</div><div class="ttdoc">Listen for new connections on listen_url.</div></div>
<div class="ttc" id="aclassproton_1_1messaging__handler_html_a584c9daeadf4322801f58e054017fecb"><div class="ttname"><a href="classproton_1_1messaging__handler.html#a584c9daeadf4322801f58e054017fecb">proton::messaging_handler::on_message</a></div><div class="ttdeci">virtual void on_message(delivery &amp;, message &amp;)</div><div class="ttdoc">A message is received.</div></div>
<div class="ttc" id="aclassproton_1_1delivery_html"><div class="ttname"><a href="classproton_1_1delivery.html">proton::delivery</a></div><div class="ttdoc">A received message.</div><div class="ttdef"><b>Definition:</b> delivery.hpp:39</div></div>
<div class="ttc" id="alisten__handler_8hpp_html"><div class="ttname"><a href="listen__handler_8hpp.html">listen_handler.hpp</a></div><div class="ttdoc">Unsettled API - A handler for incoming connections.</div></div>
<div class="ttc" id="aclassproton_1_1sender__options_html"><div class="ttname"><a href="classproton_1_1sender__options.html">proton::sender_options</a></div><div class="ttdoc">Options for creating a sender.</div><div class="ttdef"><b>Definition:</b> sender_options.hpp:57</div></div>
<div class="ttc" id="asender_8hpp_html"><div class="ttname"><a href="sender_8hpp.html">sender.hpp</a></div><div class="ttdoc">A channel for sending messages.</div></div>
<div class="ttc" id="aclassproton_1_1sender_html_a214eb30b24e6831d016a47b9dddda830"><div class="ttname"><a href="classproton_1_1sender.html#a214eb30b24e6831d016a47b9dddda830">proton::sender::send</a></div><div class="ttdeci">tracker send(const message &amp;m)</div><div class="ttdoc">Send a message on the sender.</div></div>
<div class="ttc" id="aclassproton_1_1sender_html_a91a9e8a9445b29d83dd0514cd76503ae"><div class="ttname"><a href="classproton_1_1sender.html#a91a9e8a9445b29d83dd0514cd76503ae">proton::sender::source</a></div><div class="ttdeci">class source source() const</div><div class="ttdoc">Get the source node.</div></div>
<div class="ttc" id="aclassproton_1_1messaging__handler_html"><div class="ttname"><a href="classproton_1_1messaging__handler.html">proton::messaging_handler</a></div><div class="ttdoc">Handler for Proton messaging events.</div><div class="ttdef"><b>Definition:</b> messaging_handler.hpp:69</div></div>
<div class="ttc" id="asender__options_8hpp_html"><div class="ttname"><a href="sender__options_8hpp.html">sender_options.hpp</a></div><div class="ttdoc">Options for creating a sender.</div></div>
<div class="ttc" id="aclassproton_1_1message_html_ad159656f1742235cd22a9c6aaabf9d2d"><div class="ttname"><a href="classproton_1_1message.html#ad159656f1742235cd22a9c6aaabf9d2d">proton::message::correlation_id</a></div><div class="ttdeci">void correlation_id(const message_id &amp;)</div><div class="ttdoc">Set the ID for matching related messages.</div></div>
<div class="ttc" id="aclassproton_1_1sender_html"><div class="ttname"><a href="classproton_1_1sender.html">proton::sender</a></div><div class="ttdoc">A channel for sending messages.</div><div class="ttdef"><b>Definition:</b> sender.hpp:40</div></div>
<div class="ttc" id="asource__options_8hpp_html"><div class="ttname"><a href="source__options_8hpp.html">source_options.hpp</a></div><div class="ttdoc">Options for creating a source node for a sender or receiver.</div></div>
<div class="ttc" id="aclassproton_1_1listener_html_a0a3b88007d7cb5fa8d890376c5a8b102"><div class="ttname"><a href="classproton_1_1listener.html#a0a3b88007d7cb5fa8d890376c5a8b102">proton::listener::port</a></div><div class="ttdeci">int port()</div><div class="ttdoc">Unsettedled API</div></div>
<div class="ttc" id="aclassproton_1_1listen__handler_html"><div class="ttname"><a href="classproton_1_1listen__handler.html">proton::listen_handler</a></div><div class="ttdoc">Unsettled API - A handler for incoming connections.</div><div class="ttdef"><b>Definition:</b> listen_handler.hpp:39</div></div>
<div class="ttc" id="amessage__id_8hpp_html"><div class="ttname"><a href="message__id_8hpp.html">message_id.hpp</a></div><div class="ttdoc">An AMQP message ID.</div></div>
<div class="ttc" id="aclassproton_1_1message_html_ae9af642f154a68ec0eb8e715ecaf95ae"><div class="ttname"><a href="classproton_1_1message.html#ae9af642f154a68ec0eb8e715ecaf95ae">proton::message::body</a></div><div class="ttdeci">void body(const value &amp;x)</div><div class="ttdoc">Set the body. Equivalent to body() = x.</div></div>
<div class="ttc" id="aclassproton_1_1message_html_a4032b495d721bd6d29bfa33ebb8ac5fe"><div class="ttname"><a href="classproton_1_1message.html#a4032b495d721bd6d29bfa33ebb8ac5fe">proton::message::reply_to</a></div><div class="ttdeci">void reply_to(const std::string &amp;)</div><div class="ttdoc">Set the address for replies.</div></div>
<div class="ttc" id="aclassproton_1_1messaging__handler_html_ac655d56c64574c9eb7b10e80d32764f4"><div class="ttname"><a href="classproton_1_1messaging__handler.html#ac655d56c64574c9eb7b10e80d32764f4">proton::messaging_handler::on_sender_open</a></div><div class="ttdeci">virtual void on_sender_open(sender &amp;)</div><div class="ttdoc">The remote peer opened the link.</div></div>
<div class="ttc" id="aclassproton_1_1container_html_a13a43e6d814de94978c515cb084873b1"><div class="ttname"><a href="classproton_1_1container.html#a13a43e6d814de94978c515cb084873b1">proton::container::run</a></div><div class="ttdeci">void run()</div><div class="ttdoc">Run the container in the current thread.</div></div>
<div class="ttc" id="acontainer_8hpp_html"><div class="ttname"><a href="container_8hpp.html">container.hpp</a></div><div class="ttdoc">A top-level container of connections, sessions, and links.</div></div>
<div class="ttc" id="aclassproton_1_1message_html_a2fda6a98616365e06f1d4a627d1a58ac"><div class="ttname"><a href="classproton_1_1message.html#a2fda6a98616365e06f1d4a627d1a58ac">proton::message::to</a></div><div class="ttdeci">void to(const std::string &amp;)</div><div class="ttdoc">Set the destination address.</div></div>
<div class="ttc" id="aclassproton_1_1message_html"><div class="ttname"><a href="classproton_1_1message.html">proton::message</a></div><div class="ttdoc">An AMQP message.</div><div class="ttdef"><b>Definition:</b> message.hpp:50</div></div>
<div class="ttc" id="aclassproton_1_1sender_html_a9e8555112049fc2b4945120b3c45f8ab"><div class="ttname"><a href="classproton_1_1sender.html#a9e8555112049fc2b4945120b3c45f8ab">proton::sender::open</a></div><div class="ttdeci">void open()</div><div class="ttdoc">Open the sender.</div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>