<ahref="#pub-methods">Public Member Functions</a>|
<ahref="classcrashpad_1_1MachMessageServer_1_1Interface-members.html">List of all members</a></div>
<divclass="headertitle">
<divclass="title">crashpad::MachMessageServer::Interface Class Reference<spanclass="mlabels"><spanclass="mlabel">abstract</span></span></div></div>
</div><!--header-->
<divclass="contents">
<p>A Mach RPC callback interface, called by <aclass="el"href="classcrashpad_1_1MachMessageServer.html#ace981f2e495984f119aa074f7d33bff6"title="Runs a Mach message server to handle a Mach RPC request for MIG servers. ">Run()</a>.
<areahref="classcrashpad_1_1ChildPortServer.html"title="A server interface for the child_port Mach subsystem. "alt="crashpad::ChildPortServer"shape="rect"coords="0,56,286,80"/>
<areahref="classcrashpad_1_1CompositeMachMessageServer.html"title="Adapts multiple MachMessageServer::Interface implementations for simultaneous use in a single MachMes..."alt="crashpad::CompositeMachMessageServer"shape="rect"coords="296,56,582,80"/>
<areahref="classcrashpad_1_1NotifyServer.html"title="A server interface for the notify Mach subsystem. "alt="crashpad::NotifyServer"shape="rect"coords="592,56,878,80"/>
<areahref="classcrashpad_1_1UniversalMachExcServer.html"title="A server interface for the exc and mach_exc Mach subsystems, unified to handle exceptions delivered t..."alt="crashpad::UniversalMachExcServer"shape="rect"coords="888,56,1174,80"/>
<divclass="textblock"><p>A Mach RPC callback interface, called by <aclass="el"href="classcrashpad_1_1MachMessageServer.html#ace981f2e495984f119aa074f7d33bff6"title="Runs a Mach message server to handle a Mach RPC request for MIG servers. ">Run()</a>. </p>
</div><h2class="groupheader">Member Function Documentation</h2>
<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>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="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><tdclass="paramdir">[out]</td><tdclass="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><tdclass="paramdir">[out]</td><tdclass="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, <aclass="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>
<dlclass="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>Implemented in <aclass="el"href="classcrashpad_1_1NotifyServer.html#a96630849312a63d91f0d94a5618803a3">crashpad::NotifyServer</a>, <aclass="el"href="classcrashpad_1_1UniversalMachExcServer.html#a113ce518d5412e2cf352eb7f857fa9fb">crashpad::UniversalMachExcServer</a>, <aclass="el"href="classcrashpad_1_1ChildPortServer.html#a2674dc86acce27d76f5725148ebeddd7">crashpad::ChildPortServer</a>, and <aclass="el"href="classcrashpad_1_1CompositeMachMessageServer.html#afe10dd1d12e4cbfe57e040b6939d7f15">crashpad::CompositeMachMessageServer</a>.</p>
<dlclass="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 <aclass="el"href="classcrashpad_1_1MachMessageServer_1_1Interface.html#ad1632cba188c113600abc94d1b45efe6"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>Implemented in <aclass="el"href="classcrashpad_1_1NotifyServer.html#af824bc4888e15ed26769d0ff8571fc38">crashpad::NotifyServer</a>, <aclass="el"href="classcrashpad_1_1UniversalMachExcServer.html#a1eeb93504e604f53fc5c9cf1c66d838c">crashpad::UniversalMachExcServer</a>, <aclass="el"href="classcrashpad_1_1CompositeMachMessageServer.html#a0d96bb825abf09c76e75ebe9262581fc">crashpad::CompositeMachMessageServer</a>, and <aclass="el"href="classcrashpad_1_1ChildPortServer.html#ae0086fca5ea9a836565f981f92448094">crashpad::ChildPortServer</a>.</p>
<dlclass="section return"><dt>Returns</dt><dd>The set of request message Mach message IDs that <aclass="el"href="classcrashpad_1_1MachMessageServer_1_1Interface.html#ad1632cba188c113600abc94d1b45efe6"title="Handles a Mach RPC request. ">MachMessageServerFunction()</a> is able to handle. </dd></dl>
<p>Implemented in <aclass="el"href="classcrashpad_1_1NotifyServer.html#aedce681312094a8ed81f5275d2f70070">crashpad::NotifyServer</a>, <aclass="el"href="classcrashpad_1_1UniversalMachExcServer.html#ab9f192938859fb4b0fa637bf34ab0a1c">crashpad::UniversalMachExcServer</a>, <aclass="el"href="classcrashpad_1_1CompositeMachMessageServer.html#ac0782632280317be75ff7064b7854579">crashpad::CompositeMachMessageServer</a>, and <aclass="el"href="classcrashpad_1_1ChildPortServer.html#a3846e6e964464e734944c002c8848c2e">crashpad::ChildPortServer</a>.</p>
<dlclass="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 <aclass="el"href="classcrashpad_1_1MachMessageServer_1_1Interface.html#ad1632cba188c113600abc94d1b45efe6"title="Handles a Mach RPC request. ">MachMessageServerFunction()</a>. </dd></dl>
<p>Implemented in <aclass="el"href="classcrashpad_1_1NotifyServer.html#a4a08edc6b102a6c36cad7f5f38290540">crashpad::NotifyServer</a>, <aclass="el"href="classcrashpad_1_1UniversalMachExcServer.html#ae700d18241f2eb3c7d755ad8c909ecec">crashpad::UniversalMachExcServer</a>, <aclass="el"href="classcrashpad_1_1CompositeMachMessageServer.html#ad45773f4a12149f52e42787c6a102dd4">crashpad::CompositeMachMessageServer</a>, and <aclass="el"href="classcrashpad_1_1ChildPortServer.html#aeda618e34b96c5d044d41d301fa72fad">crashpad::ChildPortServer</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>util/mach/mach_message_server.h</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hrclass="footer"/><addressclass="footer"><small>
Generated by  <ahref="http://www.doxygen.org/index.html">