uvw/loop_8h_source.html
2023-05-22 11:13:58 +02:00

332 lines
52 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>uvw: src/uvw/loop.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 id="projectrow">
<td id="projectalign">
<div id="projectname">uvw<span id="projectnumber">&#160;3.1.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_98934c98f70735fe3a272005a9eb8736.html">uvw</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">loop.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef UVW_LOOP_INCLUDE_H</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define UVW_LOOP_INCLUDE_H</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor"># include &lt;ciso646&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;chrono&gt;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;uv.h&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &quot;config.h&quot;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;emitter.h&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &quot;util.h&quot;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceuvw.html">uvw</a> {</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">class </span>async_handle;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">class </span>check_handle;</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="keyword">class </span>fs_event_handle;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="keyword">class </span>fs_poll_handle;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="keyword">class </span>idle_handle;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="keyword">class </span>pipe_handle;</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="keyword">class </span>poll_handle;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="keyword">class </span>prepare_handle;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="keyword">class </span>process_handle;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="keyword">class </span>signal_handle;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">class </span>tcp_handle;</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="keyword">class </span>timer_handle;</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keyword">class </span>tty_handle;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">class </span>udp_handle;</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="keyword">namespace </span>details {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="keyword">enum class</span> uvw_loop_option : std::underlying_type_t&lt;uv_loop_option&gt; {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> BLOCK_SIGNAL = UV_LOOP_BLOCK_SIGNAL,</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> IDLE_TIME = UV_METRICS_IDLE_TIME</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span>};</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="keyword">enum class</span> uvw_run_mode : std::underlying_type_t&lt;uv_run_mode&gt; {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> DEFAULT = UV_RUN_DEFAULT,</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> ONCE = UV_RUN_ONCE,</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> NOWAIT = UV_RUN_NOWAIT</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>};</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>} <span class="comment">// namespace details</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="namespaceuvw.html#af9dde6c7d8c096633c47b47962ba91e3"> 50</a></span><span class="keyword">using </span><a class="code hl_typedef" href="namespaceuvw.html#af9dde6c7d8c096633c47b47962ba91e3">metrics_type</a> = uv_metrics_t; </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html"> 60</a></span><span class="keyword">class </span><a class="code hl_class" href="classuvw_1_1loop.html">loop</a> final: <span class="keyword">public</span> <a class="code hl_class" href="classuvw_1_1emitter.html">emitter</a>&lt;loop&gt;, <span class="keyword">public</span> std::enable_shared_from_this&lt;loop&gt; {</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">using </span>deleter = void (*)(uv_loop_t *);</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>, <span class="keyword">typename</span>...&gt;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="classuvw_1_1resource.html">resource</a>;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">class </span>uv_token {</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="classuvw_1_1loop.html">loop</a>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">explicit</span> uv_token(<span class="keywordtype">int</span>) {}</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> };</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <a class="code hl_class" href="classuvw_1_1loop.html">loop</a>(std::unique_ptr&lt;uv_loop_t, deleter&gt; ptr) <span class="keyword">noexcept</span>;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">using </span>token = uv_token;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">using </span>time = std::chrono::duration&lt;uint64_t, std::milli&gt;;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">using </span>option = details::uvw_loop_option;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">using </span>run_mode = details::uvw_run_mode;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a77a8922defbd7643a4b18550d263a8d6"> 83</a></span> <span class="keyword">static</span> std::shared_ptr&lt;loop&gt; <a class="code hl_function" href="classuvw_1_1loop.html#a77a8922defbd7643a4b18550d263a8d6">create</a>();</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#ad4d9897ff0dbc9a534bf38731fa16b46"> 95</a></span> <span class="keyword">static</span> std::shared_ptr&lt;loop&gt; <a class="code hl_function" href="classuvw_1_1loop.html#ad4d9897ff0dbc9a534bf38731fa16b46">create</a>(uv_loop_t *res);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a6392ce48b55f9b5644eeec2d6ce0e6d4"> 109</a></span> <span class="keyword">static</span> std::shared_ptr&lt;loop&gt; <a class="code hl_function" href="classuvw_1_1loop.html#a6392ce48b55f9b5644eeec2d6ce0e6d4">get_default</a>();</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_class" href="classuvw_1_1loop.html">loop</a>(<span class="keyword">const</span> <a class="code hl_class" href="classuvw_1_1loop.html">loop</a> &amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <a class="code hl_class" href="classuvw_1_1loop.html">loop</a>(<a class="code hl_class" href="classuvw_1_1loop.html">loop</a> &amp;&amp;other) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <a class="code hl_class" href="classuvw_1_1loop.html">loop</a> &amp;operator=(<span class="keyword">const</span> <a class="code hl_class" href="classuvw_1_1loop.html">loop</a> &amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <a class="code hl_class" href="classuvw_1_1loop.html">loop</a> &amp;operator=(<a class="code hl_class" href="classuvw_1_1loop.html">loop</a> &amp;&amp;other) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <a class="code hl_class" href="classuvw_1_1loop.html">~loop</a>() noexcept;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> template&lt;typename... Args&gt;</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#acb38eaee2680ed1c4ba74459e5c2a84a"> 139</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1loop.html#acb38eaee2680ed1c4ba74459e5c2a84a">configure</a>(option flag, Args &amp;&amp;...args) {</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">return</span> uv_loop_configure(uv_loop.get(), <span class="keyword">static_cast&lt;</span>uv_loop_option<span class="keyword">&gt;</span>(flag), std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> }</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a36e1eb17d55ab7b8d089e55823015618"> 154</a></span> std::shared_ptr&lt;R&gt; <a class="code hl_function" href="classuvw_1_1loop.html#a36e1eb17d55ab7b8d089e55823015618">resource</a>(Args &amp;&amp;...args) {</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">auto</span> ptr = uninitialized_resource&lt;R&gt;(std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> ptr = (ptr-&gt;init() == 0) ? ptr : <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordflow">return</span> ptr;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> }</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#aef0dbe4d1e82e43a8df3df1c7386efca"> 165</a></span> std::shared_ptr&lt;R&gt; <a class="code hl_function" href="classuvw_1_1loop.html#aef0dbe4d1e82e43a8df3df1c7386efca">uninitialized_resource</a>(Args &amp;&amp;...args) {</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordflow">return</span> std::make_shared&lt;R&gt;(token{0}, shared_from_this(), std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> }</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#ac0a8719f173a417a722fe779792a52e6"> 177</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1loop.html#ac0a8719f173a417a722fe779792a52e6">close</a>();</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a199e23bce642f5618e3d0c2b1e8d0cdf"> 197</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1loop.html#a199e23bce642f5618e3d0c2b1e8d0cdf">run</a>(run_mode mode = run_mode::DEFAULT) <span class="keyword">noexcept</span>;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a5d56b835e022e812d4930367b0a4f210"> 203</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classuvw_1_1loop.html#a5d56b835e022e812d4930367b0a4f210">alive</a>() const noexcept;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#aaafbdbc9022bf12d4aad3db16dcee442"> 213</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classuvw_1_1loop.html#aaafbdbc9022bf12d4aad3db16dcee442">stop</a>() noexcept;</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#addbc84b4d00e0e61cf68bff4b7560b1f"> 224</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1loop.html#addbc84b4d00e0e61cf68bff4b7560b1f">descriptor</a>() const noexcept;</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> </div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#aa358c1daf70696679edd08513e1f3e31"> 232</a></span> std::pair&lt;<span class="keywordtype">bool</span>, time&gt; <a class="code hl_function" href="classuvw_1_1loop.html#aa358c1daf70696679edd08513e1f3e31">timeout</a>() const noexcept;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#aeae404d30c956b2c5fa15ec3997f47fc"> 239</a></span> time <a class="code hl_function" href="classuvw_1_1loop.html#aeae404d30c956b2c5fa15ec3997f47fc">idle_time</a>() const noexcept;</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a22d30bda64387cb70bd348f8e3b2932d"> 245</a></span> <a class="code hl_typedef" href="namespaceuvw.html#af9dde6c7d8c096633c47b47962ba91e3">metrics_type</a> <a class="code hl_function" href="classuvw_1_1loop.html#a22d30bda64387cb70bd348f8e3b2932d">metrics</a>() const noexcept;</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> </div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#ab48abde5d862db1a856900b08ecc02dd"> 259</a></span> time <a class="code hl_function" href="classuvw_1_1loop.html#ab48abde5d862db1a856900b08ecc02dd">now</a>() const noexcept;</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a762ed24cc491eef2c942505d1885b0aa"> 270</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classuvw_1_1loop.html#a762ed24cc491eef2c942505d1885b0aa">update</a>() const noexcept;</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> template&lt;typename Func&gt;</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#aa46a050e186935c0be4eca7815cd9207"> 280</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classuvw_1_1loop.html#aa46a050e186935c0be4eca7815cd9207">walk</a>(Func callback) {</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keyword">auto</span> func = [](uv_handle_t *hndl, <span class="keywordtype">void</span> *func) {</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordflow">if</span>(hndl-&gt;data) {</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keyword">auto</span> &amp;cb = *<span class="keyword">static_cast&lt;</span>Func *<span class="keyword">&gt;</span>(func);</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordflow">switch</span>(<a class="code hl_function" href="structuvw_1_1utilities.html#ab234bae92058e009c344eaf6a190d7f2">utilities::guess_handle</a>(<a class="code hl_typedef" href="namespaceuvw.html#a9e28e1855691dd1af105626ed11f3ac4">handle_category</a>{hndl-&gt;type})) {</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordflow">case</span> handle_type::ASYNC:</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1async__handle.html">async_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">case</span> handle_type::CHECK:</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1check__handle.html">check_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="keywordflow">case</span> handle_type::FS_EVENT:</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1fs__event__handle.html">fs_event_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="keywordflow">case</span> handle_type::FS_POLL:</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1fs__poll__handle.html">fs_poll_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordflow">case</span> handle_type::IDLE:</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1idle__handle.html">idle_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keywordflow">case</span> handle_type::PIPE:</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1pipe__handle.html">pipe_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="keywordflow">case</span> handle_type::POLL:</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1poll__handle.html">poll_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keywordflow">case</span> handle_type::PREPARE:</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1prepare__handle.html">prepare_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="keywordflow">case</span> handle_type::PROCESS:</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1process__handle.html">process_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">case</span> handle_type::SIGNAL:</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1signal__handle.html">signal_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="keywordflow">case</span> handle_type::TCP:</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1tcp__handle.html">tcp_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> <span class="keywordflow">case</span> handle_type::TIMER:</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1timer__handle.html">timer_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="keywordflow">case</span> handle_type::TTY:</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1tty__handle.html">tty_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordflow">case</span> handle_type::UDP:</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> cb(*<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classuvw_1_1udp__handle.html">udp_handle</a> *<span class="keyword">&gt;</span>(hndl-&gt;data));</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <span class="comment">// this handle isn&#39;t managed by uvw, let it be...</span></div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> }</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> }</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> };</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> </div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> uv_walk(uv_loop.get(), func, &amp;callback);</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> }</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a2a569b877ff0c1cd3f66e21d5a2ded4c"> 368</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1loop.html#a2a569b877ff0c1cd3f66e21d5a2ded4c">fork</a>() noexcept;</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> </div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> template&lt;typename R = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a1b1266e74e2a0edf9493394af3847bb3"> 375</a></span> std::shared_ptr&lt;R&gt; <a class="code hl_function" href="classuvw_1_1loop.html#a1b1266e74e2a0edf9493394af3847bb3">data</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keywordflow">return</span> std::static_pointer_cast&lt;R&gt;(user_data);</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> }</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> </div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a7b5f858b0de8daf348f89af2997063c7"> 383</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classuvw_1_1loop.html#a7b5f858b0de8daf348f89af2997063c7">data</a>(std::shared_ptr&lt;void&gt; ud);</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> </div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a4e1f127cadc84b1729bc7835b697d3bf"> 400</a></span> <span class="keyword">const</span> uv_loop_t *<a class="code hl_function" href="classuvw_1_1loop.html#a4e1f127cadc84b1729bc7835b697d3bf">raw</a>() const noexcept;</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> </div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="classuvw_1_1loop.html#a8be924a8e240c444c69fe7c4e754892f"> 417</a></span> uv_loop_t *<a class="code hl_function" href="classuvw_1_1loop.html#a4e1f127cadc84b1729bc7835b697d3bf">raw</a>() noexcept;</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> </div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span>private:</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> std::unique_ptr&lt;uv_loop_t, deleter&gt; uv_loop;</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> std::shared_ptr&lt;<span class="keywordtype">void</span>&gt; user_data{<span class="keyword">nullptr</span>};</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span>};</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span>} <span class="comment">// namespace uvw</span></div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> </div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span><span class="preprocessor">#ifndef UVW_AS_LIB</span></div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span><span class="preprocessor"># include &quot;loop.cpp&quot;</span></div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> </div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span><span class="preprocessor">#endif </span><span class="comment">// UVW_LOOP_INCLUDE_H</span></div>
<div class="ttc" id="aclassuvw_1_1async__handle_html"><div class="ttname"><a href="classuvw_1_1async__handle.html">uvw::async_handle</a></div><div class="ttdoc">The async handle.</div><div class="ttdef"><b>Definition:</b> <a href="async_8h_source.html#l00021">async.h:21</a></div></div>
<div class="ttc" id="aclassuvw_1_1check__handle_html"><div class="ttname"><a href="classuvw_1_1check__handle.html">uvw::check_handle</a></div><div class="ttdoc">The check handle.</div><div class="ttdef"><b>Definition:</b> <a href="check_8h_source.html#l00021">check.h:21</a></div></div>
<div class="ttc" id="aclassuvw_1_1emitter_html"><div class="ttname"><a href="classuvw_1_1emitter.html">uvw::emitter</a></div><div class="ttdoc">Event emitter base class.</div><div class="ttdef"><b>Definition:</b> <a href="emitter_8h_source.html#l00083">emitter.h:83</a></div></div>
<div class="ttc" id="aclassuvw_1_1fs__event__handle_html"><div class="ttname"><a href="classuvw_1_1fs__event__handle.html">uvw::fs_event_handle</a></div><div class="ttdoc">The fs event handle.</div><div class="ttdef"><b>Definition:</b> <a href="fs__event_8h_source.html#l00067">fs_event.h:67</a></div></div>
<div class="ttc" id="aclassuvw_1_1fs__poll__handle_html"><div class="ttname"><a href="classuvw_1_1fs__poll__handle.html">uvw::fs_poll_handle</a></div><div class="ttdoc">The fs poll handle.</div><div class="ttdef"><b>Definition:</b> <a href="fs__poll_8h_source.html#l00031">fs_poll.h:31</a></div></div>
<div class="ttc" id="aclassuvw_1_1idle__handle_html"><div class="ttname"><a href="classuvw_1_1idle__handle.html">uvw::idle_handle</a></div><div class="ttdoc">The idle handle.</div><div class="ttdef"><b>Definition:</b> <a href="idle_8h_source.html#l00029">idle.h:29</a></div></div>
<div class="ttc" id="aclassuvw_1_1loop_html"><div class="ttname"><a href="classuvw_1_1loop.html">uvw::loop</a></div><div class="ttdoc">The loop class.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00060">loop.h:60</a></div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a199e23bce642f5618e3d0c2b1e8d0cdf"><div class="ttname"><a href="classuvw_1_1loop.html#a199e23bce642f5618e3d0c2b1e8d0cdf">uvw::loop::run</a></div><div class="ttdeci">int run(run_mode mode=run_mode::DEFAULT) noexcept</div><div class="ttdoc">Runs the event loop.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a1b1266e74e2a0edf9493394af3847bb3"><div class="ttname"><a href="classuvw_1_1loop.html#a1b1266e74e2a0edf9493394af3847bb3">uvw::loop::data</a></div><div class="ttdeci">std::shared_ptr&lt; R &gt; data() const</div><div class="ttdoc">Gets user-defined data. uvw won't use this field in any case.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00375">loop.h:375</a></div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a22d30bda64387cb70bd348f8e3b2932d"><div class="ttname"><a href="classuvw_1_1loop.html#a22d30bda64387cb70bd348f8e3b2932d">uvw::loop::metrics</a></div><div class="ttdeci">metrics_type metrics() const noexcept</div><div class="ttdoc">Tracks various internal operations of the event loop.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a2a569b877ff0c1cd3f66e21d5a2ded4c"><div class="ttname"><a href="classuvw_1_1loop.html#a2a569b877ff0c1cd3f66e21d5a2ded4c">uvw::loop::fork</a></div><div class="ttdeci">int fork() noexcept</div><div class="ttdoc">Reinitialize any kernel state necessary in the child process after a fork(2) system call.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a36e1eb17d55ab7b8d089e55823015618"><div class="ttname"><a href="classuvw_1_1loop.html#a36e1eb17d55ab7b8d089e55823015618">uvw::loop::resource</a></div><div class="ttdeci">std::shared_ptr&lt; R &gt; resource(Args &amp;&amp;...args)</div><div class="ttdoc">Creates resources of any type.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00154">loop.h:154</a></div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a4e1f127cadc84b1729bc7835b697d3bf"><div class="ttname"><a href="classuvw_1_1loop.html#a4e1f127cadc84b1729bc7835b697d3bf">uvw::loop::raw</a></div><div class="ttdeci">const uv_loop_t * raw() const noexcept</div><div class="ttdoc">Gets the underlying raw data structure.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a5d56b835e022e812d4930367b0a4f210"><div class="ttname"><a href="classuvw_1_1loop.html#a5d56b835e022e812d4930367b0a4f210">uvw::loop::alive</a></div><div class="ttdeci">bool alive() const noexcept</div><div class="ttdoc">Checks if there are active resources.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a6392ce48b55f9b5644eeec2d6ce0e6d4"><div class="ttname"><a href="classuvw_1_1loop.html#a6392ce48b55f9b5644eeec2d6ce0e6d4">uvw::loop::get_default</a></div><div class="ttdeci">static std::shared_ptr&lt; loop &gt; get_default()</div><div class="ttdoc">Gets the initialized default loop.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a762ed24cc491eef2c942505d1885b0aa"><div class="ttname"><a href="classuvw_1_1loop.html#a762ed24cc491eef2c942505d1885b0aa">uvw::loop::update</a></div><div class="ttdeci">void update() const noexcept</div><div class="ttdoc">Updates the event loops concept of now.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a77a8922defbd7643a4b18550d263a8d6"><div class="ttname"><a href="classuvw_1_1loop.html#a77a8922defbd7643a4b18550d263a8d6">uvw::loop::create</a></div><div class="ttdeci">static std::shared_ptr&lt; loop &gt; create()</div><div class="ttdoc">Initializes a new loop instance.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_a7b5f858b0de8daf348f89af2997063c7"><div class="ttname"><a href="classuvw_1_1loop.html#a7b5f858b0de8daf348f89af2997063c7">uvw::loop::data</a></div><div class="ttdeci">void data(std::shared_ptr&lt; void &gt; ud)</div><div class="ttdoc">Sets arbitrary data. uvw won't use this field in any case.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_aa358c1daf70696679edd08513e1f3e31"><div class="ttname"><a href="classuvw_1_1loop.html#aa358c1daf70696679edd08513e1f3e31">uvw::loop::timeout</a></div><div class="ttdeci">std::pair&lt; bool, time &gt; timeout() const noexcept</div><div class="ttdoc">Gets the poll timeout.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_aa46a050e186935c0be4eca7815cd9207"><div class="ttname"><a href="classuvw_1_1loop.html#aa46a050e186935c0be4eca7815cd9207">uvw::loop::walk</a></div><div class="ttdeci">void walk(Func callback)</div><div class="ttdoc">Walks the list of handles.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00280">loop.h:280</a></div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_aaafbdbc9022bf12d4aad3db16dcee442"><div class="ttname"><a href="classuvw_1_1loop.html#aaafbdbc9022bf12d4aad3db16dcee442">uvw::loop::stop</a></div><div class="ttdeci">void stop() noexcept</div><div class="ttdoc">Stops the event loop.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_ab48abde5d862db1a856900b08ecc02dd"><div class="ttname"><a href="classuvw_1_1loop.html#ab48abde5d862db1a856900b08ecc02dd">uvw::loop::now</a></div><div class="ttdeci">time now() const noexcept</div><div class="ttdoc">Returns the current timestamp in milliseconds.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_ac0a8719f173a417a722fe779792a52e6"><div class="ttname"><a href="classuvw_1_1loop.html#ac0a8719f173a417a722fe779792a52e6">uvw::loop::close</a></div><div class="ttdeci">int close()</div><div class="ttdoc">Releases all internal loop resources.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_acb38eaee2680ed1c4ba74459e5c2a84a"><div class="ttname"><a href="classuvw_1_1loop.html#acb38eaee2680ed1c4ba74459e5c2a84a">uvw::loop::configure</a></div><div class="ttdeci">int configure(option flag, Args &amp;&amp;...args)</div><div class="ttdoc">Sets additional loop options.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00139">loop.h:139</a></div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_ad4d9897ff0dbc9a534bf38731fa16b46"><div class="ttname"><a href="classuvw_1_1loop.html#ad4d9897ff0dbc9a534bf38731fa16b46">uvw::loop::create</a></div><div class="ttdeci">static std::shared_ptr&lt; loop &gt; create(uv_loop_t *res)</div><div class="ttdoc">Initializes a new loop instance from an existing resource.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_addbc84b4d00e0e61cf68bff4b7560b1f"><div class="ttname"><a href="classuvw_1_1loop.html#addbc84b4d00e0e61cf68bff4b7560b1f">uvw::loop::descriptor</a></div><div class="ttdeci">int descriptor() const noexcept</div><div class="ttdoc">Get backend file descriptor.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_aeae404d30c956b2c5fa15ec3997f47fc"><div class="ttname"><a href="classuvw_1_1loop.html#aeae404d30c956b2c5fa15ec3997f47fc">uvw::loop::idle_time</a></div><div class="ttdeci">time idle_time() const noexcept</div><div class="ttdoc">Returns the amount of time the event loop has been idle. The call is thread safe.</div></div>
<div class="ttc" id="aclassuvw_1_1loop_html_aef0dbe4d1e82e43a8df3df1c7386efca"><div class="ttname"><a href="classuvw_1_1loop.html#aef0dbe4d1e82e43a8df3df1c7386efca">uvw::loop::uninitialized_resource</a></div><div class="ttdeci">std::shared_ptr&lt; R &gt; uninitialized_resource(Args &amp;&amp;...args)</div><div class="ttdoc">Creates uninitialized resources of any type.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00165">loop.h:165</a></div></div>
<div class="ttc" id="aclassuvw_1_1pipe__handle_html"><div class="ttname"><a href="classuvw_1_1pipe__handle.html">uvw::pipe_handle</a></div><div class="ttdoc">The pipe handle.</div><div class="ttdef"><b>Definition:</b> <a href="pipe_8h_source.html#l00038">pipe.h:38</a></div></div>
<div class="ttc" id="aclassuvw_1_1poll__handle_html"><div class="ttname"><a href="classuvw_1_1poll__handle.html">uvw::poll_handle</a></div><div class="ttdoc">The poll handle.</div><div class="ttdef"><b>Definition:</b> <a href="poll_8h_source.html#l00059">poll.h:59</a></div></div>
<div class="ttc" id="aclassuvw_1_1prepare__handle_html"><div class="ttname"><a href="classuvw_1_1prepare__handle.html">uvw::prepare_handle</a></div><div class="ttdoc">The prepare handle.</div><div class="ttdef"><b>Definition:</b> <a href="prepare_8h_source.html#l00021">prepare.h:21</a></div></div>
<div class="ttc" id="aclassuvw_1_1process__handle_html"><div class="ttname"><a href="classuvw_1_1process__handle.html">uvw::process_handle</a></div><div class="ttdoc">The process handle.</div><div class="ttdef"><b>Definition:</b> <a href="process_8h_source.html#l00058">process.h:58</a></div></div>
<div class="ttc" id="aclassuvw_1_1resource_html"><div class="ttname"><a href="classuvw_1_1resource.html">uvw::resource</a></div><div class="ttdoc">Common class for almost all the resources available in uvw.</div><div class="ttdef"><b>Definition:</b> <a href="resource_8hpp_source.html#l00018">resource.hpp:18</a></div></div>
<div class="ttc" id="aclassuvw_1_1signal__handle_html"><div class="ttname"><a href="classuvw_1_1signal__handle.html">uvw::signal_handle</a></div><div class="ttdoc">The signal handle.</div><div class="ttdef"><b>Definition:</b> <a href="signal_8h_source.html#l00031">signal.h:31</a></div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html"><div class="ttname"><a href="classuvw_1_1tcp__handle.html">uvw::tcp_handle</a></div><div class="ttdoc">The TCP handle.</div><div class="ttdef"><b>Definition:</b> <a href="tcp_8h_source.html#l00043">tcp.h:43</a></div></div>
<div class="ttc" id="aclassuvw_1_1timer__handle_html"><div class="ttname"><a href="classuvw_1_1timer__handle.html">uvw::timer_handle</a></div><div class="ttdoc">The timer handle.</div><div class="ttdef"><b>Definition:</b> <a href="timer_8h_source.html#l00022">timer.h:22</a></div></div>
<div class="ttc" id="aclassuvw_1_1tty__handle_html"><div class="ttname"><a href="classuvw_1_1tty__handle.html">uvw::tty_handle</a></div><div class="ttdoc">The tty handle.</div><div class="ttdef"><b>Definition:</b> <a href="tty_8h_source.html#l00050">tty.h:50</a></div></div>
<div class="ttc" id="aclassuvw_1_1udp__handle_html"><div class="ttname"><a href="classuvw_1_1udp__handle.html">uvw::udp_handle</a></div><div class="ttdoc">The UDP handle.</div><div class="ttdef"><b>Definition:</b> <a href="udp_8h_source.html#l00082">udp.h:82</a></div></div>
<div class="ttc" id="anamespaceuvw_html"><div class="ttname"><a href="namespaceuvw.html">uvw</a></div><div class="ttdoc">uvw default namespace.</div><div class="ttdef"><b>Definition:</b> <a href="async_8h_source.html#l00008">async.h:8</a></div></div>
<div class="ttc" id="anamespaceuvw_html_a9e28e1855691dd1af105626ed11f3ac4"><div class="ttname"><a href="namespaceuvw.html#a9e28e1855691dd1af105626ed11f3ac4">uvw::handle_category</a></div><div class="ttdeci">details::uv_type_wrapper&lt; uv_handle_type &gt; handle_category</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00084">util.h:84</a></div></div>
<div class="ttc" id="anamespaceuvw_html_af9dde6c7d8c096633c47b47962ba91e3"><div class="ttname"><a href="namespaceuvw.html#af9dde6c7d8c096633c47b47962ba91e3">uvw::metrics_type</a></div><div class="ttdeci">uv_metrics_t metrics_type</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00050">loop.h:50</a></div></div>
<div class="ttc" id="astructuvw_1_1utilities_html_ab234bae92058e009c344eaf6a190d7f2"><div class="ttname"><a href="structuvw_1_1utilities.html#ab234bae92058e009c344eaf6a190d7f2">uvw::utilities::guess_handle</a></div><div class="ttdeci">static handle_type guess_handle(handle_category category) noexcept</div><div class="ttdoc">Gets the type of the handle given a category.</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6
</small></address>
</body>
</html>