<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.15"/> <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 style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">libguac  <span id="projectnumber">1.3.0</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> <div id="main-nav"></div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="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 name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a 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 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 name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a 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 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 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 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 name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a 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 name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a 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 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 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 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 name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#ifndef _GUAC_SOCKET_H</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#define _GUAC_SOCKET_H</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a 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 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 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 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 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 name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <pthread.h></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="structguac__socket.html"> 39</a></span> <span class="keyword">struct </span><a class="code" href="structguac__socket.html">guac_socket</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a 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" href="structguac__socket.html#ac8340e5627b43138bb50aac6c4368c0d">data</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structguac__socket.html#a10042a8e591737aec8d4db5a3423b250"> 49</a></span>  <a class="code" href="socket-fntypes_8h.html#a75396c8cb7b0ba91102fcd447a1eb36b">guac_socket_read_handler</a>* <a class="code" href="structguac__socket.html#a10042a8e591737aec8d4db5a3423b250">read_handler</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structguac__socket.html#a0f5f24200b0dad4ef1443b863d1bfc7d"> 54</a></span>  <a class="code" href="socket-fntypes_8h.html#a7198af0a6bbac52794eb248c81d90c6a">guac_socket_write_handler</a>* <a class="code" href="structguac__socket.html#a0f5f24200b0dad4ef1443b863d1bfc7d">write_handler</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="structguac__socket.html#afc6ff82e38b84c9e876fd797aafedd1b"> 59</a></span>  <a class="code" href="socket-fntypes_8h.html#a894bc88c6288ee6b6713a2ea64bd05a0">guac_socket_flush_handler</a>* <a class="code" href="structguac__socket.html#afc6ff82e38b84c9e876fd797aafedd1b">flush_handler</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structguac__socket.html#a1d39f1476d3d3440485697a0eabfe471"> 65</a></span>  <a class="code" href="socket-fntypes_8h.html#a1b714d65f18d57bb52f929c7d3909526">guac_socket_lock_handler</a>* <a class="code" href="structguac__socket.html#a1d39f1476d3d3440485697a0eabfe471">lock_handler</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="structguac__socket.html#a67be8367b5e1b330ee151b22c692500b"> 71</a></span>  <a class="code" href="socket-fntypes_8h.html#af1a6f8eb81522aab289c9f4ed6051d3f">guac_socket_unlock_handler</a>* <a class="code" href="structguac__socket.html#a67be8367b5e1b330ee151b22c692500b">unlock_handler</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="structguac__socket.html#ad29e7f8a6819ca7bb541e8a947d5bc4f"> 77</a></span>  <a class="code" href="socket-fntypes_8h.html#a934350207615e0e2066954f9484153f8">guac_socket_select_handler</a>* <a class="code" href="structguac__socket.html#ad29e7f8a6819ca7bb541e8a947d5bc4f">select_handler</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="structguac__socket.html#a1044cde496cfe11c914c623dc1e29678"> 82</a></span>  <a class="code" href="socket-fntypes_8h.html#a9700a8ba2011d6e6ce13e3e6c6397fc2">guac_socket_free_handler</a>* <a class="code" href="structguac__socket.html#a1044cde496cfe11c914c623dc1e29678">free_handler</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structguac__socket.html#ac2d5236c7e570dfee207511241edaa9b"> 87</a></span>  <a class="code" href="socket-types_8h.html#a0ac0c0cd123b57d8aba5e6ec6fd20939">guac_socket_state</a> <a class="code" href="structguac__socket.html#ac2d5236c7e570dfee207511241edaa9b">state</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="structguac__socket.html#adf00e9c13ff3808fceb4c71c1172fb51"> 93</a></span>  <a class="code" href="timestamp-types_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a> <a class="code" href="structguac__socket.html#adf00e9c13ff3808fceb4c71c1172fb51">last_write_timestamp</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">int</span> __ready;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">int</span> __ready_buf[3];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">int</span> __keep_alive_enabled;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  pthread_t __keep_alive_thread;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> };</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <a class="code" href="structguac__socket.html">guac_socket</a>* <a class="code" href="socket_8h.html#a7e5859b812923b894779f59353fdadb4">guac_socket_alloc</a>();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">void</span> <a class="code" href="socket_8h.html#a376df8efcc02a7104504f104433884ed">guac_socket_free</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* socket);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">void</span> <a class="code" href="socket_8h.html#a1d8c5111a8234c7785ae23f379f7db03">guac_socket_require_keep_alive</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* socket);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keywordtype">void</span> <a class="code" href="socket_8h.html#a00c8f00ab54c42e42c9f489caf5478b1">guac_socket_instruction_begin</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* socket);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keywordtype">void</span> <a class="code" href="socket_8h.html#a603c23b24e2e2e95eeb2ce08d8115e94">guac_socket_instruction_end</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* socket);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <a class="code" href="structguac__socket.html">guac_socket</a>* <a class="code" href="socket_8h.html#a076f62b9b6082260462e18ca77c64e7a">guac_socket_open</a>(<span class="keywordtype">int</span> fd);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <a class="code" href="structguac__socket.html">guac_socket</a>* <a class="code" href="socket_8h.html#af23ab23c93eb09eac0e15a87f5690bda">guac_socket_nest</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* parent, <span class="keywordtype">int</span> index);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <a class="code" href="structguac__socket.html">guac_socket</a>* <a class="code" href="socket_8h.html#add9c80240912b0c8d309cf7de94f5305">guac_socket_tee</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* primary, <a class="code" href="structguac__socket.html">guac_socket</a>* secondary);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <a class="code" href="structguac__socket.html">guac_socket</a>* <a class="code" href="socket_8h.html#a2b570fec1d86f1eb09e057d4bbed3be6">guac_socket_broadcast</a>(<a class="code" href="structguac__client.html">guac_client</a>* client);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> ssize_t <a class="code" href="socket_8h.html#a57a963e37377de2104c2d785980ff400">guac_socket_write_int</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* socket, int64_t i);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> ssize_t <a class="code" href="socket_8h.html#ad0cb48c7896361b522ae5a222a3b5efc">guac_socket_write_string</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* socket, <span class="keyword">const</span> <span class="keywordtype">char</span>* str);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> ssize_t <a class="code" href="socket_8h.html#ac7ec68bc42436ba316805718c292c510">guac_socket_write_base64</a>(<a class="code" 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 name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> ssize_t <a class="code" href="socket_8h.html#adb6eb960de27526bc96e1f9af797e2c4">guac_socket_write</a>(<a class="code" 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 name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> ssize_t <a class="code" href="socket_8h.html#af5d6846212d792c5bce7f8a4fd46cd31">guac_socket_read</a>(<a class="code" 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 name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> ssize_t <a class="code" href="socket_8h.html#a09d5f60d75c57640a4c483d42445c1ab">guac_socket_flush_base64</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* socket);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> ssize_t <a class="code" href="socket_8h.html#ababc834d5812e006b55a79da417bfe12">guac_socket_flush</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* socket);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="keywordtype">int</span> <a class="code" href="socket_8h.html#a41b0d7a25ccda3d0ae20143880cf53b7">guac_socket_select</a>(<a class="code" href="structguac__socket.html">guac_socket</a>* socket, <span class="keywordtype">int</span> usec_timeout);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="ttc" id="socket-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="socket-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="socket_8h_html_af23ab23c93eb09eac0e15a87f5690bda"><div class="ttname"><a href="socket_8h.html#af23ab23c93eb09eac0e15a87f5690bda">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="socket_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="structguac__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="socket-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="socket_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="socket_8h_html_a2b570fec1d86f1eb09e057d4bbed3be6"><div class="ttname"><a href="socket_8h.html#a2b570fec1d86f1eb09e057d4bbed3be6">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="socket-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="socket-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="structguac__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="socket-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="structguac__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="socket_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="socket_8h_html_a076f62b9b6082260462e18ca77c64e7a"><div class="ttname"><a href="socket_8h.html#a076f62b9b6082260462e18ca77c64e7a">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="socket_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="client-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="socket-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="structguac__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="socket_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="structguac__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="socket_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="structguac__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="socket-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="socket_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="timestamp-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 class="ttc" id="structguac__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="structguac__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="structguac__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="socket_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="socket_8h_html_a7e5859b812923b894779f59353fdadb4"><div class="ttname"><a href="socket_8h.html#a7e5859b812923b894779f59353fdadb4">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="socket_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="socket-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="structguac__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="socket_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="socket_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="socket_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="socket_8h_html_add9c80240912b0c8d309cf7de94f5305"><div class="ttname"><a href="socket_8h.html#add9c80240912b0c8d309cf7de94f5305">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="structguac__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="socket-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="socket-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="structguac__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="timestamp-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><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.15 </small></address> </body> </html>