blob: 0b9feaca10495d823edbc6c2e023438ae0279b64 [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: messaging_handler</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('classproton_1_1messaging__handler.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="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classproton_1_1messaging__handler-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">messaging_handler</div> </div>
</div><!--header-->
<div class="contents">
<p>Handler for Proton messaging events.
<a href="classproton_1_1messaging__handler.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="messaging__handler_8hpp_source.html">messaging_handler.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9188622c33638e076d2214080129c824"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a9188622c33638e076d2214080129c824">on_container_start</a> (<a class="el" href="classproton_1_1container.html">container</a> &amp;)</td></tr>
<tr class="memdesc:a9188622c33638e076d2214080129c824"><td class="mdescLeft">&#160;</td><td class="mdescRight">The container event loop is starting. <a href="classproton_1_1messaging__handler.html#a9188622c33638e076d2214080129c824">More...</a><br /></td></tr>
<tr class="separator:a9188622c33638e076d2214080129c824"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6a0a8d9aad83b7e5a5b2f8a70f23c90"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#ac6a0a8d9aad83b7e5a5b2f8a70f23c90">on_container_stop</a> (<a class="el" href="classproton_1_1container.html">container</a> &amp;)</td></tr>
<tr class="memdesc:ac6a0a8d9aad83b7e5a5b2f8a70f23c90"><td class="mdescLeft">&#160;</td><td class="mdescRight">The container event loop is stopping. <a href="classproton_1_1messaging__handler.html#ac6a0a8d9aad83b7e5a5b2f8a70f23c90">More...</a><br /></td></tr>
<tr class="separator:ac6a0a8d9aad83b7e5a5b2f8a70f23c90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a584c9daeadf4322801f58e054017fecb"><td class="memItemLeft" align="right" valign="top"><a id="a584c9daeadf4322801f58e054017fecb"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a584c9daeadf4322801f58e054017fecb">on_message</a> (<a class="el" href="classproton_1_1delivery.html">delivery</a> &amp;, <a class="el" href="classproton_1_1message.html">message</a> &amp;)</td></tr>
<tr class="memdesc:a584c9daeadf4322801f58e054017fecb"><td class="mdescLeft">&#160;</td><td class="mdescRight">A message is received. <br /></td></tr>
<tr class="separator:a584c9daeadf4322801f58e054017fecb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86c9509ba3ce1925150c5b7a9a937c94"><td class="memItemLeft" align="right" valign="top"><a id="a86c9509ba3ce1925150c5b7a9a937c94"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a86c9509ba3ce1925150c5b7a9a937c94">on_sendable</a> (<a class="el" href="classproton_1_1sender.html">sender</a> &amp;)</td></tr>
<tr class="memdesc:a86c9509ba3ce1925150c5b7a9a937c94"><td class="mdescLeft">&#160;</td><td class="mdescRight">A message can be sent. <br /></td></tr>
<tr class="separator:a86c9509ba3ce1925150c5b7a9a937c94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa68ce0021c22cc956890c6bcc5384b84"><td class="memItemLeft" align="right" valign="top"><a id="aa68ce0021c22cc956890c6bcc5384b84"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#aa68ce0021c22cc956890c6bcc5384b84">on_transport_open</a> (<a class="el" href="classproton_1_1transport.html">transport</a> &amp;)</td></tr>
<tr class="memdesc:aa68ce0021c22cc956890c6bcc5384b84"><td class="mdescLeft">&#160;</td><td class="mdescRight">The underlying network transport is open. <br /></td></tr>
<tr class="separator:aa68ce0021c22cc956890c6bcc5384b84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a60c2f6628f44a9587deea8c8729f0f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a8a60c2f6628f44a9587deea8c8729f0f">on_transport_close</a> (<a class="el" href="classproton_1_1transport.html">transport</a> &amp;)</td></tr>
<tr class="memdesc:a8a60c2f6628f44a9587deea8c8729f0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The final event for a connection: there will be no more reconnect attempts and no more event functions. <a href="classproton_1_1messaging__handler.html#a8a60c2f6628f44a9587deea8c8729f0f">More...</a><br /></td></tr>
<tr class="separator:a8a60c2f6628f44a9587deea8c8729f0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab719e98555bab69986acf4ab1fe43665"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#ab719e98555bab69986acf4ab1fe43665">on_transport_error</a> (<a class="el" href="classproton_1_1transport.html">transport</a> &amp;)</td></tr>
<tr class="memdesc:ab719e98555bab69986acf4ab1fe43665"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unexpected disconnect, <a class="el" href="classproton_1_1transport.html#a090a10fab22d7faf0f74c8ccda0f1470" title="Get the error condition.">transport::error()</a> provides details; if <a class="el" href="classproton_1_1reconnect__options.html">reconnect_options</a> are enabled there may be an automatic re-connect. <a href="classproton_1_1messaging__handler.html#ab719e98555bab69986acf4ab1fe43665">More...</a><br /></td></tr>
<tr class="separator:ab719e98555bab69986acf4ab1fe43665"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41277abe0e33a3df2764b08dcc12d768"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a41277abe0e33a3df2764b08dcc12d768">on_connection_open</a> (<a class="el" href="classproton_1_1connection.html">connection</a> &amp;)</td></tr>
<tr class="memdesc:a41277abe0e33a3df2764b08dcc12d768"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer opened the connection: called once on initial open, and again on each successful automatic re-connect (see <a class="el" href="classproton_1_1reconnect__options.html">reconnect_options</a>) <a href="classproton_1_1messaging__handler.html#a41277abe0e33a3df2764b08dcc12d768">More...</a><br /></td></tr>
<tr class="separator:a41277abe0e33a3df2764b08dcc12d768"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8368c2f41b5c1dab4aa063c1c78a6e19"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a8368c2f41b5c1dab4aa063c1c78a6e19">on_connection_close</a> (<a class="el" href="classproton_1_1connection.html">connection</a> &amp;)</td></tr>
<tr class="memdesc:a8368c2f41b5c1dab4aa063c1c78a6e19"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer closed the connection. <a href="classproton_1_1messaging__handler.html#a8368c2f41b5c1dab4aa063c1c78a6e19">More...</a><br /></td></tr>
<tr class="separator:a8368c2f41b5c1dab4aa063c1c78a6e19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae93110a9bad4868663f37d15cd3139a4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#ae93110a9bad4868663f37d15cd3139a4">on_connection_error</a> (<a class="el" href="classproton_1_1connection.html">connection</a> &amp;)</td></tr>
<tr class="memdesc:ae93110a9bad4868663f37d15cd3139a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer indicated a fatal error, <a class="el" href="classproton_1_1connection.html#a090a10fab22d7faf0f74c8ccda0f1470" title="Get the error condition of the remote endpoint.">connection::error()</a> provides details. <a href="classproton_1_1messaging__handler.html#ae93110a9bad4868663f37d15cd3139a4">More...</a><br /></td></tr>
<tr class="separator:ae93110a9bad4868663f37d15cd3139a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad43a0028727310bcdbd8f63feb99537"><td class="memItemLeft" align="right" valign="top"><a id="aad43a0028727310bcdbd8f63feb99537"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#aad43a0028727310bcdbd8f63feb99537">on_session_open</a> (<a class="el" href="classproton_1_1session.html">session</a> &amp;)</td></tr>
<tr class="memdesc:aad43a0028727310bcdbd8f63feb99537"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer opened the session. <br /></td></tr>
<tr class="separator:aad43a0028727310bcdbd8f63feb99537"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3ff10317b9fdcbe00e500cb1e9c96ec"><td class="memItemLeft" align="right" valign="top"><a id="aa3ff10317b9fdcbe00e500cb1e9c96ec"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#aa3ff10317b9fdcbe00e500cb1e9c96ec">on_session_close</a> (<a class="el" href="classproton_1_1session.html">session</a> &amp;)</td></tr>
<tr class="memdesc:aa3ff10317b9fdcbe00e500cb1e9c96ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer closed the session. <br /></td></tr>
<tr class="separator:aa3ff10317b9fdcbe00e500cb1e9c96ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63bb630e8dc357b22d6c33781c7c6a11"><td class="memItemLeft" align="right" valign="top"><a id="a63bb630e8dc357b22d6c33781c7c6a11"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a63bb630e8dc357b22d6c33781c7c6a11">on_session_error</a> (<a class="el" href="classproton_1_1session.html">session</a> &amp;)</td></tr>
<tr class="memdesc:a63bb630e8dc357b22d6c33781c7c6a11"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer closed the session with an error condition. <br /></td></tr>
<tr class="separator:a63bb630e8dc357b22d6c33781c7c6a11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77f7e38659ee43ccb764e417ad6dd401"><td class="memItemLeft" align="right" valign="top"><a id="a77f7e38659ee43ccb764e417ad6dd401"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a77f7e38659ee43ccb764e417ad6dd401">on_receiver_open</a> (<a class="el" href="classproton_1_1receiver.html">receiver</a> &amp;)</td></tr>
<tr class="memdesc:a77f7e38659ee43ccb764e417ad6dd401"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer opened the link. <br /></td></tr>
<tr class="separator:a77f7e38659ee43ccb764e417ad6dd401"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06b10fbf8524545eaf88def91d7235ef"><td class="memItemLeft" align="right" valign="top"><a id="a06b10fbf8524545eaf88def91d7235ef"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a06b10fbf8524545eaf88def91d7235ef">on_receiver_detach</a> (<a class="el" href="classproton_1_1receiver.html">receiver</a> &amp;)</td></tr>
<tr class="memdesc:a06b10fbf8524545eaf88def91d7235ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer detached the link. <br /></td></tr>
<tr class="separator:a06b10fbf8524545eaf88def91d7235ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51075d0f1d0c180bc8098370957ae28"><td class="memItemLeft" align="right" valign="top"><a id="ae51075d0f1d0c180bc8098370957ae28"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#ae51075d0f1d0c180bc8098370957ae28">on_receiver_close</a> (<a class="el" href="classproton_1_1receiver.html">receiver</a> &amp;)</td></tr>
<tr class="memdesc:ae51075d0f1d0c180bc8098370957ae28"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer closed the link. <br /></td></tr>
<tr class="separator:ae51075d0f1d0c180bc8098370957ae28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0daca9ec2dc45353a04069c6a12f3aa"><td class="memItemLeft" align="right" valign="top"><a id="ac0daca9ec2dc45353a04069c6a12f3aa"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#ac0daca9ec2dc45353a04069c6a12f3aa">on_receiver_error</a> (<a class="el" href="classproton_1_1receiver.html">receiver</a> &amp;)</td></tr>
<tr class="memdesc:ac0daca9ec2dc45353a04069c6a12f3aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer closed the link with an error condition. <br /></td></tr>
<tr class="separator:ac0daca9ec2dc45353a04069c6a12f3aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac655d56c64574c9eb7b10e80d32764f4"><td class="memItemLeft" align="right" valign="top"><a id="ac655d56c64574c9eb7b10e80d32764f4"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#ac655d56c64574c9eb7b10e80d32764f4">on_sender_open</a> (<a class="el" href="classproton_1_1sender.html">sender</a> &amp;)</td></tr>
<tr class="memdesc:ac655d56c64574c9eb7b10e80d32764f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer opened the link. <br /></td></tr>
<tr class="separator:ac655d56c64574c9eb7b10e80d32764f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae103f0e8f35a8aebfb14b96c298ed938"><td class="memItemLeft" align="right" valign="top"><a id="ae103f0e8f35a8aebfb14b96c298ed938"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#ae103f0e8f35a8aebfb14b96c298ed938">on_sender_detach</a> (<a class="el" href="classproton_1_1sender.html">sender</a> &amp;)</td></tr>
<tr class="memdesc:ae103f0e8f35a8aebfb14b96c298ed938"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer detached the link. <br /></td></tr>
<tr class="separator:ae103f0e8f35a8aebfb14b96c298ed938"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa604b2d3dad610ded346b0dcf3ec6f29"><td class="memItemLeft" align="right" valign="top"><a id="aa604b2d3dad610ded346b0dcf3ec6f29"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#aa604b2d3dad610ded346b0dcf3ec6f29">on_sender_close</a> (<a class="el" href="classproton_1_1sender.html">sender</a> &amp;)</td></tr>
<tr class="memdesc:aa604b2d3dad610ded346b0dcf3ec6f29"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer closed the link. <br /></td></tr>
<tr class="separator:aa604b2d3dad610ded346b0dcf3ec6f29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2347cff02f9ed958ca41fcc31e58d792"><td class="memItemLeft" align="right" valign="top"><a id="a2347cff02f9ed958ca41fcc31e58d792"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a2347cff02f9ed958ca41fcc31e58d792">on_sender_error</a> (<a class="el" href="classproton_1_1sender.html">sender</a> &amp;)</td></tr>
<tr class="memdesc:a2347cff02f9ed958ca41fcc31e58d792"><td class="mdescLeft">&#160;</td><td class="mdescRight">The remote peer closed the link with an error condition. <br /></td></tr>
<tr class="separator:a2347cff02f9ed958ca41fcc31e58d792"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e61812588fe6fbde253b41f7c02e993"><td class="memItemLeft" align="right" valign="top"><a id="a4e61812588fe6fbde253b41f7c02e993"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a4e61812588fe6fbde253b41f7c02e993">on_tracker_accept</a> (<a class="el" href="classproton_1_1tracker.html">tracker</a> &amp;)</td></tr>
<tr class="memdesc:a4e61812588fe6fbde253b41f7c02e993"><td class="mdescLeft">&#160;</td><td class="mdescRight">The receiving peer accepted a transfer. <br /></td></tr>
<tr class="separator:a4e61812588fe6fbde253b41f7c02e993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a116c831b8a80727a451ce20c44d781f8"><td class="memItemLeft" align="right" valign="top"><a id="a116c831b8a80727a451ce20c44d781f8"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a116c831b8a80727a451ce20c44d781f8">on_tracker_reject</a> (<a class="el" href="classproton_1_1tracker.html">tracker</a> &amp;)</td></tr>
<tr class="memdesc:a116c831b8a80727a451ce20c44d781f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The receiving peer rejected a transfer. <br /></td></tr>
<tr class="separator:a116c831b8a80727a451ce20c44d781f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad107964511dce62449ca730e9b0aca88"><td class="memItemLeft" align="right" valign="top"><a id="ad107964511dce62449ca730e9b0aca88"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#ad107964511dce62449ca730e9b0aca88">on_tracker_release</a> (<a class="el" href="classproton_1_1tracker.html">tracker</a> &amp;)</td></tr>
<tr class="memdesc:ad107964511dce62449ca730e9b0aca88"><td class="mdescLeft">&#160;</td><td class="mdescRight">The receiving peer released a transfer. <br /></td></tr>
<tr class="separator:ad107964511dce62449ca730e9b0aca88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36620e631024c73f5c6766abf95a8356"><td class="memItemLeft" align="right" valign="top"><a id="a36620e631024c73f5c6766abf95a8356"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a36620e631024c73f5c6766abf95a8356">on_tracker_settle</a> (<a class="el" href="classproton_1_1tracker.html">tracker</a> &amp;)</td></tr>
<tr class="memdesc:a36620e631024c73f5c6766abf95a8356"><td class="mdescLeft">&#160;</td><td class="mdescRight">The receiving peer settled a transfer. <br /></td></tr>
<tr class="separator:a36620e631024c73f5c6766abf95a8356"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f0e5cebf65a87f301ba5ef82eb8537d"><td class="memItemLeft" align="right" valign="top"><a id="a4f0e5cebf65a87f301ba5ef82eb8537d"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a4f0e5cebf65a87f301ba5ef82eb8537d">on_delivery_settle</a> (<a class="el" href="classproton_1_1delivery.html">delivery</a> &amp;)</td></tr>
<tr class="memdesc:a4f0e5cebf65a87f301ba5ef82eb8537d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The sending peer settled a transfer. <br /></td></tr>
<tr class="separator:a4f0e5cebf65a87f301ba5ef82eb8537d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac07a9aab7eee64a7415f1cacc278344b"><td class="memItemLeft" align="right" valign="top"><a id="ac07a9aab7eee64a7415f1cacc278344b"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#ac07a9aab7eee64a7415f1cacc278344b">on_sender_drain_start</a> (<a class="el" href="classproton_1_1sender.html">sender</a> &amp;)</td></tr>
<tr class="memdesc:ac07a9aab7eee64a7415f1cacc278344b"><td class="mdescLeft">&#160;</td><td class="mdescRight"><b>Unsettled API</b> - The receiving peer has requested a drain of remaining credit. <br /></td></tr>
<tr class="separator:ac07a9aab7eee64a7415f1cacc278344b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c3ba013a3515fd3d0a1871c984e497e"><td class="memItemLeft" align="right" valign="top"><a id="a0c3ba013a3515fd3d0a1871c984e497e"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a0c3ba013a3515fd3d0a1871c984e497e">on_receiver_drain_finish</a> (<a class="el" href="classproton_1_1receiver.html">receiver</a> &amp;)</td></tr>
<tr class="memdesc:a0c3ba013a3515fd3d0a1871c984e497e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><b>Unsettled API</b> - The credit outstanding at the time of the drain request has been consumed or returned. <br /></td></tr>
<tr class="separator:a0c3ba013a3515fd3d0a1871c984e497e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29bfba2d26604e5d8d7f3183f1374481"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a29bfba2d26604e5d8d7f3183f1374481">on_connection_wake</a> (<a class="el" href="classproton_1_1connection.html">connection</a> &amp;)</td></tr>
<tr class="memdesc:a29bfba2d26604e5d8d7f3183f1374481"><td class="mdescLeft">&#160;</td><td class="mdescRight"><b>Unsettled API</b> - An event that can be triggered from another thread. <a href="classproton_1_1messaging__handler.html#a29bfba2d26604e5d8d7f3183f1374481">More...</a><br /></td></tr>
<tr class="separator:a29bfba2d26604e5d8d7f3183f1374481"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a042f595d1807eb1abe0195ab79357edd"><td class="memItemLeft" align="right" valign="top"><a id="a042f595d1807eb1abe0195ab79357edd"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classproton_1_1messaging__handler.html#a042f595d1807eb1abe0195ab79357edd">on_error</a> (const <a class="el" href="classproton_1_1error__condition.html">error_condition</a> &amp;)</td></tr>
<tr class="memdesc:a042f595d1807eb1abe0195ab79357edd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fallback error handling. <br /></td></tr>
<tr class="separator:a042f595d1807eb1abe0195ab79357edd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Handler for Proton messaging events. </p>
<p>Subclass and override the event-handling member functions.</p>
<p><b>Thread-safety</b>: A thread-safe handler can use the objects passed as arguments, and other objects belonging to the same <a class="el" href="classproton_1_1connection.html" title="A connection to a remote AMQP peer.">proton::connection</a>. It <em>must not</em> use objects belonging to a different connection. See <a class="el" href="mt_page.html">Multithreading</a> and <a class="el" href="classproton_1_1work__queue.html" title="Unsettled API - A context for thread-safe execution of work.">proton::work_queue</a> for safe ways to communicate between connections. Thread-safe handlers can also be used in single-threaded code.</p>
<p><b>Single-threaded only</b>: An application is single-threaded if it calls <a class="el" href="classproton_1_1container.html#a13a43e6d814de94978c515cb084873b1" title="Run the container in the current thread.">container::run()</a> exactly once, and only makes make proton calls from handler functions. Single-threaded handler functions can use objects belonging to another connection, but <em>must</em> call <a class="el" href="classproton_1_1connection.html#a473371542eaeba6f67660582fe6a6074" title="Unsettled API - Trigger an event from another thread.">connection::wake()</a> on the other connection before returning. Such a handler is not thread-safe.</p>
<h3><a class="anchor" id="autotoc_md0"></a>
Overview of connection life-cycle and automatic re-connect</h3>
<p>See the documentation of individual event functions for more details.</p>
<p><a class="el" href="classproton_1_1messaging__handler.html#a41277abe0e33a3df2764b08dcc12d768" title="The remote peer opened the connection: called once on initial open, and again on each successful auto...">on_connection_open()</a> - The remote peer opened the connection: called once on initial open, and again on each successful automatic re-connect (see <a class="el" href="classproton_1_1reconnect__options.html">reconnect_options</a>)</p>
<p><a class="el" href="classproton_1_1messaging__handler.html#ab719e98555bab69986acf4ab1fe43665" title="Unexpected disconnect, transport::error() provides details; if reconnect_options are enabled there ma...">on_transport_error()</a> -Unexpected disconnect, <a class="el" href="classproton_1_1transport.html#a090a10fab22d7faf0f74c8ccda0f1470" title="Get the error condition.">transport::error()</a> provides details; if <a class="el" href="classproton_1_1reconnect__options.html">reconnect_options</a> are enabled there may be an automatic re-connect.</p>
<p><a class="el" href="classproton_1_1messaging__handler.html#ae93110a9bad4868663f37d15cd3139a4" title="The remote peer indicated a fatal error, connection::error() provides details.">on_connection_error()</a> - The remote peer indicated a fatal error, <a class="el" href="classproton_1_1connection.html#a090a10fab22d7faf0f74c8ccda0f1470" title="Get the error condition of the remote endpoint.">connection::error()</a> provides details.</p>
<p><a class="el" href="classproton_1_1messaging__handler.html#a8368c2f41b5c1dab4aa063c1c78a6e19" title="The remote peer closed the connection.">on_connection_close()</a> - The remote peer closed the connection.</p>
<p><a class="el" href="classproton_1_1messaging__handler.html#a8a60c2f6628f44a9587deea8c8729f0f" title="The final event for a connection: there will be no more reconnect attempts and no more event function...">on_transport_close()</a> - The final event for a connection: there will be no more reconnect attempts and no more event functions.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classproton_1_1reconnect__options.html" title="Unsettled API - Options for reconnect and failover after connection loss.">reconnect_options</a> </dd></dl>
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="broker_8cpp-example.html#_a0">broker.cpp</a>, <a class="el" href="client_8cpp-example.html#_a2">client.cpp</a>, <a class="el" href="direct_recv_8cpp-example.html#_a0">direct_recv.cpp</a>, <a class="el" href="direct_send_8cpp-example.html#_a0">direct_send.cpp</a>, <a class="el" href="helloworld_8cpp-example.html#_a0">helloworld.cpp</a>, <a class="el" href="multithreaded_client_8cpp-example.html#_a0">multithreaded_client.cpp</a>, <a class="el" href="multithreaded_client_flow_control_8cpp-example.html#_a0">multithreaded_client_flow_control.cpp</a>, <a class="el" href="scheduled_send_8cpp-example.html#_a0">scheduled_send.cpp</a>, <a class="el" href="scheduled_send_03_8cpp-example.html#_a0">scheduled_send_03.cpp</a>, <a class="el" href="server_8cpp-example.html#_a0">server.cpp</a>, <a class="el" href="server_direct_8cpp-example.html#_a0">server_direct.cpp</a>, <a class="el" href="service_bus_8cpp-example.html#_a5">service_bus.cpp</a>, <a class="el" href="simple_recv_8cpp-example.html#_a0">simple_recv.cpp</a>, and <a class="el" href="simple_send_8cpp-example.html#_a0">simple_send.cpp</a>.</dd>
</dl>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a9188622c33638e076d2214080129c824"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9188622c33638e076d2214080129c824">&#9670;&nbsp;</a></span>on_container_start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void on_container_start </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classproton_1_1container.html">container</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The container event loop is starting. </p>
<p>This is the first event received after calling <code><a class="el" href="classproton_1_1container.html#a13a43e6d814de94978c515cb084873b1" title="Run the container in the current thread.">container::run()</a></code>. </p>
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="client_8cpp-example.html#a5">client.cpp</a>, <a class="el" href="direct_recv_8cpp-example.html#a4">direct_recv.cpp</a>, <a class="el" href="direct_send_8cpp-example.html#a4">direct_send.cpp</a>, <a class="el" href="helloworld_8cpp-example.html#a1">helloworld.cpp</a>, <a class="el" href="multithreaded_client_8cpp-example.html#a7">multithreaded_client.cpp</a>, <a class="el" href="scheduled_send_8cpp-example.html#a5">scheduled_send.cpp</a>, <a class="el" href="scheduled_send_03_8cpp-example.html#a4">scheduled_send_03.cpp</a>, <a class="el" href="server_8cpp-example.html#a2">server.cpp</a>, <a class="el" href="server_direct_8cpp-example.html#a4">server_direct.cpp</a>, <a class="el" href="service_bus_8cpp-example.html#a35">service_bus.cpp</a>, <a class="el" href="simple_recv_8cpp-example.html#a2">simple_recv.cpp</a>, and <a class="el" href="simple_send_8cpp-example.html#a2">simple_send.cpp</a>.</dd>
</dl>
</div>
</div>
<a id="ac6a0a8d9aad83b7e5a5b2f8a70f23c90"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6a0a8d9aad83b7e5a5b2f8a70f23c90">&#9670;&nbsp;</a></span>on_container_stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void on_container_stop </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classproton_1_1container.html">container</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The container event loop is stopping. </p>
<p>This is the last event received before the container event loop stops. </p>
</div>
</div>
<a id="a8a60c2f6628f44a9587deea8c8729f0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a60c2f6628f44a9587deea8c8729f0f">&#9670;&nbsp;</a></span>on_transport_close()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void on_transport_close </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classproton_1_1transport.html">transport</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The final event for a connection: there will be no more reconnect attempts and no more event functions. </p>
<p>Called exactly once regardless of how many times the connection was re-connected, whether it failed due to transport or connection errors or was closed without error.</p>
<p>This is a good place to do per-connection clean-up. <a class="el" href="classproton_1_1transport.html#aff302bb6016f2ae29f01bb4e07389a52" title="Get the connection associated with this transport.">transport::connection()</a> is always valid at this point. </p>
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="broker_8cpp-example.html#a29">broker.cpp</a>, <a class="el" href="direct_send_8cpp-example.html#a19">direct_send.cpp</a>, and <a class="el" href="simple_send_8cpp-example.html#a21">simple_send.cpp</a>.</dd>
</dl>
</div>
</div>
<a id="ab719e98555bab69986acf4ab1fe43665"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab719e98555bab69986acf4ab1fe43665">&#9670;&nbsp;</a></span>on_transport_error()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void on_transport_error </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classproton_1_1transport.html">transport</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unexpected disconnect, <a class="el" href="classproton_1_1transport.html#a090a10fab22d7faf0f74c8ccda0f1470" title="Get the error condition.">transport::error()</a> provides details; if <a class="el" href="classproton_1_1reconnect__options.html">reconnect_options</a> are enabled there may be an automatic re-connect. </p>
<p>If there is a successful automatic reconnect, <a class="el" href="classproton_1_1messaging__handler.html#a41277abe0e33a3df2764b08dcc12d768" title="The remote peer opened the connection: called once on initial open, and again on each successful auto...">on_connection_open()</a> will be called again.</p>
<p><a class="el" href="classproton_1_1transport.html#aff302bb6016f2ae29f01bb4e07389a52" title="Get the connection associated with this transport.">transport::connection()</a> is always valid at this point.</p>
<p>Calling <a class="el" href="classproton_1_1connection.html#a5ae591df94fc66ccb85cbb6565368bca" title="Close the connection.">connection::close()</a> will cancel automatic re-connect and force the transport to close immediately, see <a class="el" href="classproton_1_1messaging__handler.html#a8a60c2f6628f44a9587deea8c8729f0f" title="The final event for a connection: there will be no more reconnect attempts and no more event function...">on_transport_close()</a> </p>
</div>
</div>
<a id="a41277abe0e33a3df2764b08dcc12d768"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41277abe0e33a3df2764b08dcc12d768">&#9670;&nbsp;</a></span>on_connection_open()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void on_connection_open </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classproton_1_1connection.html">connection</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The remote peer opened the connection: called once on initial open, and again on each successful automatic re-connect (see <a class="el" href="classproton_1_1reconnect__options.html">reconnect_options</a>) </p>
<p><a class="el" href="classproton_1_1connection.html#a99c8890565994f68c80b032639f13571" title="Unsettled API - True if this connection has been automatically re-connected.">connection::reconnected()</a> is false for the initial call, true for any subsequent calls due to reconnect.</p>
<dl class="section note"><dt>Note</dt><dd>You can use the initial call to open initial <a class="el" href="classproton_1_1session.html">session</a>, <a class="el" href="classproton_1_1sender.html">sender</a> and <a class="el" href="classproton_1_1receiver.html">receiver</a> endpoints. All active endpoints are <em>automatically</em> re-opened after an automatic re-connect so you should take care not to open them again, for example: <pre class="fragment">if (!c.reconnected()) {
// Do initial per-connection setup here.
// Open initial senders/receivers if needed.
} else {
// Handle a successful reconnect here.
// NOTE: Don't re-open active senders/receivers
}
</pre></dd></dl>
<p>For a server <a class="el" href="classproton_1_1messaging__handler.html#a41277abe0e33a3df2764b08dcc12d768" title="The remote peer opened the connection: called once on initial open, and again on each successful auto...">on_connection_open()</a> is called when a client attempts to open a connection. The server can call <a class="el" href="classproton_1_1connection.html#a9e8555112049fc2b4945120b3c45f8ab" title="Open the connection.">connection::open()</a> to accept or <a class="el" href="classproton_1_1connection.html#a817883d28ce0ac8a29d917d196796f68" title="Close the connection.">connection::close(const error_condition&amp;)</a> to reject.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classproton_1_1reconnect__options.html" title="Unsettled API - Options for reconnect and failover after connection loss.">reconnect_options</a>, <a class="el" href="classproton_1_1messaging__handler.html#ab719e98555bab69986acf4ab1fe43665" title="Unexpected disconnect, transport::error() provides details; if reconnect_options are enabled there ma...">on_transport_error()</a> </dd></dl>
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="broker_8cpp-example.html#a18">broker.cpp</a>, <a class="el" href="helloworld_8cpp-example.html#a4">helloworld.cpp</a>, <a class="el" href="multithreaded_client_8cpp-example.html#a10">multithreaded_client.cpp</a>, <a class="el" href="service_bus_8cpp-example.html#a12">service_bus.cpp</a>, and <a class="el" href="simple_send_8cpp-example.html#a8">simple_send.cpp</a>.</dd>
</dl>
</div>
</div>
<a id="a8368c2f41b5c1dab4aa063c1c78a6e19"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8368c2f41b5c1dab4aa063c1c78a6e19">&#9670;&nbsp;</a></span>on_connection_close()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void on_connection_close </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classproton_1_1connection.html">connection</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The remote peer closed the connection. </p>
<p>If there was a connection error, this is called immediately after <a class="el" href="classproton_1_1messaging__handler.html#ae93110a9bad4868663f37d15cd3139a4" title="The remote peer indicated a fatal error, connection::error() provides details.">on_connection_error()</a> and <a class="el" href="classproton_1_1connection.html#a090a10fab22d7faf0f74c8ccda0f1470" title="Get the error condition of the remote endpoint.">connection::error()</a> is set </p>
</div>
</div>
<a id="ae93110a9bad4868663f37d15cd3139a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae93110a9bad4868663f37d15cd3139a4">&#9670;&nbsp;</a></span>on_connection_error()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void on_connection_error </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classproton_1_1connection.html">connection</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The remote peer indicated a fatal error, <a class="el" href="classproton_1_1connection.html#a090a10fab22d7faf0f74c8ccda0f1470" title="Get the error condition of the remote endpoint.">connection::error()</a> provides details. </p>
<p>A connection error is an application problem, for example an illegal action or a lack of resources. There will be no automatic re-connect attempts, <a class="el" href="classproton_1_1messaging__handler.html#a8368c2f41b5c1dab4aa063c1c78a6e19" title="The remote peer closed the connection.">on_connection_close()</a> will be called immediately after.</p>
<dl class="section note"><dt>Note</dt><dd>A connection close with the special error condition <code>amqp:connection-forced</code> is treated as a transport error, not a connection error, see <a class="el" href="classproton_1_1messaging__handler.html#ab719e98555bab69986acf4ab1fe43665" title="Unexpected disconnect, transport::error() provides details; if reconnect_options are enabled there ma...">on_transport_error()</a> </dd></dl>
</div>
</div>
<a id="a29bfba2d26604e5d8d7f3183f1374481"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29bfba2d26604e5d8d7f3183f1374481">&#9670;&nbsp;</a></span>on_connection_wake()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void on_connection_wake </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classproton_1_1connection.html">connection</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Unsettled API</b> - An event that can be triggered from another thread. </p>
<p>This event is triggered by a call to <code><a class="el" href="classproton_1_1connection.html#a473371542eaeba6f67660582fe6a6074" title="Unsettled API - Trigger an event from another thread.">connection::wake()</a></code>. It is used to notify the application that something needs attention.</p>
<p><b>Thread-safety</b> - The application handler and the triggering thread must use some form of thread-safe state or communication to tell the handler what it needs to do. See <code><a class="el" href="classproton_1_1work__queue.html" title="Unsettled API - A context for thread-safe execution of work.">proton::work_queue</a></code> for an easier way to execute code safely in the handler thread.</p>
<dl class="section note"><dt>Note</dt><dd>Spurious calls to <code><a class="el" href="classproton_1_1messaging__handler.html#a29bfba2d26604e5d8d7f3183f1374481" title="Unsettled API - An event that can be triggered from another thread.">on_connection_wake()</a></code> can occur without any application call to <code><a class="el" href="classproton_1_1connection.html#a473371542eaeba6f67660582fe6a6074" title="Unsettled API - Trigger an event from another thread.">connection::wake()</a></code>. </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>proton/<a class="el" href="messaging__handler_8hpp_source.html">messaging_handler.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceproton.html">proton</a></li><li class="navelem"><a class="el" href="classproton_1_1messaging__handler.html">messaging_handler</a></li>
<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>