grpc/cpp/event__engine_8h_source.html

345 lines
84 KiB
HTML

<!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++: include/grpc/event_engine/event_engine.h Source File</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++
&#160;<span id="projectnumber">1.58.0</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&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="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_9d7a14d6d9adcbe4c35dbdb88d867e2e.html">grpc</a></li><li class="navelem"><a class="el" href="dir_bd8dffe728229f23f136e38dafaf5150.html">event_engine</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">event_engine.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="event__engine_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright 2021 The gRPC Authors</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// limitations under the License.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef GRPC_EVENT_ENGINE_EVENT_ENGINE_H</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define GRPC_EVENT_ENGINE_EVENT_ENGINE_H</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="support_2port__platform_8h.html">grpc/support/port_platform.h</a>&gt;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;absl/functional/any_invocable.h&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;absl/status/status.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;absl/status/statusor.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="endpoint__config_8h.html">grpc/event_engine/endpoint_config.h</a>&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="memory__allocator_8h.html">grpc/event_engine/memory_allocator.h</a>&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="port_8h.html">grpc/event_engine/port.h</a>&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="event__engine_2slice__buffer_8h.html">grpc/event_engine/slice_buffer.h</a>&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// TODO(vigneshbabu): Define the Endpoint::Write metrics collection system</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacegrpc__event__engine.html">grpc_event_engine</a> {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">namespace </span>experimental {</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html"> 94</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html">EventEngine</a> : <span class="keyword">public</span> std::enable_shared_from_this&lt;EventEngine&gt; {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a3380997754430d27e6b9832174184327"> 100</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a3380997754430d27e6b9832174184327">Duration</a> = std::chrono::duration&lt;int64_t, std::nano&gt;;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html"> 108</a></span>&#160; <span class="keyword">class </span><a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html">Closure</a> {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html#a5142b0ccf8177cde2ba8fb3a78a4de08">Closure</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// Closure&#39;s are an interface, and thus non-copyable.</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html#a5142b0ccf8177cde2ba8fb3a78a4de08">Closure</a>(<span class="keyword">const</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html">Closure</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html">Closure</a>&amp; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html#a65bc744a1b6368b335ee06a18c045da0">operator=</a>(<span class="keyword">const</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html">Closure</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// Polymorphic type =&gt; virtual destructor</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html#a3ff7f740a90cc5f3077e5ea2418334a3">~Closure</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Run the contained code.</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html#a8c19a7ac4fbbef243df55d3a3858d7be">Run</a>() = 0;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; };</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html"> 123</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">TaskHandle</a> {</div>
<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a81267fb939a1c23a2b48e58d6db54f37"> 124</a></span>&#160; intptr_t <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a81267fb939a1c23a2b48e58d6db54f37">keys</a>[2];</div>
<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a2ac912ac58087e650a0784c26b032430"> 125</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">TaskHandle</a> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a2ac912ac58087e650a0784c26b032430">kInvalid</a>;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a33c855a73c350de643db174e6741e712">operator==</a>(<span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">TaskHandle</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">TaskHandle</a>&amp; rhs);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a43ed5cddd5f79a123a7c4b045858ce16">operator!=</a>(<span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">TaskHandle</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">TaskHandle</a>&amp; rhs);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; };</div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html"> 132</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html">ConnectionHandle</a> {</div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a66e5396bb7339bac12cd68191aadb6d2"> 133</a></span>&#160; intptr_t <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a66e5396bb7339bac12cd68191aadb6d2">keys</a>[2];</div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a479a2a80aa5da7f396fa743fe5df4b01"> 134</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html">ConnectionHandle</a> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a479a2a80aa5da7f396fa743fe5df4b01">kInvalid</a>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a32423afd5af0ed69ef05cd2641643211">operator==</a>(<span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html">ConnectionHandle</a>&amp; lhs,</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html">ConnectionHandle</a>&amp; rhs);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a2c1a17e40a25b21c1e841d7a1e4b5658">operator!=</a>(<span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html">ConnectionHandle</a>&amp; lhs,</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html">ConnectionHandle</a>&amp; rhs);</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; };</div>
<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html"> 147</a></span>&#160; <span class="keyword">class </span><a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html">ResolvedAddress</a> {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a0abb7fdbdb6842d41549af3da3471dab"> 149</a></span>&#160; <span class="keyword">static</span> constexpr socklen_t <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a0abb7fdbdb6842d41549af3da3471dab">MAX_SIZE_BYTES</a> = 128;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a9d7a3bf8e2c76c6d4fedd72b99f2397c">ResolvedAddress</a>(<span class="keyword">const</span> sockaddr* <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#ac82fd08c29871dfd009a6f592fdddecd">address</a>, socklen_t <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a139d2e8182d9b96905b19db907b8bc68">size</a>);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a9d7a3bf8e2c76c6d4fedd72b99f2397c">ResolvedAddress</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a9d7a3bf8e2c76c6d4fedd72b99f2397c">ResolvedAddress</a>(<span class="keyword">const</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html">ResolvedAddress</a>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span>sockaddr* <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#ac82fd08c29871dfd009a6f592fdddecd">address</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; socklen_t <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a139d2e8182d9b96905b19db907b8bc68">size</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">char</span> address_[<a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a0abb7fdbdb6842d41549af3da3471dab">MAX_SIZE_BYTES</a>] = {};</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; socklen_t size_ = 0;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; };</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html"> 170</a></span>&#160; <span class="keyword">class </span><a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html">Endpoint</a> {</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#ac2549a2052ff34c77674c5dd95e0d8cd">~Endpoint</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_read_args.html"> 179</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_read_args.html">ReadArgs</a> {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// A suggestion to the endpoint implementation to read at-least the</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// specified number of bytes over the network connection before marking</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// the endpoint read operation as complete. gRPC may use this argument</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">// to minimize the number of endpoint read API calls over the lifetime</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// of a connection.</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_read_args.html#a0a2d665ff2d7a46ef7dea7b7bdd0a801"> 185</a></span>&#160; int64_t <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_read_args.html#a0a2d665ff2d7a46ef7dea7b7bdd0a801">read_hint_bytes</a>;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; };</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#a7dfac8b5879c7088c8d2347854012095">Read</a>(absl::AnyInvocable&lt;<span class="keywordtype">void</span>(<a class="code" href="namespacegrpc_1_1protobuf_1_1util.html#ad372120c6db3d26bf54ab69b6f595fe4">absl::Status</a>)&gt; on_read,</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_slice_buffer.html">SliceBuffer</a>* buffer, <span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_read_args.html">ReadArgs</a>* args) = 0;</div>
<div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html"> 213</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html">WriteArgs</a> {</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Represents private information that may be passed by gRPC for</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// select endpoints expected to be used only within google.</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html#ab97c6daae5fd26738e1a7b9a9d6143ec"> 216</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html#ab97c6daae5fd26738e1a7b9a9d6143ec">google_specific</a> = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// A suggestion to the endpoint implementation to group data to be written</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">// into frames of the specified max_frame_size. gRPC may use this</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// argument to dynamically control the max sizes of frames sent to a</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// receiver in response to high receiver memory pressure.</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html#a2924b1be68e26cea8926b470af815303"> 221</a></span>&#160; int64_t <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html#a2924b1be68e26cea8926b470af815303">max_frame_size</a>;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; };</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#a20ee9db2384229b0d77abaca38f5e3df">Write</a>(absl::AnyInvocable&lt;<span class="keywordtype">void</span>(<a class="code" href="namespacegrpc_1_1protobuf_1_1util.html#ad372120c6db3d26bf54ab69b6f595fe4">absl::Status</a>)&gt; on_writable,</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_slice_buffer.html">SliceBuffer</a>* data, <span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html">WriteArgs</a>* args) = 0;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html">ResolvedAddress</a>&amp; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#ad0b6e8aa3891af48f11a6422f1d95bb2">GetPeerAddress</a>() <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html">ResolvedAddress</a>&amp; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#a4cda2ef24a6abbc49df1806599c6c930">GetLocalAddress</a>() <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; };</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; </div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">using</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a9d190fa0d2978cce36684d203830496e">OnConnectCallback</a> =</div>
<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a9d190fa0d2978cce36684d203830496e"> 258</a></span>&#160; absl::AnyInvocable&lt;void(absl::StatusOr&lt;std::unique_ptr&lt;Endpoint&gt;&gt;)&gt;;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; </div>
<div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html"> 262</a></span>&#160; <span class="keyword">class </span><a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html">Listener</a> {</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">using</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#ab96fd5b221a41105db2be8b458f92a6c">AcceptCallback</a> = absl::AnyInvocable&lt;void(</div>
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#ab96fd5b221a41105db2be8b458f92a6c"> 266</a></span>&#160; std::unique_ptr&lt;Endpoint&gt;, <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_memory_allocator.html">MemoryAllocator</a> memory_allocator)&gt;;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#a691cbfd1fc82bed7d7dc04c9e7bba3cd">~Listener</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">virtual</span> absl::StatusOr&lt;int&gt; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#a95239090a62188308036ce1841aa8d65">Bind</a>(<span class="keyword">const</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html">ResolvedAddress</a>&amp; addr) = 0;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespacegrpc_1_1protobuf_1_1util.html#ad372120c6db3d26bf54ab69b6f595fe4">absl::Status</a> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#abe5c11d2747373e1d07ed422a7976714">Start</a>() = 0;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; };</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; </div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">virtual</span> absl::StatusOr&lt;std::unique_ptr&lt;Listener&gt;&gt; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a42219352c1ecf679da50671e9a1b35fb">CreateListener</a>(</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#ab96fd5b221a41105db2be8b458f92a6c">Listener::AcceptCallback</a> on_accept,</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; absl::AnyInvocable&lt;<span class="keywordtype">void</span>(<a class="code" href="namespacegrpc_1_1protobuf_1_1util.html#ad372120c6db3d26bf54ab69b6f595fe4">absl::Status</a>)&gt; on_shutdown,</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">const</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_endpoint_config.html">EndpointConfig</a>&amp; config,</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::unique_ptr&lt;MemoryAllocatorFactory&gt; memory_allocator_factory) = 0;</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keyword">virtual</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html">ConnectionHandle</a> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a1b0a8f1b88d47735c3b5bb7a51d8c4c5">Connect</a>(<a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a9d190fa0d2978cce36684d203830496e">OnConnectCallback</a> on_connect,</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html">ResolvedAddress</a>&amp; addr,</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">const</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_endpoint_config.html">EndpointConfig</a>&amp; args,</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_memory_allocator.html">MemoryAllocator</a> memory_allocator,</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a3380997754430d27e6b9832174184327">Duration</a> timeout) = 0;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#ad116ce06ec29f65ce4083b226d2d90c8">CancelConnect</a>(<a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html">ConnectionHandle</a> handle) = 0;</div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html"> 330</a></span>&#160; <span class="keyword">class </span><a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html">DNSResolver</a> {</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_resolver_options.html"> 333</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_resolver_options.html">ResolverOptions</a> {</div>
<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_resolver_options.html#acd167b0350ce5c97b722c1bc2cf8bd60"> 336</a></span>&#160; std::string <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_resolver_options.html#acd167b0350ce5c97b722c1bc2cf8bd60">dns_server</a>;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; };</div>
<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html"> 339</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html">SRVRecord</a> {</div>
<div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#a76246885dc6339a48563cdac25511ed9"> 340</a></span>&#160; std::string <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#a76246885dc6339a48563cdac25511ed9">host</a>;</div>
<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#ac8ba371a69f9db568b05dae7417841b9"> 341</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#ac8ba371a69f9db568b05dae7417841b9">port</a> = 0;</div>
<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#a933fb42b443b07ae59029af2a716c5c8"> 342</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#a933fb42b443b07ae59029af2a716c5c8">priority</a> = 0;</div>
<div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#ab26062fdf016d3f537da5750394fd9ee"> 343</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#ab26062fdf016d3f537da5750394fd9ee">weight</a> = 0;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; };</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">using</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#ae821bfc2fff7ccf741d8f6d1c25861ca">LookupHostnameCallback</a> =</div>
<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#ae821bfc2fff7ccf741d8f6d1c25861ca"> 348</a></span>&#160; absl::AnyInvocable&lt;void(absl::StatusOr&lt;std::vector&lt;ResolvedAddress&gt;&gt;)&gt;;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">using</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a9ef5cdd1a8c31ee078a7aa775a8d73b2">LookupSRVCallback</a> =</div>
<div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a9ef5cdd1a8c31ee078a7aa775a8d73b2"> 351</a></span>&#160; absl::AnyInvocable&lt;void(absl::StatusOr&lt;std::vector&lt;SRVRecord&gt;&gt;)&gt;;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">using</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a10f0463006effedc249bb06c810d5ffc">LookupTXTCallback</a> =</div>
<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a10f0463006effedc249bb06c810d5ffc"> 354</a></span>&#160; absl::AnyInvocable&lt;void(absl::StatusOr&lt;std::vector&lt;std::string&gt;&gt;)&gt;;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; </div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#ae8966e8aee5db98a0380cbfc5526227b">~DNSResolver</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; </div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#aaaed79a28cb950311144852e00c55c7b">LookupHostname</a>(<a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#ae821bfc2fff7ccf741d8f6d1c25861ca">LookupHostnameCallback</a> on_resolve,</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; absl::string_view name,</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; absl::string_view default_port) = 0;</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a6934f9edc78f329c6c95f34a4110dace">LookupSRV</a>(<a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a9ef5cdd1a8c31ee078a7aa775a8d73b2">LookupSRVCallback</a> on_resolve,</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; absl::string_view name) = 0;</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a686959fe71eaba0dcaf7849a2ad37c72">LookupTXT</a>(<a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a10f0463006effedc249bb06c810d5ffc">LookupTXTCallback</a> on_resolve,</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; absl::string_view name) = 0;</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; };</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; </div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#aa283885518525b71339f166e15932cd1">~EventEngine</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; </div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">// TODO(nnoble): consider whether we can remove this method before we</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// de-experimentalize this API.</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#afb9dbb26c374daf51b6460da89a7d586">IsWorkerThread</a>() = 0;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; </div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">virtual</span> absl::StatusOr&lt;std::unique_ptr&lt;DNSResolver&gt;&gt; <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a9454ccca7e1b26a2ba5dd37ebc16b4d0">GetDNSResolver</a>(</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">const</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_resolver_options.html">DNSResolver::ResolverOptions</a>&amp; options) = 0;</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; </div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a589e091e9af842bcda00411996d9255f">Run</a>(<a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html">Closure</a>* closure) = 0;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a589e091e9af842bcda00411996d9255f">Run</a>(absl::AnyInvocable&lt;<span class="keywordtype">void</span>()&gt; closure) = 0;</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keyword">virtual</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">TaskHandle</a> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a854dfb6d39d5c6106eb98d499209529a">RunAfter</a>(<a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a3380997754430d27e6b9832174184327">Duration</a> when, <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html">Closure</a>* closure) = 0;</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">virtual</span> <a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">TaskHandle</a> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a854dfb6d39d5c6106eb98d499209529a">RunAfter</a>(<a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a3380997754430d27e6b9832174184327">Duration</a> when,</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; absl::AnyInvocable&lt;<span class="keywordtype">void</span>()&gt; closure) = 0;</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#aab8a579f7dc8429c8d2aa2cd81da910b">Cancel</a>(<a class="code" href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">TaskHandle</a> handle) = 0;</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;};</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; </div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacegrpc__event__engine_1_1experimental.html#a94ab619b34c2c1f57c2d068d0c18907c">SetEventEngineFactory</a>(</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; absl::AnyInvocable&lt;std::unique_ptr&lt;EventEngine&gt;()&gt; factory);</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; </div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacegrpc__event__engine_1_1experimental.html#a61848d6441fac572b7c4ef2cc3820342">EventEngineFactoryReset</a>();</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;std::unique_ptr&lt;EventEngine&gt; <a class="code" href="namespacegrpc__event__engine_1_1experimental.html#a89b1b9fe77b7e8b8aa7f31c30039a1c8">CreateEventEngine</a>();</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; </div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;} <span class="comment">// namespace experimental</span></div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;} <span class="comment">// namespace grpc_event_engine</span></div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; </div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor">#endif // GRPC_EVENT_ENGINE_EVENT_ENGINE_H</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_a9d190fa0d2978cce36684d203830496e"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a9d190fa0d2978cce36684d203830496e">grpc_event_engine::experimental::EventEngine::OnConnectCallback</a></div><div class="ttdeci">absl::AnyInvocable&lt; void(absl::StatusOr&lt; std::unique_ptr&lt; Endpoint &gt; &gt;)&gt; OnConnectCallback</div><div class="ttdoc">Called when a new connection is established.</div><div class="ttdef"><b>Definition:</b> event_engine.h:258</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_aa283885518525b71339f166e15932cd1"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#aa283885518525b71339f166e15932cd1">grpc_event_engine::experimental::EventEngine::~EventEngine</a></div><div class="ttdeci">virtual ~EventEngine()=default</div><div class="ttdoc">At time of destruction, the EventEngine must have no active responsibilities.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address_html_a139d2e8182d9b96905b19db907b8bc68"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a139d2e8182d9b96905b19db907b8bc68">grpc_event_engine::experimental::EventEngine::ResolvedAddress::size</a></div><div class="ttdeci">socklen_t size() const</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle_html"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html">grpc_event_engine::experimental::EventEngine::ConnectionHandle</a></div><div class="ttdoc">A handle to a cancellable connection attempt.</div><div class="ttdef"><b>Definition:</b> event_engine.h:132</div></div>
<div class="ttc" id="aport_8h_html"><div class="ttname"><a href="port_8h.html">port.h</a></div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args_html"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html">grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs</a></div><div class="ttdoc">A struct representing optional arguments that may be provided to an EventEngine Endpoint Write API ca...</div><div class="ttdef"><b>Definition:</b> event_engine.h:213</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address_html_a0abb7fdbdb6842d41549af3da3471dab"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a0abb7fdbdb6842d41549af3da3471dab">grpc_event_engine::experimental::EventEngine::ResolvedAddress::MAX_SIZE_BYTES</a></div><div class="ttdeci">static constexpr socklen_t MAX_SIZE_BYTES</div><div class="ttdef"><b>Definition:</b> event_engine.h:149</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_a854dfb6d39d5c6106eb98d499209529a"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a854dfb6d39d5c6106eb98d499209529a">grpc_event_engine::experimental::EventEngine::RunAfter</a></div><div class="ttdeci">virtual TaskHandle RunAfter(Duration when, Closure *closure)=0</div><div class="ttdoc">Synonymous with scheduling an alarm to run after duration when.</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle_html_a33c855a73c350de643db174e6741e712"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a33c855a73c350de643db174e6741e712">grpc_event_engine::experimental::EventEngine::TaskHandle::operator==</a></div><div class="ttdeci">friend bool operator==(const TaskHandle &amp;lhs, const TaskHandle &amp;rhs)</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener_html_ab96fd5b221a41105db2be8b458f92a6c"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#ab96fd5b221a41105db2be8b458f92a6c">grpc_event_engine::experimental::EventEngine::Listener::AcceptCallback</a></div><div class="ttdeci">absl::AnyInvocable&lt; void(std::unique_ptr&lt; Endpoint &gt;, MemoryAllocator memory_allocator)&gt; AcceptCallback</div><div class="ttdoc">Called when the listener has accepted a new client connection.</div><div class="ttdef"><b>Definition:</b> event_engine.h:266</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html">grpc_event_engine::experimental::EventEngine</a></div><div class="ttdoc">The EventEngine Interface.</div><div class="ttdef"><b>Definition:</b> event_engine.h:94</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_read_args_html_a0a2d665ff2d7a46ef7dea7b7bdd0a801"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_read_args.html#a0a2d665ff2d7a46ef7dea7b7bdd0a801">grpc_event_engine::experimental::EventEngine::Endpoint::ReadArgs::read_hint_bytes</a></div><div class="ttdeci">int64_t read_hint_bytes</div><div class="ttdef"><b>Definition:</b> event_engine.h:185</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_html_ac2549a2052ff34c77674c5dd95e0d8cd"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#ac2549a2052ff34c77674c5dd95e0d8cd">grpc_event_engine::experimental::EventEngine::Endpoint::~Endpoint</a></div><div class="ttdeci">virtual ~Endpoint()=default</div><div class="ttdoc">Shuts down all connections and invokes all pending read or write callbacks with an error status.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_afb9dbb26c374daf51b6460da89a7d586"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#afb9dbb26c374daf51b6460da89a7d586">grpc_event_engine::experimental::EventEngine::IsWorkerThread</a></div><div class="ttdeci">virtual bool IsWorkerThread()=0</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_html_ae8966e8aee5db98a0380cbfc5526227b"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#ae8966e8aee5db98a0380cbfc5526227b">grpc_event_engine::experimental::EventEngine::DNSResolver::~DNSResolver</a></div><div class="ttdeci">virtual ~DNSResolver()=default</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_html_a7dfac8b5879c7088c8d2347854012095"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#a7dfac8b5879c7088c8d2347854012095">grpc_event_engine::experimental::EventEngine::Endpoint::Read</a></div><div class="ttdeci">virtual bool Read(absl::AnyInvocable&lt; void(absl::Status)&gt; on_read, SliceBuffer *buffer, const ReadArgs *args)=0</div><div class="ttdoc">Reads data from the Endpoint.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_html_aaaed79a28cb950311144852e00c55c7b"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#aaaed79a28cb950311144852e00c55c7b">grpc_event_engine::experimental::EventEngine::DNSResolver::LookupHostname</a></div><div class="ttdeci">virtual void LookupHostname(LookupHostnameCallback on_resolve, absl::string_view name, absl::string_view default_port)=0</div><div class="ttdoc">Asynchronously resolve an address.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_html_a9ef5cdd1a8c31ee078a7aa775a8d73b2"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a9ef5cdd1a8c31ee078a7aa775a8d73b2">grpc_event_engine::experimental::EventEngine::DNSResolver::LookupSRVCallback</a></div><div class="ttdeci">absl::AnyInvocable&lt; void(absl::StatusOr&lt; std::vector&lt; SRVRecord &gt; &gt;)&gt; LookupSRVCallback</div><div class="ttdoc">Called with a collection of SRV records.</div><div class="ttdef"><b>Definition:</b> event_engine.h:351</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record_html_ac8ba371a69f9db568b05dae7417841b9"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#ac8ba371a69f9db568b05dae7417841b9">grpc_event_engine::experimental::EventEngine::DNSResolver::SRVRecord::port</a></div><div class="ttdeci">int port</div><div class="ttdef"><b>Definition:</b> event_engine.h:341</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_read_args_html"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_read_args.html">grpc_event_engine::experimental::EventEngine::Endpoint::ReadArgs</a></div><div class="ttdoc">A struct representing optional arguments that may be provided to an EventEngine Endpoint Read API cal...</div><div class="ttdef"><b>Definition:</b> event_engine.h:179</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener_html_a95239090a62188308036ce1841aa8d65"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#a95239090a62188308036ce1841aa8d65">grpc_event_engine::experimental::EventEngine::Listener::Bind</a></div><div class="ttdeci">virtual absl::StatusOr&lt; int &gt; Bind(const ResolvedAddress &amp;addr)=0</div><div class="ttdoc">Bind an address/port to this Listener.</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record_html_a76246885dc6339a48563cdac25511ed9"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#a76246885dc6339a48563cdac25511ed9">grpc_event_engine::experimental::EventEngine::DNSResolver::SRVRecord::host</a></div><div class="ttdeci">std::string host</div><div class="ttdef"><b>Definition:</b> event_engine.h:340</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle_html_a66e5396bb7339bac12cd68191aadb6d2"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a66e5396bb7339bac12cd68191aadb6d2">grpc_event_engine::experimental::EventEngine::ConnectionHandle::keys</a></div><div class="ttdeci">intptr_t keys[2]</div><div class="ttdef"><b>Definition:</b> event_engine.h:133</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle_html_a32423afd5af0ed69ef05cd2641643211"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a32423afd5af0ed69ef05cd2641643211">grpc_event_engine::experimental::EventEngine::ConnectionHandle::operator==</a></div><div class="ttdeci">friend bool operator==(const ConnectionHandle &amp;lhs, const ConnectionHandle &amp;rhs)</div></div>
<div class="ttc" id="anamespacegrpc__event__engine_1_1experimental_html_a61848d6441fac572b7c4ef2cc3820342"><div class="ttname"><a href="namespacegrpc__event__engine_1_1experimental.html#a61848d6441fac572b7c4ef2cc3820342">grpc_event_engine::experimental::EventEngineFactoryReset</a></div><div class="ttdeci">void EventEngineFactoryReset()</div><div class="ttdoc">Reset gRPC's EventEngine factory to the built-in default.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_html_ae821bfc2fff7ccf741d8f6d1c25861ca"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#ae821bfc2fff7ccf741d8f6d1c25861ca">grpc_event_engine::experimental::EventEngine::DNSResolver::LookupHostnameCallback</a></div><div class="ttdeci">absl::AnyInvocable&lt; void(absl::StatusOr&lt; std::vector&lt; ResolvedAddress &gt; &gt;)&gt; LookupHostnameCallback</div><div class="ttdoc">Called with the collection of sockaddrs that were resolved from a given target address.</div><div class="ttdef"><b>Definition:</b> event_engine.h:348</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_html_a20ee9db2384229b0d77abaca38f5e3df"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#a20ee9db2384229b0d77abaca38f5e3df">grpc_event_engine::experimental::EventEngine::Endpoint::Write</a></div><div class="ttdeci">virtual bool Write(absl::AnyInvocable&lt; void(absl::Status)&gt; on_writable, SliceBuffer *data, const WriteArgs *args)=0</div><div class="ttdoc">Writes data out on the connection.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_ad116ce06ec29f65ce4083b226d2d90c8"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#ad116ce06ec29f65ce4083b226d2d90c8">grpc_event_engine::experimental::EventEngine::CancelConnect</a></div><div class="ttdeci">virtual bool CancelConnect(ConnectionHandle handle)=0</div><div class="ttdoc">Request cancellation of a connection attempt.</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_resolver_options_html"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_resolver_options.html">grpc_event_engine::experimental::EventEngine::DNSResolver::ResolverOptions</a></div><div class="ttdoc">Optional configuration for DNSResolvers.</div><div class="ttdef"><b>Definition:</b> event_engine.h:333</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args_html_a2924b1be68e26cea8926b470af815303"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html#a2924b1be68e26cea8926b470af815303">grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs::max_frame_size</a></div><div class="ttdeci">int64_t max_frame_size</div><div class="ttdef"><b>Definition:</b> event_engine.h:221</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record_html"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html">grpc_event_engine::experimental::EventEngine::DNSResolver::SRVRecord</a></div><div class="ttdoc">DNS SRV record type.</div><div class="ttdef"><b>Definition:</b> event_engine.h:339</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_html_a686959fe71eaba0dcaf7849a2ad37c72"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a686959fe71eaba0dcaf7849a2ad37c72">grpc_event_engine::experimental::EventEngine::DNSResolver::LookupTXT</a></div><div class="ttdeci">virtual void LookupTXT(LookupTXTCallback on_resolve, absl::string_view name)=0</div><div class="ttdoc">Asynchronously perform a TXT record lookup.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_endpoint_config_html"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_endpoint_config.html">grpc_event_engine::experimental::EndpointConfig</a></div><div class="ttdoc">Collection of parameters used to configure client and server endpoints.</div><div class="ttdef"><b>Definition:</b> endpoint_config.h:31</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address_html"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html">grpc_event_engine::experimental::EventEngine::ResolvedAddress</a></div><div class="ttdoc">Thin wrapper around a platform-specific sockaddr type.</div><div class="ttdef"><b>Definition:</b> event_engine.h:147</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener_html"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html">grpc_event_engine::experimental::EventEngine::Listener</a></div><div class="ttdoc">Listens for incoming connection requests from gRPC clients and initiates request processing once conn...</div><div class="ttdef"><b>Definition:</b> event_engine.h:262</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_slice_buffer_html"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_slice_buffer.html">grpc_event_engine::experimental::SliceBuffer</a></div><div class="ttdoc">A Wrapper around grpc_slice_buffer pointer.</div><div class="ttdef"><b>Definition:</b> slice_buffer.h:53</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure_html"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html">grpc_event_engine::experimental::EventEngine::Closure</a></div><div class="ttdoc">A custom closure type for EventEngine task execution.</div><div class="ttdef"><b>Definition:</b> event_engine.h:108</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure_html_a5142b0ccf8177cde2ba8fb3a78a4de08"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html#a5142b0ccf8177cde2ba8fb3a78a4de08">grpc_event_engine::experimental::EventEngine::Closure::Closure</a></div><div class="ttdeci">Closure()=default</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address_html_a9d7a3bf8e2c76c6d4fedd72b99f2397c"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#a9d7a3bf8e2c76c6d4fedd72b99f2397c">grpc_event_engine::experimental::EventEngine::ResolvedAddress::ResolvedAddress</a></div><div class="ttdeci">ResolvedAddress()=default</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address_html_ac82fd08c29871dfd009a6f592fdddecd"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_resolved_address.html#ac82fd08c29871dfd009a6f592fdddecd">grpc_event_engine::experimental::EventEngine::ResolvedAddress::address</a></div><div class="ttdeci">const struct sockaddr * address() const</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener_html_abe5c11d2747373e1d07ed422a7976714"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#abe5c11d2747373e1d07ed422a7976714">grpc_event_engine::experimental::EventEngine::Listener::Start</a></div><div class="ttdeci">virtual absl::Status Start()=0</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure_html_a65bc744a1b6368b335ee06a18c045da0"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html#a65bc744a1b6368b335ee06a18c045da0">grpc_event_engine::experimental::EventEngine::Closure::operator=</a></div><div class="ttdeci">Closure &amp; operator=(const Closure &amp;)=delete</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure_html_a3ff7f740a90cc5f3077e5ea2418334a3"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html#a3ff7f740a90cc5f3077e5ea2418334a3">grpc_event_engine::experimental::EventEngine::Closure::~Closure</a></div><div class="ttdeci">virtual ~Closure()=default</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_a589e091e9af842bcda00411996d9255f"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a589e091e9af842bcda00411996d9255f">grpc_event_engine::experimental::EventEngine::Run</a></div><div class="ttdeci">virtual void Run(Closure *closure)=0</div><div class="ttdoc">Asynchronously executes a task as soon as possible.</div></div>
<div class="ttc" id="aevent__engine_2slice__buffer_8h_html"><div class="ttname"><a href="event__engine_2slice__buffer_8h.html">slice_buffer.h</a></div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle_html_a2ac912ac58087e650a0784c26b032430"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a2ac912ac58087e650a0784c26b032430">grpc_event_engine::experimental::EventEngine::TaskHandle::kInvalid</a></div><div class="ttdeci">static const TaskHandle kInvalid</div><div class="ttdef"><b>Definition:</b> event_engine.h:125</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args_html_ab97c6daae5fd26738e1a7b9a9d6143ec"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_1_1_write_args.html#ab97c6daae5fd26738e1a7b9a9d6143ec">grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs::google_specific</a></div><div class="ttdeci">void * google_specific</div><div class="ttdef"><b>Definition:</b> event_engine.h:216</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_resolver_options_html_acd167b0350ce5c97b722c1bc2cf8bd60"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_resolver_options.html#acd167b0350ce5c97b722c1bc2cf8bd60">grpc_event_engine::experimental::EventEngine::DNSResolver::ResolverOptions::dns_server</a></div><div class="ttdeci">std::string dns_server</div><div class="ttdoc">If empty, default DNS servers will be used.</div><div class="ttdef"><b>Definition:</b> event_engine.h:336</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record_html_ab26062fdf016d3f537da5750394fd9ee"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#ab26062fdf016d3f537da5750394fd9ee">grpc_event_engine::experimental::EventEngine::DNSResolver::SRVRecord::weight</a></div><div class="ttdeci">int weight</div><div class="ttdef"><b>Definition:</b> event_engine.h:343</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_html_ad0b6e8aa3891af48f11a6422f1d95bb2"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#ad0b6e8aa3891af48f11a6422f1d95bb2">grpc_event_engine::experimental::EventEngine::Endpoint::GetPeerAddress</a></div><div class="ttdeci">virtual const ResolvedAddress &amp; GetPeerAddress() const =0</div><div class="ttdoc">Returns an address in the format described in DNSResolver.</div></div>
<div class="ttc" id="anamespacegrpc__event__engine_1_1experimental_html_a89b1b9fe77b7e8b8aa7f31c30039a1c8"><div class="ttname"><a href="namespacegrpc__event__engine_1_1experimental.html#a89b1b9fe77b7e8b8aa7f31c30039a1c8">grpc_event_engine::experimental::CreateEventEngine</a></div><div class="ttdeci">std::unique_ptr&lt; EventEngine &gt; CreateEventEngine()</div><div class="ttdoc">Create an EventEngine using the default factory.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure_html_a8c19a7ac4fbbef243df55d3a3858d7be"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_closure.html#a8c19a7ac4fbbef243df55d3a3858d7be">grpc_event_engine::experimental::EventEngine::Closure::Run</a></div><div class="ttdeci">virtual void Run()=0</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_html"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html">grpc_event_engine::experimental::EventEngine::DNSResolver</a></div><div class="ttdoc">Provides asynchronous resolution.</div><div class="ttdef"><b>Definition:</b> event_engine.h:330</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle_html"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html">grpc_event_engine::experimental::EventEngine::TaskHandle</a></div><div class="ttdoc">Represents a scheduled task.</div><div class="ttdef"><b>Definition:</b> event_engine.h:123</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_aab8a579f7dc8429c8d2aa2cd81da910b"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#aab8a579f7dc8429c8d2aa2cd81da910b">grpc_event_engine::experimental::EventEngine::Cancel</a></div><div class="ttdeci">virtual bool Cancel(TaskHandle handle)=0</div><div class="ttdoc">Request cancellation of a task.</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record_html_a933fb42b443b07ae59029af2a716c5c8"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_1_1_s_r_v_record.html#a933fb42b443b07ae59029af2a716c5c8">grpc_event_engine::experimental::EventEngine::DNSResolver::SRVRecord::priority</a></div><div class="ttdeci">int priority</div><div class="ttdef"><b>Definition:</b> event_engine.h:342</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_a9454ccca7e1b26a2ba5dd37ebc16b4d0"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a9454ccca7e1b26a2ba5dd37ebc16b4d0">grpc_event_engine::experimental::EventEngine::GetDNSResolver</a></div><div class="ttdeci">virtual absl::StatusOr&lt; std::unique_ptr&lt; DNSResolver &gt; &gt; GetDNSResolver(const DNSResolver::ResolverOptions &amp;options)=0</div><div class="ttdoc">Creates and returns an instance of a DNSResolver, optionally configured by the options struct.</div></div>
<div class="ttc" id="anamespacegrpc__event__engine_html"><div class="ttname"><a href="namespacegrpc__event__engine.html">grpc_event_engine</a></div><div class="ttdef"><b>Definition:</b> endpoint_config.h:24</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_html_a10f0463006effedc249bb06c810d5ffc"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a10f0463006effedc249bb06c810d5ffc">grpc_event_engine::experimental::EventEngine::DNSResolver::LookupTXTCallback</a></div><div class="ttdeci">absl::AnyInvocable&lt; void(absl::StatusOr&lt; std::vector&lt; std::string &gt; &gt;)&gt; LookupTXTCallback</div><div class="ttdoc">Called with the result of a TXT record lookup.</div><div class="ttdef"><b>Definition:</b> event_engine.h:354</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_html"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html">grpc_event_engine::experimental::EventEngine::Endpoint</a></div><div class="ttdoc">One end of a connection between a gRPC client and server.</div><div class="ttdef"><b>Definition:</b> event_engine.h:170</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_memory_allocator_html"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_memory_allocator.html">grpc_event_engine::experimental::MemoryAllocator</a></div><div class="ttdef"><b>Definition:</b> memory_allocator.h:35</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle_html_a479a2a80aa5da7f396fa743fe5df4b01"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a479a2a80aa5da7f396fa743fe5df4b01">grpc_event_engine::experimental::EventEngine::ConnectionHandle::kInvalid</a></div><div class="ttdeci">static const ConnectionHandle kInvalid</div><div class="ttdef"><b>Definition:</b> event_engine.h:134</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_a1b0a8f1b88d47735c3b5bb7a51d8c4c5"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a1b0a8f1b88d47735c3b5bb7a51d8c4c5">grpc_event_engine::experimental::EventEngine::Connect</a></div><div class="ttdeci">virtual ConnectionHandle Connect(OnConnectCallback on_connect, const ResolvedAddress &amp;addr, const EndpointConfig &amp;args, MemoryAllocator memory_allocator, Duration timeout)=0</div><div class="ttdoc">Creates a client network connection to a remote network listener.</div></div>
<div class="ttc" id="anamespacegrpc__event__engine_1_1experimental_html_a94ab619b34c2c1f57c2d068d0c18907c"><div class="ttname"><a href="namespacegrpc__event__engine_1_1experimental.html#a94ab619b34c2c1f57c2d068d0c18907c">grpc_event_engine::experimental::SetEventEngineFactory</a></div><div class="ttdeci">void SetEventEngineFactory(absl::AnyInvocable&lt; std::unique_ptr&lt; EventEngine &gt;()&gt; factory)</div><div class="ttdoc">Replace gRPC's default EventEngine factory.</div></div>
<div class="ttc" id="amemory__allocator_8h_html"><div class="ttname"><a href="memory__allocator_8h.html">memory_allocator.h</a></div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle_html_a81267fb939a1c23a2b48e58d6db54f37"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a81267fb939a1c23a2b48e58d6db54f37">grpc_event_engine::experimental::EventEngine::TaskHandle::keys</a></div><div class="ttdeci">intptr_t keys[2]</div><div class="ttdef"><b>Definition:</b> event_engine.h:124</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle_html_a2c1a17e40a25b21c1e841d7a1e4b5658"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_connection_handle.html#a2c1a17e40a25b21c1e841d7a1e4b5658">grpc_event_engine::experimental::EventEngine::ConnectionHandle::operator!=</a></div><div class="ttdeci">friend bool operator!=(const ConnectionHandle &amp;lhs, const ConnectionHandle &amp;rhs)</div></div>
<div class="ttc" id="aendpoint__config_8h_html"><div class="ttname"><a href="endpoint__config_8h.html">endpoint_config.h</a></div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener_html_a691cbfd1fc82bed7d7dc04c9e7bba3cd"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_listener.html#a691cbfd1fc82bed7d7dc04c9e7bba3cd">grpc_event_engine::experimental::EventEngine::Listener::~Listener</a></div><div class="ttdeci">virtual ~Listener()=default</div></div>
<div class="ttc" id="anamespacegrpc_1_1protobuf_1_1util_html_ad372120c6db3d26bf54ab69b6f595fe4"><div class="ttname"><a href="namespacegrpc_1_1protobuf_1_1util.html#ad372120c6db3d26bf54ab69b6f595fe4">grpc::protobuf::util::Status</a></div><div class="ttdeci">::absl::Status Status</div><div class="ttdef"><b>Definition:</b> config_protobuf.h:97</div></div>
<div class="ttc" id="astructgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle_html_a43ed5cddd5f79a123a7c4b045858ce16"><div class="ttname"><a href="structgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_task_handle.html#a43ed5cddd5f79a123a7c4b045858ce16">grpc_event_engine::experimental::EventEngine::TaskHandle::operator!=</a></div><div class="ttdeci">friend bool operator!=(const TaskHandle &amp;lhs, const TaskHandle &amp;rhs)</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver_html_a6934f9edc78f329c6c95f34a4110dace"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_d_n_s_resolver.html#a6934f9edc78f329c6c95f34a4110dace">grpc_event_engine::experimental::EventEngine::DNSResolver::LookupSRV</a></div><div class="ttdeci">virtual void LookupSRV(LookupSRVCallback on_resolve, absl::string_view name)=0</div><div class="ttdoc">Asynchronously perform an SRV record lookup.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_a42219352c1ecf679da50671e9a1b35fb"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a42219352c1ecf679da50671e9a1b35fb">grpc_event_engine::experimental::EventEngine::CreateListener</a></div><div class="ttdeci">virtual absl::StatusOr&lt; std::unique_ptr&lt; Listener &gt; &gt; CreateListener(Listener::AcceptCallback on_accept, absl::AnyInvocable&lt; void(absl::Status)&gt; on_shutdown, const EndpointConfig &amp;config, std::unique_ptr&lt; MemoryAllocatorFactory &gt; memory_allocator_factory)=0</div><div class="ttdoc">Factory method to create a network listener / server.</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_html_a3380997754430d27e6b9832174184327"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine.html#a3380997754430d27e6b9832174184327">grpc_event_engine::experimental::EventEngine::Duration</a></div><div class="ttdeci">std::chrono::duration&lt; int64_t, std::nano &gt; Duration</div><div class="ttdoc">A duration between two events.</div><div class="ttdef"><b>Definition:</b> event_engine.h:100</div></div>
<div class="ttc" id="aclassgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint_html_a4cda2ef24a6abbc49df1806599c6c930"><div class="ttname"><a href="classgrpc__event__engine_1_1experimental_1_1_event_engine_1_1_endpoint.html#a4cda2ef24a6abbc49df1806599c6c930">grpc_event_engine::experimental::EventEngine::Endpoint::GetLocalAddress</a></div><div class="ttdeci">virtual const ResolvedAddress &amp; GetLocalAddress() const =0</div></div>
<div class="ttc" id="asupport_2port__platform_8h_html"><div class="ttname"><a href="support_2port__platform_8h.html">port_platform.h</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Sep 6 2023 16:09:16 for GRPC C++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>