blob: 571d28024e7a38746ab58f682c8a2442c4647d6a [file] [log] [blame]
<!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.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libguac: guacamole/client.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
&#160;<span id="projectnumber">1.1.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_6bb9fad85c98b48a11165f494b9f53ce.html">guacamole</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">client.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="client_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<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>&#160;<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>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<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>&#160;<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>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<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>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<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>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<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>&#160;<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>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<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>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifndef _GUAC_CLIENT_H</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#define _GUAC_CLIENT_H</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="client-fntypes_8h.html">client-fntypes.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="client-types_8h.html">client-types.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="client-constants_8h.html">client-constants.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="layer-types_8h.html">layer-types.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="object-types_8h.html">object-types.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="pool-types_8h.html">pool-types.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="socket-types_8h.html">socket-types.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="stream-types_8h.html">stream-types.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="timestamp-types_8h.html">timestamp-types.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="user-fntypes_8h.html">user-fntypes.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="user-types_8h.html">user-types.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;cairo/cairo.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structguac__client.html"> 46</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structguac__client.html">guac_client</a> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structguac__client.html#aa634856fd3c522377ba7345f3308000e"> 57</a></span>&#160; <a class="code" href="structguac__socket.html">guac_socket</a>* <a class="code" href="structguac__client.html#aa634856fd3c522377ba7345f3308000e">socket</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structguac__client.html#acb3e3f5d0ce5726cdde768f97b473f53"> 65</a></span>&#160; <a class="code" href="client-types_8h.html#a6f7e91d6dcb20598953948f077910c3b">guac_client_state</a> <a class="code" href="structguac__client.html#acb3e3f5d0ce5726cdde768f97b473f53">state</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="structguac__client.html#a0569bc7eea8d37b5bd95bcd3821ca0a3"> 72</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="structguac__client.html#a0569bc7eea8d37b5bd95bcd3821ca0a3">data</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="structguac__client.html#a0f3069566c7a5ca76ce4369715589dad"> 78</a></span>&#160; <a class="code" href="timestamp-types_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a> <a class="code" href="structguac__client.html#a0f3069566c7a5ca76ce4369715589dad">last_sent_timestamp</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structguac__client.html#a79e29c931fd448cf51f7153fea064169"> 101</a></span>&#160; <a class="code" href="client-fntypes_8h.html#a7f8c6986f3db9818d016eee6fa562577">guac_client_free_handler</a>* <a class="code" href="structguac__client.html#a79e29c931fd448cf51f7153fea064169">free_handler</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="structguac__client.html#a3eb24ba13be9ecb3a8c6f64a73932f43"> 125</a></span>&#160; <a class="code" href="client-fntypes_8h.html#a23837e22dbfe152719d596e6918bad3c">guac_client_log_handler</a>* <a class="code" href="structguac__client.html#a3eb24ba13be9ecb3a8c6f64a73932f43">log_handler</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="structguac__pool.html">guac_pool</a>* __buffer_pool;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="structguac__pool.html">guac_pool</a>* __layer_pool;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="structguac__pool.html">guac_pool</a>* __stream_pool;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="structguac__stream.html">guac_stream</a>* __output_streams;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="structguac__client.html#ad38b9ded1f04bfe8eb235e551fc08094"> 159</a></span>&#160; <span class="keywordtype">char</span>* <a class="code" href="structguac__client.html#ad38b9ded1f04bfe8eb235e551fc08094">connection_id</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; pthread_rwlock_t __users_lock;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="structguac__user.html">guac_user</a>* __users;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="structguac__user.html">guac_user</a>* __owner;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="structguac__client.html#a73aeff08af6cf6cadd7abce74c7ff4b2"> 184</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structguac__client.html#a73aeff08af6cf6cadd7abce74c7ff4b2">connected_users</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="structguac__client.html#a0adcf1953de6c315c2da9dac4b3eceb3"> 207</a></span>&#160; <a class="code" href="user-fntypes_8h.html#a88717a7ab29ac1e4a853fcc2caa8f872">guac_user_join_handler</a>* <a class="code" href="structguac__client.html#a0adcf1953de6c315c2da9dac4b3eceb3">join_handler</a>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="structguac__client.html#ad956a3935832e9048a2727d8c5a46cf6"> 225</a></span>&#160; <a class="code" href="user-fntypes_8h.html#aaa5806d288a42d93a54864b6c35617b8">guac_user_leave_handler</a>* <a class="code" href="structguac__client.html#ad956a3935832e9048a2727d8c5a46cf6">leave_handler</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="structguac__client.html#a0e07a8086579ede2c692460998a87cac"> 251</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>** <a class="code" href="structguac__client.html#a0e07a8086579ede2c692460998a87cac">args</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordtype">void</span>* __plugin_handle;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;};</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<a class="code" href="structguac__client.html">guac_client</a>* <a class="code" href="client_8h.html#a33bad42d21ccb561aa71c4f04ae9b22a">guac_client_alloc</a>();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a76cdc454a23fdcbb70d56f923f6b6427">guac_client_free</a>(<a class="code" href="structguac__client.html">guac_client</a>* client);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#ad53666bbe29346497cabb04fc9628208">guac_client_log</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="client-types_8h.html#adfeeb4ff06541220c91ce3401d840727">guac_client_log_level</a> level,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a37a0fa9cfc4c02236085e3852972f494">vguac_client_log</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="client-types_8h.html#adfeeb4ff06541220c91ce3401d840727">guac_client_log_level</a> level,</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* format, va_list ap);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a022d4b5587c84f2963b176ab7999aa1b">guac_client_stop</a>(<a class="code" href="structguac__client.html">guac_client</a>* client);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a62a29f7820deaff00a10ec79aa81aed4">guac_client_abort</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="protocol-types_8h.html#af946f7f843fa5935dbeeb08f85dec9e2">guac_protocol_status</a> status,</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a4c0eccd7d0ed3dbf3e7941ce297e0224">vguac_client_abort</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="protocol-types_8h.html#af946f7f843fa5935dbeeb08f85dec9e2">guac_protocol_status</a> status,</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* format, va_list ap);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<a class="code" href="structguac__layer.html">guac_layer</a>* <a class="code" href="client_8h.html#af661d3fedd9683631bdc7d1e3205e379">guac_client_alloc_buffer</a>(<a class="code" href="structguac__client.html">guac_client</a>* client);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<a class="code" href="structguac__layer.html">guac_layer</a>* <a class="code" href="client_8h.html#a2085758db585bb9d09d3860ec0fc9587">guac_client_alloc_layer</a>(<a class="code" href="structguac__client.html">guac_client</a>* client);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#afc03a32b3113d9a95700cac54f1cbd4b">guac_client_free_buffer</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__layer.html">guac_layer</a>* layer);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a4e5b374211012d1897792335112dcb89">guac_client_free_layer</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__layer.html">guac_layer</a>* layer);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<a class="code" href="structguac__stream.html">guac_stream</a>* <a class="code" href="client_8h.html#a1bea3499e21736b4ea0fb949d3bc8ab9">guac_client_alloc_stream</a>(<a class="code" href="structguac__client.html">guac_client</a>* client);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#af0103a5aae8ba76badd2e68e827f6782">guac_client_free_stream</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__stream.html">guac_stream</a>* stream);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keywordtype">int</span> <a class="code" href="client_8h.html#af66d105dfd1453ec46b423e6b25fa371">guac_client_add_user</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__user.html">guac_user</a>* user, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a02832d5be5330dc3de524b497b7c6dfa">guac_client_remove_user</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__user.html">guac_user</a>* user);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#af652f3db0f89d488cef6d90f612a2077">guac_client_foreach_user</a>(<a class="code" href="structguac__client.html">guac_client</a>* client,</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="user-fntypes_8h.html#a99c5146e0ab1df9ba2b2574fb26fbddf">guac_user_callback</a>* callback, <span class="keywordtype">void</span>* data);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="keywordtype">void</span>* <a class="code" href="client_8h.html#af3f4ed85d98b16376e2cdc031ff1b44a">guac_client_for_owner</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="user-fntypes_8h.html#a99c5146e0ab1df9ba2b2574fb26fbddf">guac_user_callback</a>* callback,</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordtype">void</span>* data);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="keywordtype">void</span>* <a class="code" href="client_8h.html#a7fbba296d1ec3e78dc4b79884f590a03">guac_client_for_user</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__user.html">guac_user</a>* user,</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="user-fntypes_8h.html#a99c5146e0ab1df9ba2b2574fb26fbddf">guac_user_callback</a>* callback, <span class="keywordtype">void</span>* data);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="keywordtype">int</span> <a class="code" href="client_8h.html#a686fc65f5b1afcc3f3b53e36cd1a2ebc">guac_client_end_frame</a>(<a class="code" href="structguac__client.html">guac_client</a>* client);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="keywordtype">int</span> <a class="code" href="client_8h.html#afa2b90d686c56cf753c36718ec085f35">guac_client_load_plugin</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <span class="keyword">const</span> <span class="keywordtype">char</span>* protocol);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="keywordtype">int</span> <a class="code" href="client_8h.html#aa2b94b3145fcebf2d7b1999df11d0b2c">guac_client_get_processing_lag</a>(<a class="code" href="structguac__client.html">guac_client</a>* client);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a6c9d8717d4b8eaa50dbd7301af27a06f">guac_client_stream_argv</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__socket.html">guac_socket</a>* socket,</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* mimetype, <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* value);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a317b9d79afd0b0b473d7d359e0c33750">guac_client_stream_png</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__socket.html">guac_socket</a>* socket,</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="protocol-types_8h.html#a93612063886db58071d02b5393abf186">guac_composite_mode</a> mode, <span class="keyword">const</span> <a class="code" href="structguac__layer.html">guac_layer</a>* layer, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y,</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; cairo_surface_t* surface);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#aa51ede155ad7777bc8d2e82aa6e779bf">guac_client_stream_jpeg</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__socket.html">guac_socket</a>* socket,</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="protocol-types_8h.html#a93612063886db58071d02b5393abf186">guac_composite_mode</a> mode, <span class="keyword">const</span> <a class="code" href="structguac__layer.html">guac_layer</a>* layer, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y,</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; cairo_surface_t* surface, <span class="keywordtype">int</span> quality);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="keywordtype">void</span> <a class="code" href="client_8h.html#a55adbd5ee8f27c4df4394dbb5bf9416e">guac_client_stream_webp</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__socket.html">guac_socket</a>* socket,</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <a class="code" href="protocol-types_8h.html#a93612063886db58071d02b5393abf186">guac_composite_mode</a> mode, <span class="keyword">const</span> <a class="code" href="structguac__layer.html">guac_layer</a>* layer, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y,</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; cairo_surface_t* surface, <span class="keywordtype">int</span> quality, <span class="keywordtype">int</span> lossless);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;<span class="keywordtype">int</span> <a class="code" href="client_8h.html#a79cc74558e8f64807ea2847fbacd20e3">guac_client_supports_webp</a>(<a class="code" href="structguac__client.html">guac_client</a>* client);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structguac__layer.html">guac_layer</a>* <a class="code" href="client_8h.html#a336a485c006394d5eea88bf6d8d422d8">GUAC_DEFAULT_LAYER</a>;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div><div class="ttc" id="structguac__client_html_a0adcf1953de6c315c2da9dac4b3eceb3"><div class="ttname"><a href="structguac__client.html#a0adcf1953de6c315c2da9dac4b3eceb3">guac_client::join_handler</a></div><div class="ttdeci">guac_user_join_handler * join_handler</div><div class="ttdoc">Handler for join events, called whenever a new user is joining an active connection. </div><div class="ttdef"><b>Definition:</b> client.h:207</div></div>
<div class="ttc" id="client_8h_html_af652f3db0f89d488cef6d90f612a2077"><div class="ttname"><a href="client_8h.html#af652f3db0f89d488cef6d90f612a2077">guac_client_foreach_user</a></div><div class="ttdeci">void guac_client_foreach_user(guac_client *client, guac_user_callback *callback, void *data)</div><div class="ttdoc">Calls the given function on all currently-connected users of the given client. </div></div>
<div class="ttc" id="client_8h_html_a686fc65f5b1afcc3f3b53e36cd1a2ebc"><div class="ttname"><a href="client_8h.html#a686fc65f5b1afcc3f3b53e36cd1a2ebc">guac_client_end_frame</a></div><div class="ttdeci">int guac_client_end_frame(guac_client *client)</div><div class="ttdoc">Marks the end of the current frame by sending a &quot;sync&quot; instruction to all connected users...</div></div>
<div class="ttc" id="client_8h_html_a4c0eccd7d0ed3dbf3e7941ce297e0224"><div class="ttname"><a href="client_8h.html#a4c0eccd7d0ed3dbf3e7941ce297e0224">vguac_client_abort</a></div><div class="ttdeci">void vguac_client_abort(guac_client *client, guac_protocol_status status, const char *format, va_list ap)</div><div class="ttdoc">Signals the given client to stop gracefully, while also signalling via the Guacamole protocol that an...</div></div>
<div class="ttc" id="client_8h_html_a336a485c006394d5eea88bf6d8d422d8"><div class="ttname"><a href="client_8h.html#a336a485c006394d5eea88bf6d8d422d8">GUAC_DEFAULT_LAYER</a></div><div class="ttdeci">const guac_layer * GUAC_DEFAULT_LAYER</div><div class="ttdoc">The default Guacamole client layer, layer 0. </div></div>
<div class="ttc" id="client_8h_html_a79cc74558e8f64807ea2847fbacd20e3"><div class="ttname"><a href="client_8h.html#a79cc74558e8f64807ea2847fbacd20e3">guac_client_supports_webp</a></div><div class="ttdeci">int guac_client_supports_webp(guac_client *client)</div><div class="ttdoc">Returns whether all users of the given client support WebP. </div></div>
<div class="ttc" id="client-constants_8h_html"><div class="ttname"><a href="client-constants_8h.html">client-constants.h</a></div><div class="ttdoc">Constants related to the Guacamole client structure, guac_client. </div></div>
<div class="ttc" id="client_8h_html_afa2b90d686c56cf753c36718ec085f35"><div class="ttname"><a href="client_8h.html#afa2b90d686c56cf753c36718ec085f35">guac_client_load_plugin</a></div><div class="ttdeci">int guac_client_load_plugin(guac_client *client, const char *protocol)</div><div class="ttdoc">Initializes the given guac_client using the initialization routine provided by the plugin correspondi...</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="user-fntypes_8h_html_a99c5146e0ab1df9ba2b2574fb26fbddf"><div class="ttname"><a href="user-fntypes_8h.html#a99c5146e0ab1df9ba2b2574fb26fbddf">guac_user_callback</a></div><div class="ttdeci">void * guac_user_callback(guac_user *user, void *data)</div><div class="ttdoc">Callback which relates to a single guac_user at a time, along with arbitrary data. </div><div class="ttdef"><b>Definition:</b> user-fntypes.h:59</div></div>
<div class="ttc" id="structguac__client_html_aa634856fd3c522377ba7345f3308000e"><div class="ttname"><a href="structguac__client.html#aa634856fd3c522377ba7345f3308000e">guac_client::socket</a></div><div class="ttdeci">guac_socket * socket</div><div class="ttdoc">The guac_socket structure to be used to communicate with all connected web-clients (users)...</div><div class="ttdef"><b>Definition:</b> client.h:57</div></div>
<div class="ttc" id="structguac__client_html_a0f3069566c7a5ca76ce4369715589dad"><div class="ttname"><a href="structguac__client.html#a0f3069566c7a5ca76ce4369715589dad">guac_client::last_sent_timestamp</a></div><div class="ttdeci">guac_timestamp last_sent_timestamp</div><div class="ttdoc">The time (in milliseconds) that the last sync message was sent to the client. </div><div class="ttdef"><b>Definition:</b> client.h:78</div></div>
<div class="ttc" id="structguac__client_html_a0e07a8086579ede2c692460998a87cac"><div class="ttname"><a href="structguac__client.html#a0e07a8086579ede2c692460998a87cac">guac_client::args</a></div><div class="ttdeci">const char ** args</div><div class="ttdoc">NULL-terminated array of all arguments accepted by this client , in order. </div><div class="ttdef"><b>Definition:</b> client.h:251</div></div>
<div class="ttc" id="stream-types_8h_html"><div class="ttname"><a href="stream-types_8h.html">stream-types.h</a></div><div class="ttdoc">Type definitions related to Guacamole protocol streams. </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="client_8h_html_a1bea3499e21736b4ea0fb949d3bc8ab9"><div class="ttname"><a href="client_8h.html#a1bea3499e21736b4ea0fb949d3bc8ab9">guac_client_alloc_stream</a></div><div class="ttdeci">guac_stream * guac_client_alloc_stream(guac_client *client)</div><div class="ttdoc">Allocates a new stream. </div></div>
<div class="ttc" id="object-types_8h_html"><div class="ttname"><a href="object-types_8h.html">object-types.h</a></div><div class="ttdoc">Type definitions related to Guacamole protocol objects. </div></div>
<div class="ttc" id="client-types_8h_html_a6f7e91d6dcb20598953948f077910c3b"><div class="ttname"><a href="client-types_8h.html#a6f7e91d6dcb20598953948f077910c3b">guac_client_state</a></div><div class="ttdeci">guac_client_state</div><div class="ttdoc">Possible current states of the Guacamole client. </div><div class="ttdef"><b>Definition:</b> client-types.h:41</div></div>
<div class="ttc" id="structguac__client_html_a0569bc7eea8d37b5bd95bcd3821ca0a3"><div class="ttname"><a href="structguac__client.html#a0569bc7eea8d37b5bd95bcd3821ca0a3">guac_client::data</a></div><div class="ttdeci">void * data</div><div class="ttdoc">Arbitrary reference to proxy client-specific data. </div><div class="ttdef"><b>Definition:</b> client.h:72</div></div>
<div class="ttc" id="client_8h_html_a4e5b374211012d1897792335112dcb89"><div class="ttname"><a href="client_8h.html#a4e5b374211012d1897792335112dcb89">guac_client_free_layer</a></div><div class="ttdeci">void guac_client_free_layer(guac_client *client, guac_layer *layer)</div><div class="ttdoc">Returns the given layer to the pool of available layers, such that it can be reused by any subsequent...</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="client_8h_html_af661d3fedd9683631bdc7d1e3205e379"><div class="ttname"><a href="client_8h.html#af661d3fedd9683631bdc7d1e3205e379">guac_client_alloc_buffer</a></div><div class="ttdeci">guac_layer * guac_client_alloc_buffer(guac_client *client)</div><div class="ttdoc">Allocates a new buffer (invisible layer). </div></div>
<div class="ttc" id="client_8h_html_a62a29f7820deaff00a10ec79aa81aed4"><div class="ttname"><a href="client_8h.html#a62a29f7820deaff00a10ec79aa81aed4">guac_client_abort</a></div><div class="ttdeci">void guac_client_abort(guac_client *client, guac_protocol_status status, const char *format,...)</div><div class="ttdoc">Signals the given client to stop gracefully, while also signalling via the Guacamole protocol that an...</div></div>
<div class="ttc" id="client_8h_html_a37a0fa9cfc4c02236085e3852972f494"><div class="ttname"><a href="client_8h.html#a37a0fa9cfc4c02236085e3852972f494">vguac_client_log</a></div><div class="ttdeci">void vguac_client_log(guac_client *client, guac_client_log_level level, const char *format, va_list ap)</div><div class="ttdoc">Writes a message in the log used by the given client. </div></div>
<div class="ttc" id="structguac__client_html_a3eb24ba13be9ecb3a8c6f64a73932f43"><div class="ttname"><a href="structguac__client.html#a3eb24ba13be9ecb3a8c6f64a73932f43">guac_client::log_handler</a></div><div class="ttdeci">guac_client_log_handler * log_handler</div><div class="ttdoc">Logging handler. </div><div class="ttdef"><b>Definition:</b> client.h:125</div></div>
<div class="ttc" id="client_8h_html_aa51ede155ad7777bc8d2e82aa6e779bf"><div class="ttname"><a href="client_8h.html#aa51ede155ad7777bc8d2e82aa6e779bf">guac_client_stream_jpeg</a></div><div class="ttdeci">void guac_client_stream_jpeg(guac_client *client, guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, int x, int y, cairo_surface_t *surface, int quality)</div><div class="ttdoc">Streams the image data of the given surface over an image stream (&quot;img&quot; instruction) as JPEG-encoded ...</div></div>
<div class="ttc" id="client_8h_html_afc03a32b3113d9a95700cac54f1cbd4b"><div class="ttname"><a href="client_8h.html#afc03a32b3113d9a95700cac54f1cbd4b">guac_client_free_buffer</a></div><div class="ttdeci">void guac_client_free_buffer(guac_client *client, guac_layer *layer)</div><div class="ttdoc">Returns the given buffer to the pool of available buffers, such that it can be reused by any subseque...</div></div>
<div class="ttc" id="user-fntypes_8h_html"><div class="ttname"><a href="user-fntypes_8h.html">user-fntypes.h</a></div><div class="ttdoc">Function type definitions related to the guac_user object. </div></div>
<div class="ttc" id="client-fntypes_8h_html_a7f8c6986f3db9818d016eee6fa562577"><div class="ttname"><a href="client-fntypes_8h.html#a7f8c6986f3db9818d016eee6fa562577">guac_client_free_handler</a></div><div class="ttdeci">int guac_client_free_handler(guac_client *client)</div><div class="ttdoc">Handler for freeing up any extra data allocated by the client implementation. </div><div class="ttdef"><b>Definition:</b> client-fntypes.h:49</div></div>
<div class="ttc" id="structguac__user_html"><div class="ttname"><a href="structguac__user.html">guac_user</a></div><div class="ttdoc">Representation of a physical connection within a larger logical connection which may be shared...</div><div class="ttdef"><b>Definition:</b> user.h:101</div></div>
<div class="ttc" id="client_8h_html_af66d105dfd1453ec46b423e6b25fa371"><div class="ttname"><a href="client_8h.html#af66d105dfd1453ec46b423e6b25fa371">guac_client_add_user</a></div><div class="ttdeci">int guac_client_add_user(guac_client *client, guac_user *user, int argc, char **argv)</div><div class="ttdoc">Adds the given user to the internal list of connected users. </div></div>
<div class="ttc" id="pool-types_8h_html"><div class="ttname"><a href="pool-types_8h.html">pool-types.h</a></div><div class="ttdoc">Type definitions related to the guac_pool pool of unique integers. </div></div>
<div class="ttc" id="client_8h_html_a6c9d8717d4b8eaa50dbd7301af27a06f"><div class="ttname"><a href="client_8h.html#a6c9d8717d4b8eaa50dbd7301af27a06f">guac_client_stream_argv</a></div><div class="ttdeci">void guac_client_stream_argv(guac_client *client, guac_socket *socket, const char *mimetype, const char *name, const char *value)</div><div class="ttdoc">Streams the given connection parameter value over an argument value stream (&quot;argv&quot; instruction)...</div></div>
<div class="ttc" id="structguac__client_html_acb3e3f5d0ce5726cdde768f97b473f53"><div class="ttname"><a href="structguac__client.html#acb3e3f5d0ce5726cdde768f97b473f53">guac_client::state</a></div><div class="ttdeci">guac_client_state state</div><div class="ttdoc">The current state of the client. </div><div class="ttdef"><b>Definition:</b> client.h:65</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="client-fntypes_8h_html"><div class="ttname"><a href="client-fntypes_8h.html">client-fntypes.h</a></div><div class="ttdoc">Function type definitions related to the Guacamole client structure, guac_client. ...</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="structguac__client_html_a73aeff08af6cf6cadd7abce74c7ff4b2"><div class="ttname"><a href="structguac__client.html#a73aeff08af6cf6cadd7abce74c7ff4b2">guac_client::connected_users</a></div><div class="ttdeci">int connected_users</div><div class="ttdoc">The number of currently-connected users. </div><div class="ttdef"><b>Definition:</b> client.h:184</div></div>
<div class="ttc" id="structguac__pool_html"><div class="ttname"><a href="structguac__pool.html">guac_pool</a></div><div class="ttdoc">A pool of integers. </div><div class="ttdef"><b>Definition:</b> pool.h:34</div></div>
<div class="ttc" id="client_8h_html_a33bad42d21ccb561aa71c4f04ae9b22a"><div class="ttname"><a href="client_8h.html#a33bad42d21ccb561aa71c4f04ae9b22a">guac_client_alloc</a></div><div class="ttdeci">guac_client * guac_client_alloc()</div><div class="ttdoc">Returns a new, barebones guac_client. </div></div>
<div class="ttc" id="structguac__client_html_ad956a3935832e9048a2727d8c5a46cf6"><div class="ttname"><a href="structguac__client.html#ad956a3935832e9048a2727d8c5a46cf6">guac_client::leave_handler</a></div><div class="ttdeci">guac_user_leave_handler * leave_handler</div><div class="ttdoc">Handler for leave events, called whenever a new user is leaving an active connection. </div><div class="ttdef"><b>Definition:</b> client.h:225</div></div>
<div class="ttc" id="client_8h_html_af3f4ed85d98b16376e2cdc031ff1b44a"><div class="ttname"><a href="client_8h.html#af3f4ed85d98b16376e2cdc031ff1b44a">guac_client_for_owner</a></div><div class="ttdeci">void * guac_client_for_owner(guac_client *client, guac_user_callback *callback, void *data)</div><div class="ttdoc">Calls the given function with the currently-connected user that is marked as the owner. </div></div>
<div class="ttc" id="client_8h_html_a76cdc454a23fdcbb70d56f923f6b6427"><div class="ttname"><a href="client_8h.html#a76cdc454a23fdcbb70d56f923f6b6427">guac_client_free</a></div><div class="ttdeci">void guac_client_free(guac_client *client)</div><div class="ttdoc">Free all resources associated with the given client. </div></div>
<div class="ttc" id="client_8h_html_a55adbd5ee8f27c4df4394dbb5bf9416e"><div class="ttname"><a href="client_8h.html#a55adbd5ee8f27c4df4394dbb5bf9416e">guac_client_stream_webp</a></div><div class="ttdeci">void guac_client_stream_webp(guac_client *client, guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, int x, int y, cairo_surface_t *surface, int quality, int lossless)</div><div class="ttdoc">Streams the image data of the given surface over an image stream (&quot;img&quot; instruction) as WebP-encoded ...</div></div>
<div class="ttc" id="client_8h_html_a2085758db585bb9d09d3860ec0fc9587"><div class="ttname"><a href="client_8h.html#a2085758db585bb9d09d3860ec0fc9587">guac_client_alloc_layer</a></div><div class="ttdeci">guac_layer * guac_client_alloc_layer(guac_client *client)</div><div class="ttdoc">Allocates a new layer. </div></div>
<div class="ttc" id="layer-types_8h_html"><div class="ttname"><a href="layer-types_8h.html">layer-types.h</a></div><div class="ttdoc">Type definitions related to Guacamole layers. </div></div>
<div class="ttc" id="user-fntypes_8h_html_aaa5806d288a42d93a54864b6c35617b8"><div class="ttname"><a href="user-fntypes_8h.html#aaa5806d288a42d93a54864b6c35617b8">guac_user_leave_handler</a></div><div class="ttdeci">int guac_user_leave_handler(guac_user *user)</div><div class="ttdoc">Handler for Guacamole leave events. </div><div class="ttdef"><b>Definition:</b> user-fntypes.h:385</div></div>
<div class="ttc" id="protocol-types_8h_html_a93612063886db58071d02b5393abf186"><div class="ttname"><a href="protocol-types_8h.html#a93612063886db58071d02b5393abf186">guac_composite_mode</a></div><div class="ttdeci">guac_composite_mode</div><div class="ttdoc">Composite modes used by Guacamole draw instructions. </div><div class="ttdef"><b>Definition:</b> protocol-types.h:170</div></div>
<div class="ttc" id="structguac__client_html_a79e29c931fd448cf51f7153fea064169"><div class="ttname"><a href="structguac__client.html#a79e29c931fd448cf51f7153fea064169">guac_client::free_handler</a></div><div class="ttdeci">guac_client_free_handler * free_handler</div><div class="ttdoc">Handler for freeing data when the client is being unloaded. </div><div class="ttdef"><b>Definition:</b> client.h:101</div></div>
<div class="ttc" id="protocol-types_8h_html_af946f7f843fa5935dbeeb08f85dec9e2"><div class="ttname"><a href="protocol-types_8h.html#af946f7f843fa5935dbeeb08f85dec9e2">guac_protocol_status</a></div><div class="ttdeci">guac_protocol_status</div><div class="ttdoc">Set of all possible status codes returned by protocol operations. </div><div class="ttdef"><b>Definition:</b> protocol-types.h:44</div></div>
<div class="ttc" id="structguac__layer_html"><div class="ttname"><a href="structguac__layer.html">guac_layer</a></div><div class="ttdoc">Represents a single layer within the Guacamole protocol. </div><div class="ttdef"><b>Definition:</b> layer.h:34</div></div>
<div class="ttc" id="client_8h_html_a022d4b5587c84f2963b176ab7999aa1b"><div class="ttname"><a href="client_8h.html#a022d4b5587c84f2963b176ab7999aa1b">guac_client_stop</a></div><div class="ttdeci">void guac_client_stop(guac_client *client)</div><div class="ttdoc">Signals the given client to stop gracefully. </div></div>
<div class="ttc" id="client_8h_html_a317b9d79afd0b0b473d7d359e0c33750"><div class="ttname"><a href="client_8h.html#a317b9d79afd0b0b473d7d359e0c33750">guac_client_stream_png</a></div><div class="ttdeci">void guac_client_stream_png(guac_client *client, guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, int x, int y, cairo_surface_t *surface)</div><div class="ttdoc">Streams the image data of the given surface over an image stream (&quot;img&quot; instruction) as PNG-encoded d...</div></div>
<div class="ttc" id="client_8h_html_a02832d5be5330dc3de524b497b7c6dfa"><div class="ttname"><a href="client_8h.html#a02832d5be5330dc3de524b497b7c6dfa">guac_client_remove_user</a></div><div class="ttdeci">void guac_client_remove_user(guac_client *client, guac_user *user)</div><div class="ttdoc">Removes the given user, removing the user from the internally-tracked list of connected users...</div></div>
<div class="ttc" id="structguac__stream_html"><div class="ttname"><a href="structguac__stream.html">guac_stream</a></div><div class="ttdoc">Represents a single stream within the Guacamole protocol. </div><div class="ttdef"><b>Definition:</b> stream.h:32</div></div>
<div class="ttc" id="client-fntypes_8h_html_a23837e22dbfe152719d596e6918bad3c"><div class="ttname"><a href="client-fntypes_8h.html#a23837e22dbfe152719d596e6918bad3c">guac_client_log_handler</a></div><div class="ttdeci">void guac_client_log_handler(guac_client *client, guac_client_log_level level, const char *format, va_list args)</div><div class="ttdoc">Handler for logging messages related to a given guac_client instance. </div><div class="ttdef"><b>Definition:</b> client-fntypes.h:67</div></div>
<div class="ttc" id="client_8h_html_aa2b94b3145fcebf2d7b1999df11d0b2c"><div class="ttname"><a href="client_8h.html#aa2b94b3145fcebf2d7b1999df11d0b2c">guac_client_get_processing_lag</a></div><div class="ttdeci">int guac_client_get_processing_lag(guac_client *client)</div><div class="ttdoc">Calculates and returns the approximate processing lag experienced by the pool of users. </div></div>
<div class="ttc" id="client-types_8h_html_adfeeb4ff06541220c91ce3401d840727"><div class="ttname"><a href="client-types_8h.html#adfeeb4ff06541220c91ce3401d840727">guac_client_log_level</a></div><div class="ttdeci">guac_client_log_level</div><div class="ttdoc">All supported log levels used by the logging subsystem of each Guacamole client. </div><div class="ttdef"><b>Definition:</b> client-types.h:62</div></div>
<div class="ttc" id="client_8h_html_af0103a5aae8ba76badd2e68e827f6782"><div class="ttname"><a href="client_8h.html#af0103a5aae8ba76badd2e68e827f6782">guac_client_free_stream</a></div><div class="ttdeci">void guac_client_free_stream(guac_client *client, guac_stream *stream)</div><div class="ttdoc">Returns the given stream to the pool of available streams, such that it can be reused by any subseque...</div></div>
<div class="ttc" id="user-fntypes_8h_html_a88717a7ab29ac1e4a853fcc2caa8f872"><div class="ttname"><a href="user-fntypes_8h.html#a88717a7ab29ac1e4a853fcc2caa8f872">guac_user_join_handler</a></div><div class="ttdeci">int guac_user_join_handler(guac_user *user, int argc, char **argv)</div><div class="ttdoc">Handler for Guacamole join events. </div><div class="ttdef"><b>Definition:</b> user-fntypes.h:366</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 class="ttc" id="user-types_8h_html"><div class="ttname"><a href="user-types_8h.html">user-types.h</a></div><div class="ttdoc">Type definitions related to the guac_user object. </div></div>
<div class="ttc" id="structguac__client_html_ad38b9ded1f04bfe8eb235e551fc08094"><div class="ttname"><a href="structguac__client.html#ad38b9ded1f04bfe8eb235e551fc08094">guac_client::connection_id</a></div><div class="ttdeci">char * connection_id</div><div class="ttdoc">The unique identifier allocated for the connection, which may be used within the Guacamole protocol t...</div><div class="ttdef"><b>Definition:</b> client.h:159</div></div>
<div class="ttc" id="client_8h_html_ad53666bbe29346497cabb04fc9628208"><div class="ttname"><a href="client_8h.html#ad53666bbe29346497cabb04fc9628208">guac_client_log</a></div><div class="ttdeci">void guac_client_log(guac_client *client, guac_client_log_level level, const char *format,...)</div><div class="ttdoc">Writes a message in the log used by the given client. </div></div>
<div class="ttc" id="client_8h_html_a7fbba296d1ec3e78dc4b79884f590a03"><div class="ttname"><a href="client_8h.html#a7fbba296d1ec3e78dc4b79884f590a03">guac_client_for_user</a></div><div class="ttdeci">void * guac_client_for_user(guac_client *client, guac_user *user, guac_user_callback *callback, void *data)</div><div class="ttdoc">Calls the given function with the given user ONLY if they are currently connected. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>