123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- <!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.17"/>
- <meta name="viewport" content="width=device-width, initial-scale=1"/>
- <title>GRPC C++: grpc::ServerAsyncReaderWriterInterface< W, R > Class Template 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" />
- </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">GRPC C++
-  <span id="projectnumber">1.36.1</span>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- end header part -->
- <!-- Generated by Doxygen 1.8.17 -->
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&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&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="namespacegrpc.html">grpc</a></li><li class="navelem"><a class="el" href="classgrpc_1_1_server_async_reader_writer_interface.html">ServerAsyncReaderWriterInterface</a></li> </ul>
- </div>
- </div><!-- top -->
- <div class="header">
- <div class="summary">
- <a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
- <div class="title">grpc::ServerAsyncReaderWriterInterface< W, R > Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
- </div><!--header-->
- <div class="contents">
- <p>Server-side interface for asynchronous bi-directional streaming.
- <a href="classgrpc_1_1_server_async_reader_writer_interface.html#details">More...</a></p>
- <p><code>#include <<a class="el" href="grpcpp_2impl_2codegen_2async__stream_8h_source.html">async_stream.h</a>></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:aa4d3c649b88c7fb7cba918def8fd99bf"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1_server_async_reader_writer_interface.html#aa4d3c649b88c7fb7cba918def8fd99bf">Finish</a> (const ::<a class="el" href="classgrpc_1_1_status.html">grpc::Status</a> &status, void *tag)=0</td></tr>
- <tr class="memdesc:aa4d3c649b88c7fb7cba918def8fd99bf"><td class="mdescLeft"> </td><td class="mdescRight">Indicate that the stream is to be finished with a certain status code. <a href="classgrpc_1_1_server_async_reader_writer_interface.html#aa4d3c649b88c7fb7cba918def8fd99bf">More...</a><br /></td></tr>
- <tr class="separator:aa4d3c649b88c7fb7cba918def8fd99bf"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ab3f6761dbbe10efe7aa69960979d088f"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1_server_async_reader_writer_interface.html#ab3f6761dbbe10efe7aa69960979d088f">WriteAndFinish</a> (const W &msg, ::<a class="el" href="classgrpc_1_1_write_options.html">grpc::WriteOptions</a> options, const ::<a class="el" href="classgrpc_1_1_status.html">grpc::Status</a> &status, void *tag)=0</td></tr>
- <tr class="memdesc:ab3f6761dbbe10efe7aa69960979d088f"><td class="mdescLeft"> </td><td class="mdescRight">Request the writing of <em>msg</em> and coalesce it with trailing metadata which contains <em>status</em>, using <a class="el" href="classgrpc_1_1_write_options.html" title="Per-message write options.">WriteOptions</a> options with identifying tag <em>tag</em>. <a href="classgrpc_1_1_server_async_reader_writer_interface.html#ab3f6761dbbe10efe7aa69960979d088f">More...</a><br /></td></tr>
- <tr class="separator:ab3f6761dbbe10efe7aa69960979d088f"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="inherit_header pub_methods_classgrpc_1_1internal_1_1_server_async_streaming_interface"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classgrpc_1_1internal_1_1_server_async_streaming_interface')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classgrpc_1_1internal_1_1_server_async_streaming_interface.html">grpc::internal::ServerAsyncStreamingInterface</a></td></tr>
- <tr class="memitem:aeace2295f3792ce24975361c300d641a inherit pub_methods_classgrpc_1_1internal_1_1_server_async_streaming_interface"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1internal_1_1_server_async_streaming_interface.html#aeace2295f3792ce24975361c300d641a">~ServerAsyncStreamingInterface</a> ()</td></tr>
- <tr class="separator:aeace2295f3792ce24975361c300d641a inherit pub_methods_classgrpc_1_1internal_1_1_server_async_streaming_interface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ac55759faf2283db8bf716183881efe01 inherit pub_methods_classgrpc_1_1internal_1_1_server_async_streaming_interface"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1internal_1_1_server_async_streaming_interface.html#ac55759faf2283db8bf716183881efe01">SendInitialMetadata</a> (void *tag)=0</td></tr>
- <tr class="memdesc:ac55759faf2283db8bf716183881efe01 inherit pub_methods_classgrpc_1_1internal_1_1_server_async_streaming_interface"><td class="mdescLeft"> </td><td class="mdescRight">Request notification of the sending of initial metadata to the client. <a href="classgrpc_1_1internal_1_1_server_async_streaming_interface.html#ac55759faf2283db8bf716183881efe01">More...</a><br /></td></tr>
- <tr class="separator:ac55759faf2283db8bf716183881efe01 inherit pub_methods_classgrpc_1_1internal_1_1_server_async_streaming_interface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="inherit_header pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classgrpc_1_1internal_1_1_async_writer_interface')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classgrpc_1_1internal_1_1_async_writer_interface.html">grpc::internal::AsyncWriterInterface< W ></a></td></tr>
- <tr class="memitem:a8ad846091252c112c4db0b41965e5a4c inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1internal_1_1_async_writer_interface.html#a8ad846091252c112c4db0b41965e5a4c">~AsyncWriterInterface</a> ()</td></tr>
- <tr class="separator:a8ad846091252c112c4db0b41965e5a4c inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:aa61e21fdfef0a4fb34f595bef767e6a8 inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1internal_1_1_async_writer_interface.html#aa61e21fdfef0a4fb34f595bef767e6a8">Write</a> (const W &msg, void *tag)=0</td></tr>
- <tr class="memdesc:aa61e21fdfef0a4fb34f595bef767e6a8 inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="mdescLeft"> </td><td class="mdescRight">Request the writing of <em>msg</em> with identifying tag <em>tag</em>. <a href="classgrpc_1_1internal_1_1_async_writer_interface.html#aa61e21fdfef0a4fb34f595bef767e6a8">More...</a><br /></td></tr>
- <tr class="separator:aa61e21fdfef0a4fb34f595bef767e6a8 inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a9fef3a3ceb6be3a140ef4a8ad33c6c75 inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1internal_1_1_async_writer_interface.html#a9fef3a3ceb6be3a140ef4a8ad33c6c75">Write</a> (const W &msg, ::<a class="el" href="classgrpc_1_1_write_options.html">grpc::WriteOptions</a> options, void *tag)=0</td></tr>
- <tr class="memdesc:a9fef3a3ceb6be3a140ef4a8ad33c6c75 inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="mdescLeft"> </td><td class="mdescRight">Request the writing of <em>msg</em> using <a class="el" href="classgrpc_1_1_write_options.html" title="Per-message write options.">WriteOptions</a> <em>options</em> with identifying tag <em>tag</em>. <a href="classgrpc_1_1internal_1_1_async_writer_interface.html#a9fef3a3ceb6be3a140ef4a8ad33c6c75">More...</a><br /></td></tr>
- <tr class="separator:a9fef3a3ceb6be3a140ef4a8ad33c6c75 inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a8dbc8f388cb8e79f587b821fd7d64ce7 inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1internal_1_1_async_writer_interface.html#a8dbc8f388cb8e79f587b821fd7d64ce7">WriteLast</a> (const W &msg, ::<a class="el" href="classgrpc_1_1_write_options.html">grpc::WriteOptions</a> options, void *tag)</td></tr>
- <tr class="memdesc:a8dbc8f388cb8e79f587b821fd7d64ce7 inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="mdescLeft"> </td><td class="mdescRight">Request the writing of <em>msg</em> and coalesce it with the writing of trailing metadata, using <a class="el" href="classgrpc_1_1_write_options.html" title="Per-message write options.">WriteOptions</a> <em>options</em> with identifying tag <em>tag</em>. <a href="classgrpc_1_1internal_1_1_async_writer_interface.html#a8dbc8f388cb8e79f587b821fd7d64ce7">More...</a><br /></td></tr>
- <tr class="separator:a8dbc8f388cb8e79f587b821fd7d64ce7 inherit pub_methods_classgrpc_1_1internal_1_1_async_writer_interface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="inherit_header pub_methods_classgrpc_1_1internal_1_1_async_reader_interface"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classgrpc_1_1internal_1_1_async_reader_interface')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classgrpc_1_1internal_1_1_async_reader_interface.html">grpc::internal::AsyncReaderInterface< R ></a></td></tr>
- <tr class="memitem:a18fe4235232864c8770a562cc2aa1f3c inherit pub_methods_classgrpc_1_1internal_1_1_async_reader_interface"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1internal_1_1_async_reader_interface.html#a18fe4235232864c8770a562cc2aa1f3c">~AsyncReaderInterface</a> ()</td></tr>
- <tr class="separator:a18fe4235232864c8770a562cc2aa1f3c inherit pub_methods_classgrpc_1_1internal_1_1_async_reader_interface"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:adf87c602036d69158950b7299d0aae70 inherit pub_methods_classgrpc_1_1internal_1_1_async_reader_interface"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgrpc_1_1internal_1_1_async_reader_interface.html#adf87c602036d69158950b7299d0aae70">Read</a> (R *msg, void *tag)=0</td></tr>
- <tr class="memdesc:adf87c602036d69158950b7299d0aae70 inherit pub_methods_classgrpc_1_1internal_1_1_async_reader_interface"><td class="mdescLeft"> </td><td class="mdescRight">Read a message of type <em>R</em> into <em>msg</em>. <a href="classgrpc_1_1internal_1_1_async_reader_interface.html#adf87c602036d69158950b7299d0aae70">More...</a><br /></td></tr>
- <tr class="separator:adf87c602036d69158950b7299d0aae70 inherit pub_methods_classgrpc_1_1internal_1_1_async_reader_interface"><td class="memSeparator" colspan="2"> </td></tr>
- </table>
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
- <div class="textblock"><h3>template<class W, class R><br />
- class grpc::ServerAsyncReaderWriterInterface< W, R ></h3>
- <p>Server-side interface for asynchronous bi-directional streaming. </p>
- </div><h2 class="groupheader">Member Function Documentation</h2>
- <a id="aa4d3c649b88c7fb7cba918def8fd99bf"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#aa4d3c649b88c7fb7cba918def8fd99bf">◆ </a></span>Finish()</h2>
- <div class="memitem">
- <div class="memproto">
- <div class="memtemplate">
- template<class W , class R > </div>
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void <a class="el" href="classgrpc_1_1_server_async_reader_writer_interface.html">grpc::ServerAsyncReaderWriterInterface</a>< W, R >::Finish </td>
- <td>(</td>
- <td class="paramtype">const ::<a class="el" href="classgrpc_1_1_status.html">grpc::Status</a> & </td>
- <td class="paramname"><em>status</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">void * </td>
- <td class="paramname"><em>tag</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Indicate that the stream is to be finished with a certain status code. </p>
- <p>Request notification for when the server has sent the appropriate signals to the client to end the call. Should not be used concurrently with other operations.</p>
- <p>It is appropriate to call this method when either:</p><ul>
- <li>all messages from the client have been received (either known implictly, or explicitly because a previous <em>AsyncReaderInterface::Read</em> operation with a non-ok result (e.g., cq->Next(&read_tag, &ok) filled in 'ok' with 'false'.</li>
- <li>it is desired to end the call early with some non-OK status code.</li>
- </ul>
- <p>This operation will end when the server has finished sending out initial metadata (if not sent already), response message, and status, or if some failure occurred when trying to do so.</p>
- <p>gRPC doesn't take ownership or a reference to <em>status</em>, so it is safe to to deallocate once Finish returns.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">tag</td><td>Tag identifying this request. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">status</td><td>To be sent to the client as the result of this call. </td></tr>
- </table>
- </dd>
- </dl>
- <p>Implemented in <a class="el" href="classgrpc_1_1_server_async_reader_writer.html#a7e3f3aa5380c8d1acf4ca8444dca7e18">grpc::ServerAsyncReaderWriter< W, R ></a>.</p>
- </div>
- </div>
- <a id="ab3f6761dbbe10efe7aa69960979d088f"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ab3f6761dbbe10efe7aa69960979d088f">◆ </a></span>WriteAndFinish()</h2>
- <div class="memitem">
- <div class="memproto">
- <div class="memtemplate">
- template<class W , class R > </div>
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void <a class="el" href="classgrpc_1_1_server_async_reader_writer_interface.html">grpc::ServerAsyncReaderWriterInterface</a>< W, R >::WriteAndFinish </td>
- <td>(</td>
- <td class="paramtype">const W & </td>
- <td class="paramname"><em>msg</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">::<a class="el" href="classgrpc_1_1_write_options.html">grpc::WriteOptions</a> </td>
- <td class="paramname"><em>options</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const ::<a class="el" href="classgrpc_1_1_status.html">grpc::Status</a> & </td>
- <td class="paramname"><em>status</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">void * </td>
- <td class="paramname"><em>tag</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Request the writing of <em>msg</em> and coalesce it with trailing metadata which contains <em>status</em>, using <a class="el" href="classgrpc_1_1_write_options.html" title="Per-message write options.">WriteOptions</a> options with identifying tag <em>tag</em>. </p>
- <p>WriteAndFinish is equivalent of performing WriteLast and Finish in a single step.</p>
- <p>gRPC doesn't take ownership or a reference to <em>msg</em> and <em>status</em>, so it is safe to deallocate once WriteAndFinish returns.</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The message to be written. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">options</td><td>The <a class="el" href="classgrpc_1_1_write_options.html" title="Per-message write options.">WriteOptions</a> to be used to write this message. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">status</td><td>The <a class="el" href="classgrpc_1_1_status.html" title="Did it work? If it didn't, why?">Status</a> that server returns to client. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">tag</td><td>The tag identifying the operation. </td></tr>
- </table>
- </dd>
- </dl>
- <p>Implemented in <a class="el" href="classgrpc_1_1_server_async_reader_writer.html#a03e76f7212ff9cf111296de8469cbf1d">grpc::ServerAsyncReaderWriter< W, R ></a>.</p>
- </div>
- </div>
- <hr/>The documentation for this class was generated from the following file:<ul>
- <li>include/grpcpp/impl/codegen/<a class="el" href="grpcpp_2impl_2codegen_2async__stream_8h_source.html">async_stream.h</a></li>
- </ul>
- </div><!-- contents -->
- <!-- start footer part -->
- <hr class="footer"/><address class="footer"><small>
- Generated on Wed Mar 3 2021 19:17:24 for GRPC C++ by  <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/>
- </a> 1.8.17
- </small></address>
- </body>
- </html>
|