<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.14"/>
<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.14 -->
<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="#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="#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.14
</small></address>
</body>
</html>
