| <!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>libguac: guacamole/socket.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">libguac<span id="projectnumber"> 1.5.3</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&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&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_6bb9fad85c98b48a11165f494b9f53ce.html">guacamole</a></li> </ul> |
| </div> |
| </div><!-- top --> |
| <div class="header"> |
| <div class="headertitle"><div class="title">socket.h</div></div> |
| </div><!--header--> |
| <div class="contents"> |
| <a href="socket_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div> |
| <div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div> |
| <div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div> |
| <div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * distributed with this work for additional information</span></div> |
| <div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div> |
| <div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div> |
| <div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * "License"); you may not use this file except in compliance</span></div> |
| <div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * with the License. You may obtain a copy of the License at</span></div> |
| <div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> *</span></div> |
| <div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div> |
| <div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> *</span></div> |
| <div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div> |
| <div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * software distributed under the License is distributed on an</span></div> |
| <div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div> |
| <div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * KIND, either express or implied. See the License for the</span></div> |
| <div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * specific language governing permissions and limitations</span></div> |
| <div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * under the License.</span></div> |
| <div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> */</span></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="preprocessor">#ifndef _GUAC_SOCKET_H</span></div> |
| <div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define _GUAC_SOCKET_H</span></div> |
| <div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div> |
| <div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#include "<a class="code" href="client-types_8h.html">client-types.h</a>"</span></div> |
| <div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#include "<a class="code" href="socket-constants_8h.html">socket-constants.h</a>"</span></div> |
| <div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include "<a class="code" href="socket-fntypes_8h.html">socket-fntypes.h</a>"</span></div> |
| <div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include "<a class="code" href="socket-types_8h.html">socket-types.h</a>"</span></div> |
| <div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include "<a class="code" href="timestamp-types_8h.html">timestamp-types.h</a>"</span></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="preprocessor">#include <pthread.h></span></div> |
| <div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include <stdint.h></span></div> |
| <div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#include <unistd.h></span></div> |
| <div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div> |
| <div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="structguac__socket.html"> 39</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structguac__socket.html">guac_socket</a> {</div> |
| <div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div> |
| <div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="structguac__socket.html#ac8340e5627b43138bb50aac6c4368c0d"> 44</a></span> <span class="keywordtype">void</span>* <a class="code hl_variable" href="structguac__socket.html#ac8340e5627b43138bb50aac6c4368c0d">data</a>;</div> |
| <div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div> |
| <div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="structguac__socket.html#a10042a8e591737aec8d4db5a3423b250"> 49</a></span> <a class="code hl_typedef" href="socket-fntypes_8h.html#a75396c8cb7b0ba91102fcd447a1eb36b">guac_socket_read_handler</a>* <a class="code hl_variable" href="structguac__socket.html#a10042a8e591737aec8d4db5a3423b250">read_handler</a>;</div> |
| <div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div> |
| <div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="structguac__socket.html#a0f5f24200b0dad4ef1443b863d1bfc7d"> 54</a></span> <a class="code hl_typedef" href="socket-fntypes_8h.html#a7198af0a6bbac52794eb248c81d90c6a">guac_socket_write_handler</a>* <a class="code hl_variable" href="structguac__socket.html#a0f5f24200b0dad4ef1443b863d1bfc7d">write_handler</a>;</div> |
| <div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div> |
| <div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="structguac__socket.html#afc6ff82e38b84c9e876fd797aafedd1b"> 59</a></span> <a class="code hl_typedef" href="socket-fntypes_8h.html#a894bc88c6288ee6b6713a2ea64bd05a0">guac_socket_flush_handler</a>* <a class="code hl_variable" href="structguac__socket.html#afc6ff82e38b84c9e876fd797aafedd1b">flush_handler</a>;</div> |
| <div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div> |
| <div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="structguac__socket.html#a1d39f1476d3d3440485697a0eabfe471"> 65</a></span> <a class="code hl_typedef" href="socket-fntypes_8h.html#a1b714d65f18d57bb52f929c7d3909526">guac_socket_lock_handler</a>* <a class="code hl_variable" href="structguac__socket.html#a1d39f1476d3d3440485697a0eabfe471">lock_handler</a>;</div> |
| <div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div> |
| <div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="structguac__socket.html#a67be8367b5e1b330ee151b22c692500b"> 71</a></span> <a class="code hl_typedef" href="socket-fntypes_8h.html#af1a6f8eb81522aab289c9f4ed6051d3f">guac_socket_unlock_handler</a>* <a class="code hl_variable" href="structguac__socket.html#a67be8367b5e1b330ee151b22c692500b">unlock_handler</a>;</div> |
| <div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div> |
| <div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="structguac__socket.html#ad29e7f8a6819ca7bb541e8a947d5bc4f"> 77</a></span> <a class="code hl_typedef" href="socket-fntypes_8h.html#a934350207615e0e2066954f9484153f8">guac_socket_select_handler</a>* <a class="code hl_variable" href="structguac__socket.html#ad29e7f8a6819ca7bb541e8a947d5bc4f">select_handler</a>;</div> |
| <div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div> |
| <div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="structguac__socket.html#a1044cde496cfe11c914c623dc1e29678"> 82</a></span> <a class="code hl_typedef" href="socket-fntypes_8h.html#a9700a8ba2011d6e6ce13e3e6c6397fc2">guac_socket_free_handler</a>* <a class="code hl_variable" href="structguac__socket.html#a1044cde496cfe11c914c623dc1e29678">free_handler</a>;</div> |
| <div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div> |
| <div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="structguac__socket.html#ac2d5236c7e570dfee207511241edaa9b"> 87</a></span> <a class="code hl_enumeration" href="socket-types_8h.html#a0ac0c0cd123b57d8aba5e6ec6fd20939">guac_socket_state</a> <a class="code hl_variable" href="structguac__socket.html#ac2d5236c7e570dfee207511241edaa9b">state</a>;</div> |
| <div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div> |
| <div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="structguac__socket.html#adf00e9c13ff3808fceb4c71c1172fb51"> 93</a></span> <a class="code hl_typedef" href="timestamp-types_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a> <a class="code hl_variable" href="structguac__socket.html#adf00e9c13ff3808fceb4c71c1172fb51">last_write_timestamp</a>;</div> |
| <div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div> |
| <div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">int</span> __ready;</div> |
| <div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div> |
| <div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keywordtype">int</span> __ready_buf[3];</div> |
| <div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div> |
| <div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">int</span> __keep_alive_enabled;</div> |
| <div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div> |
| <div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> pthread_t __keep_alive_thread;</div> |
| <div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</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> </div> |
| <div class="line"><a id="l00125" name="l00125"></a><span class="lineno"><a class="line" href="socket_8h.html#a79d263402c25a0f17939c037ebb717f1"> 125</a></span><a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* <a class="code hl_function" href="socket_8h.html#a79d263402c25a0f17939c037ebb717f1">guac_socket_alloc</a>();</div> |
| <div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div> |
| <div class="line"><a id="l00132" name="l00132"></a><span class="lineno"><a class="line" href="socket_8h.html#a376df8efcc02a7104504f104433884ed"> 132</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="socket_8h.html#a376df8efcc02a7104504f104433884ed">guac_socket_free</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket);</div> |
| <div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div> |
| <div class="line"><a id="l00142" name="l00142"></a><span class="lineno"><a class="line" href="socket_8h.html#a1d8c5111a8234c7785ae23f379f7db03"> 142</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="socket_8h.html#a1d8c5111a8234c7785ae23f379f7db03">guac_socket_require_keep_alive</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket);</div> |
| <div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div> |
| <div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="socket_8h.html#a00c8f00ab54c42e42c9f489caf5478b1"> 150</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="socket_8h.html#a00c8f00ab54c42e42c9f489caf5478b1">guac_socket_instruction_begin</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket);</div> |
| <div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div> |
| <div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="socket_8h.html#a603c23b24e2e2e95eeb2ce08d8115e94"> 158</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="socket_8h.html#a603c23b24e2e2e95eeb2ce08d8115e94">guac_socket_instruction_end</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket);</div> |
| <div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div> |
| <div class="line"><a id="l00173" name="l00173"></a><span class="lineno"><a class="line" href="socket_8h.html#ada54a06fcd80f56608bd198d14d37c77"> 173</a></span><a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* <a class="code hl_function" href="socket_8h.html#ada54a06fcd80f56608bd198d14d37c77">guac_socket_open</a>(<span class="keywordtype">int</span> fd);</div> |
| <div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div> |
| <div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="socket_8h.html#afa5052f0596a169da638d885f73e4e87"> 197</a></span><a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* <a class="code hl_function" href="socket_8h.html#afa5052f0596a169da638d885f73e4e87">guac_socket_nest</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* parent, <span class="keywordtype">int</span> index);</div> |
| <div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div> |
| <div class="line"><a id="l00229" name="l00229"></a><span class="lineno"><a class="line" href="socket_8h.html#a1fccad6e6a4f135b4b694b400c768f97"> 229</a></span><a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* <a class="code hl_function" href="socket_8h.html#a1fccad6e6a4f135b4b694b400c768f97">guac_socket_tee</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* primary, <a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* secondary);</div> |
| <div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> </div> |
| <div class="line"><a id="l00255" name="l00255"></a><span class="lineno"><a class="line" href="socket_8h.html#a2f796129a6bb2b6656070f2066deba9d"> 255</a></span><a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* <a class="code hl_function" href="socket_8h.html#a2f796129a6bb2b6656070f2066deba9d">guac_socket_broadcast</a>(<a class="code hl_struct" href="structguac__client.html">guac_client</a>* client);</div> |
| <div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> </div> |
| <div class="line"><a id="l00269" name="l00269"></a><span class="lineno"><a class="line" href="socket_8h.html#a57a963e37377de2104c2d785980ff400"> 269</a></span>ssize_t <a class="code hl_function" href="socket_8h.html#a57a963e37377de2104c2d785980ff400">guac_socket_write_int</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket, int64_t i);</div> |
| <div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> </div> |
| <div class="line"><a id="l00283" name="l00283"></a><span class="lineno"><a class="line" href="socket_8h.html#ad0cb48c7896361b522ae5a222a3b5efc"> 283</a></span>ssize_t <a class="code hl_function" href="socket_8h.html#ad0cb48c7896361b522ae5a222a3b5efc">guac_socket_write_string</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket, <span class="keyword">const</span> <span class="keywordtype">char</span>* str);</div> |
| <div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div> |
| <div class="line"><a id="l00301" name="l00301"></a><span class="lineno"><a class="line" href="socket_8h.html#ac7ec68bc42436ba316805718c292c510"> 301</a></span>ssize_t <a class="code hl_function" href="socket_8h.html#ac7ec68bc42436ba316805718c292c510">guac_socket_write_base64</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket, <span class="keyword">const</span> <span class="keywordtype">void</span>* buf, <span class="keywordtype">size_t</span> count);</div> |
| <div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> </div> |
| <div class="line"><a id="l00315" name="l00315"></a><span class="lineno"><a class="line" href="socket_8h.html#adb6eb960de27526bc96e1f9af797e2c4"> 315</a></span>ssize_t <a class="code hl_function" href="socket_8h.html#adb6eb960de27526bc96e1f9af797e2c4">guac_socket_write</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket, <span class="keyword">const</span> <span class="keywordtype">void</span>* buf, <span class="keywordtype">size_t</span> count);</div> |
| <div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> </div> |
| <div class="line"><a id="l00330" name="l00330"></a><span class="lineno"><a class="line" href="socket_8h.html#af5d6846212d792c5bce7f8a4fd46cd31"> 330</a></span>ssize_t <a class="code hl_function" href="socket_8h.html#af5d6846212d792c5bce7f8a4fd46cd31">guac_socket_read</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket, <span class="keywordtype">void</span>* buf, <span class="keywordtype">size_t</span> count);</div> |
| <div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> </div> |
| <div class="line"><a id="l00341" name="l00341"></a><span class="lineno"><a class="line" href="socket_8h.html#a09d5f60d75c57640a4c483d42445c1ab"> 341</a></span>ssize_t <a class="code hl_function" href="socket_8h.html#a09d5f60d75c57640a4c483d42445c1ab">guac_socket_flush_base64</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket);</div> |
| <div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> </div> |
| <div class="line"><a id="l00352" name="l00352"></a><span class="lineno"><a class="line" href="socket_8h.html#ababc834d5812e006b55a79da417bfe12"> 352</a></span>ssize_t <a class="code hl_function" href="socket_8h.html#ababc834d5812e006b55a79da417bfe12">guac_socket_flush</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket);</div> |
| <div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> </div> |
| <div class="line"><a id="l00370" name="l00370"></a><span class="lineno"><a class="line" href="socket_8h.html#a41b0d7a25ccda3d0ae20143880cf53b7"> 370</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="socket_8h.html#a41b0d7a25ccda3d0ae20143880cf53b7">guac_socket_select</a>(<a class="code hl_struct" href="structguac__socket.html">guac_socket</a>* socket, <span class="keywordtype">int</span> usec_timeout);</div> |
| <div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> </div> |
| <div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span><span class="preprocessor">#endif</span></div> |
| <div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> </div> |
| <div class="ttc" id="aclient-types_8h_html"><div class="ttname"><a href="client-types_8h.html">client-types.h</a></div><div class="ttdoc">Type definitions related to the Guacamole client structure, guac_client.</div></div> |
| <div class="ttc" id="asocket-constants_8h_html"><div class="ttname"><a href="socket-constants_8h.html">socket-constants.h</a></div><div class="ttdoc">Constants related to the guac_socket object.</div></div> |
| <div class="ttc" id="asocket-fntypes_8h_html"><div class="ttname"><a href="socket-fntypes_8h.html">socket-fntypes.h</a></div><div class="ttdoc">Function type definitions related to the guac_socket object.</div></div> |
| <div class="ttc" id="asocket-fntypes_8h_html_a1b714d65f18d57bb52f929c7d3909526"><div class="ttname"><a href="socket-fntypes_8h.html#a1b714d65f18d57bb52f929c7d3909526">guac_socket_lock_handler</a></div><div class="ttdeci">void guac_socket_lock_handler(guac_socket *socket)</div><div class="ttdoc">When set within a guac_socket, a handler of this type will be called whenever exclusive access to the...</div><div class="ttdef"><b>Definition:</b> socket-fntypes.h:93</div></div> |
| <div class="ttc" id="asocket-fntypes_8h_html_a7198af0a6bbac52794eb248c81d90c6a"><div class="ttname"><a href="socket-fntypes_8h.html#a7198af0a6bbac52794eb248c81d90c6a">guac_socket_write_handler</a></div><div class="ttdeci">ssize_t guac_socket_write_handler(guac_socket *socket, const void *buf, size_t count)</div><div class="ttdoc">Generic write handler for socket write operations, modeled after the standard POSIX write() function.</div><div class="ttdef"><b>Definition:</b> socket-fntypes.h:56</div></div> |
| <div class="ttc" id="asocket-fntypes_8h_html_a75396c8cb7b0ba91102fcd447a1eb36b"><div class="ttname"><a href="socket-fntypes_8h.html#a75396c8cb7b0ba91102fcd447a1eb36b">guac_socket_read_handler</a></div><div class="ttdeci">ssize_t guac_socket_read_handler(guac_socket *socket, void *buf, size_t count)</div><div class="ttdoc">Generic read handler for socket read operations, modeled after the standard POSIX read() function.</div><div class="ttdef"><b>Definition:</b> socket-fntypes.h:43</div></div> |
| <div class="ttc" id="asocket-fntypes_8h_html_a894bc88c6288ee6b6713a2ea64bd05a0"><div class="ttname"><a href="socket-fntypes_8h.html#a894bc88c6288ee6b6713a2ea64bd05a0">guac_socket_flush_handler</a></div><div class="ttdeci">ssize_t guac_socket_flush_handler(guac_socket *socket)</div><div class="ttdoc">Generic flush handler for socket flush operations.</div><div class="ttdef"><b>Definition:</b> socket-fntypes.h:83</div></div> |
| <div class="ttc" id="asocket-fntypes_8h_html_a934350207615e0e2066954f9484153f8"><div class="ttname"><a href="socket-fntypes_8h.html#a934350207615e0e2066954f9484153f8">guac_socket_select_handler</a></div><div class="ttdeci">int guac_socket_select_handler(guac_socket *socket, int usec_timeout)</div><div class="ttdoc">Generic handler for socket select operations, similar to the POSIX select() function.</div><div class="ttdef"><b>Definition:</b> socket-fntypes.h:70</div></div> |
| <div class="ttc" id="asocket-fntypes_8h_html_a9700a8ba2011d6e6ce13e3e6c6397fc2"><div class="ttname"><a href="socket-fntypes_8h.html#a9700a8ba2011d6e6ce13e3e6c6397fc2">guac_socket_free_handler</a></div><div class="ttdeci">int guac_socket_free_handler(guac_socket *socket)</div><div class="ttdoc">Generic handler for the closing of a socket, modeled after the standard POSIX close() function.</div><div class="ttdef"><b>Definition:</b> socket-fntypes.h:113</div></div> |
| <div class="ttc" id="asocket-fntypes_8h_html_af1a6f8eb81522aab289c9f4ed6051d3f"><div class="ttname"><a href="socket-fntypes_8h.html#af1a6f8eb81522aab289c9f4ed6051d3f">guac_socket_unlock_handler</a></div><div class="ttdeci">void guac_socket_unlock_handler(guac_socket *socket)</div><div class="ttdoc">When set within a guac_socket, a handler of this type will be called whenever exclusive access to the...</div><div class="ttdef"><b>Definition:</b> socket-fntypes.h:103</div></div> |
| <div class="ttc" id="asocket-types_8h_html"><div class="ttname"><a href="socket-types_8h.html">socket-types.h</a></div><div class="ttdoc">Type definitions related to the guac_socket object.</div></div> |
| <div class="ttc" id="asocket-types_8h_html_a0ac0c0cd123b57d8aba5e6ec6fd20939"><div class="ttname"><a href="socket-types_8h.html#a0ac0c0cd123b57d8aba5e6ec6fd20939">guac_socket_state</a></div><div class="ttdeci">guac_socket_state</div><div class="ttdoc">Possible current states of a guac_socket.</div><div class="ttdef"><b>Definition:</b> socket-types.h:38</div></div> |
| <div class="ttc" id="asocket_8h_html_a00c8f00ab54c42e42c9f489caf5478b1"><div class="ttname"><a href="socket_8h.html#a00c8f00ab54c42e42c9f489caf5478b1">guac_socket_instruction_begin</a></div><div class="ttdeci">void guac_socket_instruction_begin(guac_socket *socket)</div><div class="ttdoc">Marks the beginning of a Guacamole protocol instruction.</div></div> |
| <div class="ttc" id="asocket_8h_html_a09d5f60d75c57640a4c483d42445c1ab"><div class="ttname"><a href="socket_8h.html#a09d5f60d75c57640a4c483d42445c1ab">guac_socket_flush_base64</a></div><div class="ttdeci">ssize_t guac_socket_flush_base64(guac_socket *socket)</div><div class="ttdoc">Flushes the base64 buffer, writing padding characters as necessary.</div></div> |
| <div class="ttc" id="asocket_8h_html_a1d8c5111a8234c7785ae23f379f7db03"><div class="ttname"><a href="socket_8h.html#a1d8c5111a8234c7785ae23f379f7db03">guac_socket_require_keep_alive</a></div><div class="ttdeci">void guac_socket_require_keep_alive(guac_socket *socket)</div><div class="ttdoc">Declares that the given socket must automatically send a keep-alive ping to ensure neither side of th...</div></div> |
| <div class="ttc" id="asocket_8h_html_a1fccad6e6a4f135b4b694b400c768f97"><div class="ttname"><a href="socket_8h.html#a1fccad6e6a4f135b4b694b400c768f97">guac_socket_tee</a></div><div class="ttdeci">guac_socket * guac_socket_tee(guac_socket *primary, guac_socket *secondary)</div><div class="ttdoc">Allocates and initializes a new guac_socket which delegates all socket operations to the given primar...</div></div> |
| <div class="ttc" id="asocket_8h_html_a2f796129a6bb2b6656070f2066deba9d"><div class="ttname"><a href="socket_8h.html#a2f796129a6bb2b6656070f2066deba9d">guac_socket_broadcast</a></div><div class="ttdeci">guac_socket * guac_socket_broadcast(guac_client *client)</div><div class="ttdoc">Allocates and initializes a new guac_socket which duplicates all instructions written across the sock...</div></div> |
| <div class="ttc" id="asocket_8h_html_a376df8efcc02a7104504f104433884ed"><div class="ttname"><a href="socket_8h.html#a376df8efcc02a7104504f104433884ed">guac_socket_free</a></div><div class="ttdeci">void guac_socket_free(guac_socket *socket)</div><div class="ttdoc">Frees the given guac_socket and all associated resources.</div></div> |
| <div class="ttc" id="asocket_8h_html_a41b0d7a25ccda3d0ae20143880cf53b7"><div class="ttname"><a href="socket_8h.html#a41b0d7a25ccda3d0ae20143880cf53b7">guac_socket_select</a></div><div class="ttdeci">int guac_socket_select(guac_socket *socket, int usec_timeout)</div><div class="ttdoc">Waits for input to be available on the given guac_socket object until the specified timeout elapses.</div></div> |
| <div class="ttc" id="asocket_8h_html_a57a963e37377de2104c2d785980ff400"><div class="ttname"><a href="socket_8h.html#a57a963e37377de2104c2d785980ff400">guac_socket_write_int</a></div><div class="ttdeci">ssize_t guac_socket_write_int(guac_socket *socket, int64_t i)</div><div class="ttdoc">Writes the given unsigned int to the given guac_socket object.</div></div> |
| <div class="ttc" id="asocket_8h_html_a603c23b24e2e2e95eeb2ce08d8115e94"><div class="ttname"><a href="socket_8h.html#a603c23b24e2e2e95eeb2ce08d8115e94">guac_socket_instruction_end</a></div><div class="ttdeci">void guac_socket_instruction_end(guac_socket *socket)</div><div class="ttdoc">Marks the end of a Guacamole protocol instruction.</div></div> |
| <div class="ttc" id="asocket_8h_html_a79d263402c25a0f17939c037ebb717f1"><div class="ttname"><a href="socket_8h.html#a79d263402c25a0f17939c037ebb717f1">guac_socket_alloc</a></div><div class="ttdeci">guac_socket * guac_socket_alloc()</div><div class="ttdoc">Allocates a new, completely blank guac_socket.</div></div> |
| <div class="ttc" id="asocket_8h_html_ababc834d5812e006b55a79da417bfe12"><div class="ttname"><a href="socket_8h.html#ababc834d5812e006b55a79da417bfe12">guac_socket_flush</a></div><div class="ttdeci">ssize_t guac_socket_flush(guac_socket *socket)</div><div class="ttdoc">Flushes the write buffer.</div></div> |
| <div class="ttc" id="asocket_8h_html_ac7ec68bc42436ba316805718c292c510"><div class="ttname"><a href="socket_8h.html#ac7ec68bc42436ba316805718c292c510">guac_socket_write_base64</a></div><div class="ttdeci">ssize_t guac_socket_write_base64(guac_socket *socket, const void *buf, size_t count)</div><div class="ttdoc">Writes the given binary data to the given guac_socket object as base64- encoded data.</div></div> |
| <div class="ttc" id="asocket_8h_html_ad0cb48c7896361b522ae5a222a3b5efc"><div class="ttname"><a href="socket_8h.html#ad0cb48c7896361b522ae5a222a3b5efc">guac_socket_write_string</a></div><div class="ttdeci">ssize_t guac_socket_write_string(guac_socket *socket, const char *str)</div><div class="ttdoc">Writes the given string to the given guac_socket object.</div></div> |
| <div class="ttc" id="asocket_8h_html_ada54a06fcd80f56608bd198d14d37c77"><div class="ttname"><a href="socket_8h.html#ada54a06fcd80f56608bd198d14d37c77">guac_socket_open</a></div><div class="ttdeci">guac_socket * guac_socket_open(int fd)</div><div class="ttdoc">Allocates and initializes a new guac_socket object with the given open file descriptor.</div></div> |
| <div class="ttc" id="asocket_8h_html_adb6eb960de27526bc96e1f9af797e2c4"><div class="ttname"><a href="socket_8h.html#adb6eb960de27526bc96e1f9af797e2c4">guac_socket_write</a></div><div class="ttdeci">ssize_t guac_socket_write(guac_socket *socket, const void *buf, size_t count)</div><div class="ttdoc">Writes the given data to the specified socket.</div></div> |
| <div class="ttc" id="asocket_8h_html_af5d6846212d792c5bce7f8a4fd46cd31"><div class="ttname"><a href="socket_8h.html#af5d6846212d792c5bce7f8a4fd46cd31">guac_socket_read</a></div><div class="ttdeci">ssize_t guac_socket_read(guac_socket *socket, void *buf, size_t count)</div><div class="ttdoc">Attempts to read data from the socket, filling up to the specified number of bytes in the given buffe...</div></div> |
| <div class="ttc" id="asocket_8h_html_afa5052f0596a169da638d885f73e4e87"><div class="ttname"><a href="socket_8h.html#afa5052f0596a169da638d885f73e4e87">guac_socket_nest</a></div><div class="ttdeci">guac_socket * guac_socket_nest(guac_socket *parent, int index)</div><div class="ttdoc">Allocates and initializes a new guac_socket which writes all data via nest instructions to the given ...</div></div> |
| <div class="ttc" id="astructguac__client_html"><div class="ttname"><a href="structguac__client.html">guac_client</a></div><div class="ttdoc">Guacamole proxy client.</div><div class="ttdef"><b>Definition:</b> client.h:46</div></div> |
| <div class="ttc" id="astructguac__socket_html"><div class="ttname"><a href="structguac__socket.html">guac_socket</a></div><div class="ttdoc">The core I/O object of Guacamole.</div><div class="ttdef"><b>Definition:</b> socket.h:39</div></div> |
| <div class="ttc" id="astructguac__socket_html_a0f5f24200b0dad4ef1443b863d1bfc7d"><div class="ttname"><a href="structguac__socket.html#a0f5f24200b0dad4ef1443b863d1bfc7d">guac_socket::write_handler</a></div><div class="ttdeci">guac_socket_write_handler * write_handler</div><div class="ttdoc">Handler which will be called whenever data is written to this socket.</div><div class="ttdef"><b>Definition:</b> socket.h:54</div></div> |
| <div class="ttc" id="astructguac__socket_html_a10042a8e591737aec8d4db5a3423b250"><div class="ttname"><a href="structguac__socket.html#a10042a8e591737aec8d4db5a3423b250">guac_socket::read_handler</a></div><div class="ttdeci">guac_socket_read_handler * read_handler</div><div class="ttdoc">Handler which will be called when data needs to be read from the socket.</div><div class="ttdef"><b>Definition:</b> socket.h:49</div></div> |
| <div class="ttc" id="astructguac__socket_html_a1044cde496cfe11c914c623dc1e29678"><div class="ttname"><a href="structguac__socket.html#a1044cde496cfe11c914c623dc1e29678">guac_socket::free_handler</a></div><div class="ttdeci">guac_socket_free_handler * free_handler</div><div class="ttdoc">Handler which will be called when the socket is free'd (closed).</div><div class="ttdef"><b>Definition:</b> socket.h:82</div></div> |
| <div class="ttc" id="astructguac__socket_html_a1d39f1476d3d3440485697a0eabfe471"><div class="ttname"><a href="structguac__socket.html#a1d39f1476d3d3440485697a0eabfe471">guac_socket::lock_handler</a></div><div class="ttdeci">guac_socket_lock_handler * lock_handler</div><div class="ttdoc">Handler which will be called whenever a socket needs to be acquired for exclusive access,...</div><div class="ttdef"><b>Definition:</b> socket.h:65</div></div> |
| <div class="ttc" id="astructguac__socket_html_a67be8367b5e1b330ee151b22c692500b"><div class="ttname"><a href="structguac__socket.html#a67be8367b5e1b330ee151b22c692500b">guac_socket::unlock_handler</a></div><div class="ttdeci">guac_socket_unlock_handler * unlock_handler</div><div class="ttdoc">Handler which will be called whenever exclusive access to a socket is being released,...</div><div class="ttdef"><b>Definition:</b> socket.h:71</div></div> |
| <div class="ttc" id="astructguac__socket_html_ac2d5236c7e570dfee207511241edaa9b"><div class="ttname"><a href="structguac__socket.html#ac2d5236c7e570dfee207511241edaa9b">guac_socket::state</a></div><div class="ttdeci">guac_socket_state state</div><div class="ttdoc">The current state of this guac_socket.</div><div class="ttdef"><b>Definition:</b> socket.h:87</div></div> |
| <div class="ttc" id="astructguac__socket_html_ac8340e5627b43138bb50aac6c4368c0d"><div class="ttname"><a href="structguac__socket.html#ac8340e5627b43138bb50aac6c4368c0d">guac_socket::data</a></div><div class="ttdeci">void * data</div><div class="ttdoc">Arbitrary socket-specific data.</div><div class="ttdef"><b>Definition:</b> socket.h:44</div></div> |
| <div class="ttc" id="astructguac__socket_html_ad29e7f8a6819ca7bb541e8a947d5bc4f"><div class="ttname"><a href="structguac__socket.html#ad29e7f8a6819ca7bb541e8a947d5bc4f">guac_socket::select_handler</a></div><div class="ttdeci">guac_socket_select_handler * select_handler</div><div class="ttdoc">Handler which will be called whenever guac_socket_select() is invoked on this socket.</div><div class="ttdef"><b>Definition:</b> socket.h:77</div></div> |
| <div class="ttc" id="astructguac__socket_html_adf00e9c13ff3808fceb4c71c1172fb51"><div class="ttname"><a href="structguac__socket.html#adf00e9c13ff3808fceb4c71c1172fb51">guac_socket::last_write_timestamp</a></div><div class="ttdeci">guac_timestamp last_write_timestamp</div><div class="ttdoc">The timestamp associated with the time the last block of data was written to this guac_socket.</div><div class="ttdef"><b>Definition:</b> socket.h:93</div></div> |
| <div class="ttc" id="astructguac__socket_html_afc6ff82e38b84c9e876fd797aafedd1b"><div class="ttname"><a href="structguac__socket.html#afc6ff82e38b84c9e876fd797aafedd1b">guac_socket::flush_handler</a></div><div class="ttdeci">guac_socket_flush_handler * flush_handler</div><div class="ttdoc">Handler which will be called whenever this socket needs to be flushed.</div><div class="ttdef"><b>Definition:</b> socket.h:59</div></div> |
| <div class="ttc" id="atimestamp-types_8h_html"><div class="ttname"><a href="timestamp-types_8h.html">timestamp-types.h</a></div><div class="ttdoc">Type definitions related to Guacamole protocol timestamps.</div></div> |
| <div class="ttc" id="atimestamp-types_8h_html_a69e916d1ff324fbe0e527f32359c9cea"><div class="ttname"><a href="timestamp-types_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a></div><div class="ttdeci">int64_t guac_timestamp</div><div class="ttdoc">An arbitrary timestamp denoting a relative time value in milliseconds.</div><div class="ttdef"><b>Definition:</b> timestamp-types.h:34</div></div> |
| </div><!-- fragment --></div><!-- contents --> |
| <!-- start footer part --> |
| <hr class="footer"/><address class="footer"><small> |
| Generated by <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> |