| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.11"/> |
| <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> |
| <script type="text/javascript"> |
| $(document).ready(function() { init_search(); }); |
| </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">0.9.10-incubating</span> |
| </div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <!-- end header part --> |
| <!-- Generated by Doxygen 1.8.11 --> |
| <script type="text/javascript"> |
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
| </script> |
| <div id="navrow1" class="tabs"> |
| <ul class="tablist"> |
| <li><a href="index.html"><span>Main Page</span></a></li> |
| <li><a href="annotated.html"><span>Data Structures</span></a></li> |
| <li class="current"><a href="files.html"><span>Files</span></a></li> |
| <li> |
| <div id="MSearchBox" class="MSearchBoxInactive"> |
| <span class="left"> |
| <img id="MSearchSelect" src="search/mag_sel.png" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| alt=""/> |
| <input type="text" id="MSearchField" value="Search" accesskey="S" |
| onfocus="searchBox.OnSearchFieldFocus(true)" |
| onblur="searchBox.OnSearchFieldFocus(false)" |
| onkeyup="searchBox.OnSearchFieldChange(event)"/> |
| </span><span class="right"> |
| <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> |
| </span> |
| </div> |
| </li> |
| </ul> |
| </div> |
| <div id="navrow2" class="tabs2"> |
| <ul class="tablist"> |
| <li><a href="files.html"><span>File List</span></a></li> |
| <li><a href="globals.html"><span>Globals</span></a></li> |
| </ul> |
| </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="socket-constants_8h.html">socket-constants.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-fntypes_8h.html">socket-fntypes.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-types_8h.html">socket-types.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="timestamp-types_8h.html">timestamp-types.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <pthread.h></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="structguac__socket.html"> 38</a></span> <span class="keyword">struct </span><a class="code" href="structguac__socket.html">guac_socket</a> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="structguac__socket.html#ac8340e5627b43138bb50aac6c4368c0d"> 43</a></span>  <span class="keywordtype">void</span>* <a class="code" href="structguac__socket.html#ac8340e5627b43138bb50aac6c4368c0d">data</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structguac__socket.html#a10042a8e591737aec8d4db5a3423b250"> 48</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="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structguac__socket.html#a0f5f24200b0dad4ef1443b863d1bfc7d"> 53</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="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structguac__socket.html#afc6ff82e38b84c9e876fd797aafedd1b"> 58</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="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structguac__socket.html#a1d39f1476d3d3440485697a0eabfe471"> 64</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="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="structguac__socket.html#a67be8367b5e1b330ee151b22c692500b"> 70</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="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structguac__socket.html#ad29e7f8a6819ca7bb541e8a947d5bc4f"> 76</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="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="structguac__socket.html#a1044cde496cfe11c914c623dc1e29678"> 81</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="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="structguac__socket.html#ac2d5236c7e570dfee207511241edaa9b"> 86</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="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="structguac__socket.html#adf00e9c13ff3808fceb4c71c1172fb51"> 92</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="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">int</span> __ready;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">int</span> __ready_buf[3];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">int</span> __keep_alive_enabled;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  pthread_t __keep_alive_thread;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </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="l00124"></a><span class="lineno"> 124</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="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</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="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</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="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</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="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</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="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</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="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</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="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</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="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</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="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</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="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</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="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</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="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</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="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</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="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</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="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</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="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</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&#39;d (closed). </div><div class="ttdef"><b>Definition:</b> socket.h:81</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-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:38</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:64</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="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:53</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:86</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, such as when an instruction has finished being written. </div><div class="ttdef"><b>Definition:</b> socket.h:70</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:58</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:92</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:76</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:43</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:48</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.11 |
| </small></address> |
| </body> |
| </html> |