<!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.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::CompositeMachMessageServer Class Reference</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="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>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_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">Crashpad
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<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>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- 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 id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html">CompositeMachMessageServer</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classcrashpad_1_1CompositeMachMessageServer-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::CompositeMachMessageServer Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Adapts multiple <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html" title="A Mach RPC callback interface, called by Run().">MachMessageServer::Interface</a> implementations for simultaneous use in a single <a class="el" href="classcrashpad_1_1MachMessageServer.html#ace981f2e495984f119aa074f7d33bff6" title="Runs a Mach message server to handle a Mach RPC request for MIG servers.">MachMessageServer::Run()</a> call.  
 <a href="classcrashpad_1_1CompositeMachMessageServer.html#details">More...</a></p>

<p><code>#include &quot;util/mach/composite_mach_message_server.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::CompositeMachMessageServer:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classcrashpad_1_1CompositeMachMessageServer.png" usemap="#crashpad::CompositeMachMessageServer_map" alt=""/>
  <map id="crashpad::CompositeMachMessageServer_map" name="crashpad::CompositeMachMessageServer_map">
<area href="classcrashpad_1_1MachMessageServer_1_1Interface.html" title="A Mach RPC callback interface, called by Run()." alt="crashpad::MachMessageServer::Interface" shape="rect" coords="0,0,286,24"/>
<area href="classcrashpad_1_1internal_1_1UniversalMachExcServerImpl.html" alt="crashpad::internal::UniversalMachExcServerImpl" shape="rect" coords="0,112,286,136"/>
  </map>
</div></div>
<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:a1b946d369ddb0c838496dbddd0f6f631"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#a1b946d369ddb0c838496dbddd0f6f631">AddHandler</a> (<a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html">MachMessageServer::Interface</a> *handler)</td></tr>
<tr class="memdesc:a1b946d369ddb0c838496dbddd0f6f631"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a handler that messages can be dispatched to based on request message ID.  <a href="classcrashpad_1_1CompositeMachMessageServer.html#a1b946d369ddb0c838496dbddd0f6f631">More...</a><br /></td></tr>
<tr class="separator:a1b946d369ddb0c838496dbddd0f6f631"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe10dd1d12e4cbfe57e040b6939d7f15"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#afe10dd1d12e4cbfe57e040b6939d7f15">MachMessageServerFunction</a> (const mach_msg_header_t *in, mach_msg_header_t *out, bool *destroy_complex_request) override</td></tr>
<tr class="memdesc:afe10dd1d12e4cbfe57e040b6939d7f15"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles a Mach RPC request.  <a href="classcrashpad_1_1CompositeMachMessageServer.html#afe10dd1d12e4cbfe57e040b6939d7f15">More...</a><br /></td></tr>
<tr class="separator:afe10dd1d12e4cbfe57e040b6939d7f15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0782632280317be75ff7064b7854579"><td class="memItemLeft" align="right" valign="top">std::set&lt; mach_msg_id_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#ac0782632280317be75ff7064b7854579">MachMessageServerRequestIDs</a> () override</td></tr>
<tr class="separator:ac0782632280317be75ff7064b7854579"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad45773f4a12149f52e42787c6a102dd4"><td class="memItemLeft" align="right" valign="top">mach_msg_size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#ad45773f4a12149f52e42787c6a102dd4">MachMessageServerRequestSize</a> () override</td></tr>
<tr class="separator:ad45773f4a12149f52e42787c6a102dd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d96bb825abf09c76e75ebe9262581fc"><td class="memItemLeft" align="right" valign="top">mach_msg_size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#a0d96bb825abf09c76e75ebe9262581fc">MachMessageServerReplySize</a> () override</td></tr>
<tr class="separator:a0d96bb825abf09c76e75ebe9262581fc"><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>Adapts multiple <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html" title="A Mach RPC callback interface, called by Run().">MachMessageServer::Interface</a> implementations for simultaneous use in a single <a class="el" href="classcrashpad_1_1MachMessageServer.html#ace981f2e495984f119aa074f7d33bff6" title="Runs a Mach message server to handle a Mach RPC request for MIG servers.">MachMessageServer::Run()</a> call. </p>
<p>This class implements a <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html" title="A Mach RPC callback interface, called by Run().">MachMessageServer::Interface</a> that contains other <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html" title="A Mach RPC callback interface, called by Run().">MachMessageServer::Interface</a> objects.</p>
<p>In some situations, it may be desirable for a Mach message server to handle messages from distinct MIG subsystems with distinct <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html" title="A Mach RPC callback interface, called by Run().">MachMessageServer::Interface</a> implementations. This may happen if a single receive right is shared for multiple subsystems, or if distinct receive rights are combined in a Mach port set. In these cases, this class performs a first-level demultiplexing to forward request messages to the proper subsystem-level demultiplexers. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a1b946d369ddb0c838496dbddd0f6f631"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b946d369ddb0c838496dbddd0f6f631">&#9670;&nbsp;</a></span>AddHandler()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void crashpad::CompositeMachMessageServer::AddHandler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html">MachMessageServer::Interface</a> *&#160;</td>
          <td class="paramname"><em>handler</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a handler that messages can be dispatched to based on request message ID. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">handler</td><td>A <a class="el" href="classcrashpad_1_1MachMessageServer.html" title="Runs a Mach message server to handle a Mach RPC request for MIG servers.">MachMessageServer</a> handler. Ownership of this object is not taken. Cycles must not be created between objects. It is invalid to add an object as its own handler.</td></tr>
  </table>
  </dd>
</dl>
<p>If <em>handler</em> claims to support any request ID that this object is already able to handle, execution will be terminated. </p>

</div>
</div>
<a id="afe10dd1d12e4cbfe57e040b6939d7f15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe10dd1d12e4cbfe57e040b6939d7f15">&#9670;&nbsp;</a></span>MachMessageServerFunction()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool crashpad::CompositeMachMessageServer::MachMessageServerFunction </td>
          <td>(</td>
          <td class="paramtype">const mach_msg_header_t *&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">mach_msg_header_t *&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&#160;</td>
          <td class="paramname"><em>destroy_complex_request</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Handles a Mach RPC request. </p>
<p>This method is a stand-in for a MIG-generated Mach RPC server “demux” function such as <code>exc_server()</code> and <code>mach_exc_server()</code>. Implementations may call such a function directly. This method is expected to behave exactly as these functions behave.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">in</td><td>The request message, received as a Mach message. Note that this interface uses a <code>const</code> parameter for this purpose, whereas MIG-generated “demux” functions do not. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>The reply message. The caller allocates storage, and the callee is expected to populate the reply message appropriately. After returning, the caller will send this reply as a Mach message via the message’s reply port. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">destroy_complex_request</td><td><code>true</code> if a complex request message is to be destroyed even when handled successfully, <code>false</code> otherwise. The traditional behavior is <code>false</code>. In this case, the caller only destroys the request message in <em>in</em> when the reply message in <em>out</em> is not complex and when it indicates a return code other than <code>KERN_SUCCESS</code> or <code>MIG_NO_REPLY</code>. The assumption is that the rights or out-of-line data carried in a complex message may be retained by the server in this situation, and that it is the responsibility of the server to release these resources as needed. However, in many cases, these resources are not needed beyond the duration of a request-reply transaction, and in such cases, it is less error-prone to always have the caller, <a class="el" href="classcrashpad_1_1MachMessageServer.html#ace981f2e495984f119aa074f7d33bff6" title="Runs a Mach message server to handle a Mach RPC request for MIG servers.">MachMessageServer::Run()</a>, destroy complex request messages. To choose this behavior, this parameter should be set to <code>true</code>.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success and <code>false</code> on failure, although the caller ignores the return value. However, the return code to be included in the reply message should be set as <code>mig_reply_error_t::RetCode</code>. The non-<code>void</code> return value is used for increased compatibility with MIG-generated functions.</dd></dl>
<p>This implementation forwards the message to an appropriate handler added by <a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#a1b946d369ddb0c838496dbddd0f6f631" title="Adds a handler that messages can be dispatched to based on request message ID.">AddHandler()</a> on the basis of the <em>in</em> request message’s message ID. If no appropriate handler exists, the <em>out</em> reply message is treated as a <code>mig_reply_error_t</code>, its return code is set to <code>MIG_BAD_ID</code>, and <code>false</code> is returned. </p>

<p>Implements <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html#ad1632cba188c113600abc94d1b45efe6">crashpad::MachMessageServer::Interface</a>.</p>

</div>
</div>
<a id="a0d96bb825abf09c76e75ebe9262581fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d96bb825abf09c76e75ebe9262581fc">&#9670;&nbsp;</a></span>MachMessageServerReplySize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">mach_msg_size_t crashpad::CompositeMachMessageServer::MachMessageServerReplySize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<dl class="section return"><dt>Returns</dt><dd>The maximum size, in bytes, of a reply message to be sent via the <em>out</em> parameter of <a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#afe10dd1d12e4cbfe57e040b6939d7f15" title="Handles a Mach RPC request.">MachMessageServerFunction()</a>. This value does not need to include the size of any trailer to be sent with the message.</dd></dl>
<p>This implementation returns the maximum reply message size of all handlers added by <a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#a1b946d369ddb0c838496dbddd0f6f631" title="Adds a handler that messages can be dispatched to based on request message ID.">AddHandler()</a>. If no handlers are present, returns the size of <code>mig_reply_error_t</code>, the minimum size of a MIG reply message. </p>

<p>Implements <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html#ad4e6169aeb91074d573e77b9a47266c5">crashpad::MachMessageServer::Interface</a>.</p>

</div>
</div>
<a id="ac0782632280317be75ff7064b7854579"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0782632280317be75ff7064b7854579">&#9670;&nbsp;</a></span>MachMessageServerRequestIDs()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::set&lt; mach_msg_id_t &gt; crashpad::CompositeMachMessageServer::MachMessageServerRequestIDs </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<dl class="section return"><dt>Returns</dt><dd>The set of request message Mach message IDs that <a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#afe10dd1d12e4cbfe57e040b6939d7f15" title="Handles a Mach RPC request.">MachMessageServerFunction()</a> is able to handle.</dd></dl>
<p>This implementation returns the set of all request message Mach message IDs of all handlers added by <a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#a1b946d369ddb0c838496dbddd0f6f631" title="Adds a handler that messages can be dispatched to based on request message ID.">AddHandler()</a>. </p>

<p>Implements <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html#af0a4b1e3b83c7226604837b32ef6428e">crashpad::MachMessageServer::Interface</a>.</p>

</div>
</div>
<a id="ad45773f4a12149f52e42787c6a102dd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad45773f4a12149f52e42787c6a102dd4">&#9670;&nbsp;</a></span>MachMessageServerRequestSize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">mach_msg_size_t crashpad::CompositeMachMessageServer::MachMessageServerRequestSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p></p>
<dl class="section return"><dt>Returns</dt><dd>The expected or maximum size, in bytes, of a request message to be received as the <em>in</em> parameter of <a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#afe10dd1d12e4cbfe57e040b6939d7f15" title="Handles a Mach RPC request.">MachMessageServerFunction()</a>.</dd></dl>
<p>This implementation returns the maximum request message size of all handlers added by <a class="el" href="classcrashpad_1_1CompositeMachMessageServer.html#a1b946d369ddb0c838496dbddd0f6f631" title="Adds a handler that messages can be dispatched to based on request message ID.">AddHandler()</a>. If no handlers are present, returns the size of <code>mach_msg_header_t</code>, the minimum size of a MIG request message that can be received for demultiplexing purposes. </p>

<p>Implements <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html#a319dd9279e87b4407cee3c8feca405ab">crashpad::MachMessageServer::Interface</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>util/mach/composite_mach_message_server.h</li>
<li>util/mach/composite_mach_message_server.cc</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
