blob: af04dddd5cb2ffc6771ea36b4a4a9d7bcc9fd7fc [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: guac_user Struct Reference</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><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">guac_user Struct Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Representation of a physical connection within a larger logical connection which may be shared.
<a href="structguac__user.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a5e296149a26932dfeb7d8b0bac933ecf"><td class="memItemLeft" align="right" valign="top"><a id="a5e296149a26932dfeb7d8b0bac933ecf"></a>
<a class="el" href="structguac__client.html">guac_client</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a5e296149a26932dfeb7d8b0bac933ecf">client</a></td></tr>
<tr class="memdesc:a5e296149a26932dfeb7d8b0bac933ecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a> to which this user belongs. <br /></td></tr>
<tr class="separator:a5e296149a26932dfeb7d8b0bac933ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8496638b8c4c52f5f15d483b92becf27"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structguac__socket.html">guac_socket</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a8496638b8c4c52f5f15d483b92becf27">socket</a></td></tr>
<tr class="memdesc:a8496638b8c4c52f5f15d483b92becf27"><td class="mdescLeft">&#160;</td><td class="mdescRight">This user's actual socket. <a href="#a8496638b8c4c52f5f15d483b92becf27">More...</a><br /></td></tr>
<tr class="separator:a8496638b8c4c52f5f15d483b92becf27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad1c6a8b56d17c12eb1f1e36c4798c70"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#aad1c6a8b56d17c12eb1f1e36c4798c70">user_id</a></td></tr>
<tr class="memdesc:aad1c6a8b56d17c12eb1f1e36c4798c70"><td class="mdescLeft">&#160;</td><td class="mdescRight">The unique identifier allocated for this user, which may be used within the Guacamole protocol to refer to this user. <a href="#aad1c6a8b56d17c12eb1f1e36c4798c70">More...</a><br /></td></tr>
<tr class="separator:aad1c6a8b56d17c12eb1f1e36c4798c70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a265180af7291745b2e090ee6fa47cbb8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a265180af7291745b2e090ee6fa47cbb8">owner</a></td></tr>
<tr class="memdesc:a265180af7291745b2e090ee6fa47cbb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-zero if this user is the owner of the associated connection, zero otherwise. <a href="#a265180af7291745b2e090ee6fa47cbb8">More...</a><br /></td></tr>
<tr class="separator:a265180af7291745b2e090ee6fa47cbb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b52d918f437923d65e9b3eecb20fcfd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a1b52d918f437923d65e9b3eecb20fcfd">active</a></td></tr>
<tr class="memdesc:a1b52d918f437923d65e9b3eecb20fcfd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-zero if this user is active (connected), and zero otherwise. <a href="#a1b52d918f437923d65e9b3eecb20fcfd">More...</a><br /></td></tr>
<tr class="separator:a1b52d918f437923d65e9b3eecb20fcfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebdee192ef52dfe8956c776adc65fb16"><td class="memItemLeft" align="right" valign="top"><a id="aebdee192ef52dfe8956c776adc65fb16"></a>
<a class="el" href="timestamp-types_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#aebdee192ef52dfe8956c776adc65fb16">last_received_timestamp</a></td></tr>
<tr class="memdesc:aebdee192ef52dfe8956c776adc65fb16"><td class="mdescLeft">&#160;</td><td class="mdescRight">The time (in milliseconds) of receipt of the last sync message from the user. <br /></td></tr>
<tr class="separator:aebdee192ef52dfe8956c776adc65fb16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7e84b1bf15d3d15ba49ce58f1819060"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#ac7e84b1bf15d3d15ba49ce58f1819060">last_frame_duration</a></td></tr>
<tr class="memdesc:ac7e84b1bf15d3d15ba49ce58f1819060"><td class="mdescLeft">&#160;</td><td class="mdescRight">The duration of the last frame rendered by the user, in milliseconds. <a href="#ac7e84b1bf15d3d15ba49ce58f1819060">More...</a><br /></td></tr>
<tr class="separator:ac7e84b1bf15d3d15ba49ce58f1819060"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b097cae9283bb0caf70189d4f3d1d0e"><td class="memItemLeft" align="right" valign="top"><a id="a4b097cae9283bb0caf70189d4f3d1d0e"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a4b097cae9283bb0caf70189d4f3d1d0e">processing_lag</a></td></tr>
<tr class="memdesc:a4b097cae9283bb0caf70189d4f3d1d0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The overall lag experienced by the user relative to the stream of frames, roughly excluding network lag. <br /></td></tr>
<tr class="separator:a4b097cae9283bb0caf70189d4f3d1d0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0120f63e0eb933761666047ed80e483f"><td class="memItemLeft" align="right" valign="top"><a id="a0120f63e0eb933761666047ed80e483f"></a>
<a class="el" href="structguac__user__info.html">guac_user_info</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a0120f63e0eb933761666047ed80e483f">info</a></td></tr>
<tr class="memdesc:a0120f63e0eb933761666047ed80e483f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Information structure containing properties exposed by the remote user during the initial handshake process. <br /></td></tr>
<tr class="separator:a0120f63e0eb933761666047ed80e483f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad424a52c5d996e4a33de5dad61555883"><td class="memItemLeft" align="right" valign="top"><a id="ad424a52c5d996e4a33de5dad61555883"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#ad424a52c5d996e4a33de5dad61555883">data</a></td></tr>
<tr class="memdesc:ad424a52c5d996e4a33de5dad61555883"><td class="mdescLeft">&#160;</td><td class="mdescRight">Arbitrary user-specific data. <br /></td></tr>
<tr class="separator:ad424a52c5d996e4a33de5dad61555883"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05ec6fd1894ff8df10c051b20df1b763"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#a337a3fe8b983e3e25e25dbb836ea2694">guac_user_mouse_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a05ec6fd1894ff8df10c051b20df1b763">mouse_handler</a></td></tr>
<tr class="memdesc:a05ec6fd1894ff8df10c051b20df1b763"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for mouse events sent by the Gaucamole web-client. <a href="#a05ec6fd1894ff8df10c051b20df1b763">More...</a><br /></td></tr>
<tr class="separator:a05ec6fd1894ff8df10c051b20df1b763"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9b8b3c268a0d14a28bdae6929cffb13"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#a48d196c39615f6a1ff9b129267cb402e">guac_user_key_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#ab9b8b3c268a0d14a28bdae6929cffb13">key_handler</a></td></tr>
<tr class="memdesc:ab9b8b3c268a0d14a28bdae6929cffb13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for key events sent by the Guacamole web-client. <a href="#ab9b8b3c268a0d14a28bdae6929cffb13">More...</a><br /></td></tr>
<tr class="separator:ab9b8b3c268a0d14a28bdae6929cffb13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77f042802092c8bbf4407836f3185343"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#a1658ce15f8c6fe958e873015e12aeed9">guac_user_clipboard_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a77f042802092c8bbf4407836f3185343">clipboard_handler</a></td></tr>
<tr class="memdesc:a77f042802092c8bbf4407836f3185343"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for clipboard events sent by the Guacamole web-client. <a href="#a77f042802092c8bbf4407836f3185343">More...</a><br /></td></tr>
<tr class="separator:a77f042802092c8bbf4407836f3185343"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36a2fee906be0898907ba6e4a97bdb9a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#aca3c0d12202f7888146bb95986011b6f">guac_user_size_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a36a2fee906be0898907ba6e4a97bdb9a">size_handler</a></td></tr>
<tr class="memdesc:a36a2fee906be0898907ba6e4a97bdb9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for size events sent by the Guacamole web-client. <a href="#a36a2fee906be0898907ba6e4a97bdb9a">More...</a><br /></td></tr>
<tr class="separator:a36a2fee906be0898907ba6e4a97bdb9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b958a20fbe7cf082d5ee074fceac474"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#a6c24aa9dee9ee4be3f3d21e1e24b9e3e">guac_user_file_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a8b958a20fbe7cf082d5ee074fceac474">file_handler</a></td></tr>
<tr class="memdesc:a8b958a20fbe7cf082d5ee074fceac474"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for file events sent by the Guacamole web-client. <a href="#a8b958a20fbe7cf082d5ee074fceac474">More...</a><br /></td></tr>
<tr class="separator:a8b958a20fbe7cf082d5ee074fceac474"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af35d1f6f2c97d917bf88cf66384f58a3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#ab7ae6833c33b39618a8b78603581ff79">guac_user_pipe_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#af35d1f6f2c97d917bf88cf66384f58a3">pipe_handler</a></td></tr>
<tr class="memdesc:af35d1f6f2c97d917bf88cf66384f58a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for pipe events sent by the Guacamole web-client. <a href="#af35d1f6f2c97d917bf88cf66384f58a3">More...</a><br /></td></tr>
<tr class="separator:af35d1f6f2c97d917bf88cf66384f58a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad44c1bf6ab56aae0098458a1af2aa6be"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#a88f4b7af6d47c82f65e9332afcc7ab09">guac_user_ack_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#ad44c1bf6ab56aae0098458a1af2aa6be">ack_handler</a></td></tr>
<tr class="memdesc:ad44c1bf6ab56aae0098458a1af2aa6be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for ack events sent by the Guacamole web-client. <a href="#ad44c1bf6ab56aae0098458a1af2aa6be">More...</a><br /></td></tr>
<tr class="separator:ad44c1bf6ab56aae0098458a1af2aa6be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88a14fda25c9929269d198d4d602f7fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#aead320956199884ff6af82d49d6163c1">guac_user_blob_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a88a14fda25c9929269d198d4d602f7fb">blob_handler</a></td></tr>
<tr class="memdesc:a88a14fda25c9929269d198d4d602f7fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for blob events sent by the Guacamole web-client. <a href="#a88a14fda25c9929269d198d4d602f7fb">More...</a><br /></td></tr>
<tr class="separator:a88a14fda25c9929269d198d4d602f7fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a793f7ef1cd818c296e7a5801c349f5ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#afa8b0e25073cbe710265dc8a0ed150ca">guac_user_end_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a793f7ef1cd818c296e7a5801c349f5ed">end_handler</a></td></tr>
<tr class="memdesc:a793f7ef1cd818c296e7a5801c349f5ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for stream end events sent by the Guacamole web-client. <a href="#a793f7ef1cd818c296e7a5801c349f5ed">More...</a><br /></td></tr>
<tr class="separator:a793f7ef1cd818c296e7a5801c349f5ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a209e83f080baf2e84d04cf08395374d2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#ab60c51d865526c5c5d2c096e4fcb5539">guac_user_sync_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a209e83f080baf2e84d04cf08395374d2">sync_handler</a></td></tr>
<tr class="memdesc:a209e83f080baf2e84d04cf08395374d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for sync events sent by the Guacamole web-client. <a href="#a209e83f080baf2e84d04cf08395374d2">More...</a><br /></td></tr>
<tr class="separator:a209e83f080baf2e84d04cf08395374d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12f1c20cab11d657e0f255db10f42e2f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#aaa5806d288a42d93a54864b6c35617b8">guac_user_leave_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a12f1c20cab11d657e0f255db10f42e2f">leave_handler</a></td></tr>
<tr class="memdesc:a12f1c20cab11d657e0f255db10f42e2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for leave events fired by the <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a> when a <a class="el" href="structguac__user.html" title="Representation of a physical connection within a larger logical connection which may be shared...">guac_user</a> is leaving an active connection. <a href="#a12f1c20cab11d657e0f255db10f42e2f">More...</a><br /></td></tr>
<tr class="separator:a12f1c20cab11d657e0f255db10f42e2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada73c04bbf06de4280f2d7679190a19b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#ab8b7cadf31aeac0b2ac0ce4f46dafe81">guac_user_get_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#ada73c04bbf06de4280f2d7679190a19b">get_handler</a></td></tr>
<tr class="memdesc:ada73c04bbf06de4280f2d7679190a19b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for get events sent by the Guacamole web-client. <a href="#ada73c04bbf06de4280f2d7679190a19b">More...</a><br /></td></tr>
<tr class="separator:ada73c04bbf06de4280f2d7679190a19b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b33553d0e1af01d8c9fbc6ec33202c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#afd4c60871cc2dbbbdc82f58ae1c5baa0">guac_user_put_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a0b33553d0e1af01d8c9fbc6ec33202c3">put_handler</a></td></tr>
<tr class="memdesc:a0b33553d0e1af01d8c9fbc6ec33202c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for put events sent by the Guacamole web-client. <a href="#a0b33553d0e1af01d8c9fbc6ec33202c3">More...</a><br /></td></tr>
<tr class="separator:a0b33553d0e1af01d8c9fbc6ec33202c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a391e11605bf5605df3e27f6f7d0e2c69"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#a1d2777aaa35f39e5ba5e803a3ffbd137">guac_user_audio_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#a391e11605bf5605df3e27f6f7d0e2c69">audio_handler</a></td></tr>
<tr class="memdesc:a391e11605bf5605df3e27f6f7d0e2c69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for audio events sent by the Guacamole web-client. <a href="#a391e11605bf5605df3e27f6f7d0e2c69">More...</a><br /></td></tr>
<tr class="separator:a391e11605bf5605df3e27f6f7d0e2c69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6b6bdcd73d29132df5f331921ca287a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="user-fntypes_8h.html#a50636d9fb70c454a5e82cbf6ee4f9c8a">guac_user_argv_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__user.html#ab6b6bdcd73d29132df5f331921ca287a">argv_handler</a></td></tr>
<tr class="memdesc:ab6b6bdcd73d29132df5f331921ca287a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for argv events (updates to the connection parameters of an in-progress connection) sent by the Guacamole web-client. <a href="#ab6b6bdcd73d29132df5f331921ca287a">More...</a><br /></td></tr>
<tr class="separator:ab6b6bdcd73d29132df5f331921ca287a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Representation of a physical connection within a larger logical connection which may be shared. </p>
<p>Logical connections are represented by <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a>. </p>
</div><h2 class="groupheader">Field Documentation</h2>
<a id="ad44c1bf6ab56aae0098458a1af2aa6be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad44c1bf6ab56aae0098458a1af2aa6be">&#9670;&nbsp;</a></span>ack_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#a88f4b7af6d47c82f65e9332afcc7ab09">guac_user_ack_handler</a>* guac_user::ack_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for ack events sent by the Guacamole web-client. </p>
<p>The handler takes a <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a> which contains the stream index and will persist through the duration of the transfer, a string containing the error or status message, and a status code.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#ad44c1bf6ab56aae0098458a1af2aa6be">ack_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div><div class="line"> <span class="keywordtype">char</span>* error, <a class="code" href="protocol-types_8h.html#af946f7f843fa5935dbeeb08f85dec9e2">guac_protocol_status</a> status);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#ad44c1bf6ab56aae0098458a1af2aa6be">ack_handler</a> = <a class="code" href="structguac__user.html#ad44c1bf6ab56aae0098458a1af2aa6be">ack_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a1b52d918f437923d65e9b3eecb20fcfd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b52d918f437923d65e9b3eecb20fcfd">&#9670;&nbsp;</a></span>active</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int guac_user::active</td>
</tr>
</table>
</div><div class="memdoc">
<p>Non-zero if this user is active (connected), and zero otherwise. </p>
<p>When the user is created, this will be set to a non-zero value. If an event occurs which requires that the user disconnect, or the user has disconnected, this will be reset to zero. </p>
</div>
</div>
<a id="ab6b6bdcd73d29132df5f331921ca287a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6b6bdcd73d29132df5f331921ca287a">&#9670;&nbsp;</a></span>argv_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#a50636d9fb70c454a5e82cbf6ee4f9c8a">guac_user_argv_handler</a>* guac_user::argv_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for argv events (updates to the connection parameters of an in-progress connection) sent by the Guacamole web-client. </p>
<p>The handler takes a <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a> which contains the stream index and will persist through the duration of the transfer, the mimetype of the data being transferred, and the argument (connection parameter) name.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#ab6b6bdcd73d29132df5f331921ca287a">argv_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div><div class="line"> <span class="keywordtype">char</span>* mimetype, <span class="keywordtype">char</span>* name);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#ab6b6bdcd73d29132df5f331921ca287a">argv_handler</a> = <a class="code" href="structguac__user.html#ab6b6bdcd73d29132df5f331921ca287a">argv_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a391e11605bf5605df3e27f6f7d0e2c69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a391e11605bf5605df3e27f6f7d0e2c69">&#9670;&nbsp;</a></span>audio_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#a1d2777aaa35f39e5ba5e803a3ffbd137">guac_user_audio_handler</a>* guac_user::audio_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for audio events sent by the Guacamole web-client. </p>
<p>This handler will be called whenever the web-client wishes to send a continuous stream of audio data from some arbitrary source (a microphone, for example).</p>
<p>The handler takes a <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a>, which contains the stream index and will persist through the duration of the transfer, and the mimetype of the data being transferred.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a391e11605bf5605df3e27f6f7d0e2c69">audio_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div><div class="line"> <span class="keywordtype">char</span>* mimetype);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#a391e11605bf5605df3e27f6f7d0e2c69">audio_handler</a> = <a class="code" href="structguac__user.html#a391e11605bf5605df3e27f6f7d0e2c69">audio_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a88a14fda25c9929269d198d4d602f7fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88a14fda25c9929269d198d4d602f7fb">&#9670;&nbsp;</a></span>blob_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#aead320956199884ff6af82d49d6163c1">guac_user_blob_handler</a>* guac_user::blob_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for blob events sent by the Guacamole web-client. </p>
<p>The handler takes a <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a> which contains the stream index and will persist through the duration of the transfer, an arbitrary buffer containing the blob, and the length of the blob.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a88a14fda25c9929269d198d4d602f7fb">blob_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div><div class="line"> <span class="keywordtype">void</span>* <a class="code" href="structguac__user.html#ad424a52c5d996e4a33de5dad61555883">data</a>, <span class="keywordtype">int</span> length);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#a88a14fda25c9929269d198d4d602f7fb">blob_handler</a> = <a class="code" href="structguac__user.html#a88a14fda25c9929269d198d4d602f7fb">blob_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a77f042802092c8bbf4407836f3185343"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77f042802092c8bbf4407836f3185343">&#9670;&nbsp;</a></span>clipboard_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#a1658ce15f8c6fe958e873015e12aeed9">guac_user_clipboard_handler</a>* guac_user::clipboard_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for clipboard events sent by the Guacamole web-client. </p>
<p>This handler will be called whenever the web-client sets the data of the clipboard.</p>
<p>The handler takes a <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a>, which contains the stream index and will persist through the duration of the transfer, and the mimetype of the data being transferred.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a77f042802092c8bbf4407836f3185343">clipboard_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div><div class="line"> <span class="keywordtype">char</span>* mimetype);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#a77f042802092c8bbf4407836f3185343">clipboard_handler</a> = <a class="code" href="structguac__user.html#a77f042802092c8bbf4407836f3185343">clipboard_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a793f7ef1cd818c296e7a5801c349f5ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a793f7ef1cd818c296e7a5801c349f5ed">&#9670;&nbsp;</a></span>end_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#afa8b0e25073cbe710265dc8a0ed150ca">guac_user_end_handler</a>* guac_user::end_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for stream end events sent by the Guacamole web-client. </p>
<p>The handler takes only a <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a> which contains the stream index. This <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a> will be disposed of immediately after this event is finished.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a793f7ef1cd818c296e7a5801c349f5ed">end_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__stream.html">guac_stream</a>* stream);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#a793f7ef1cd818c296e7a5801c349f5ed">end_handler</a> = <a class="code" href="structguac__user.html#a793f7ef1cd818c296e7a5801c349f5ed">end_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a8b958a20fbe7cf082d5ee074fceac474"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b958a20fbe7cf082d5ee074fceac474">&#9670;&nbsp;</a></span>file_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#a6c24aa9dee9ee4be3f3d21e1e24b9e3e">guac_user_file_handler</a>* guac_user::file_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for file events sent by the Guacamole web-client. </p>
<p>The handler takes a <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a> which contains the stream index and will persist through the duration of the transfer, the mimetype of the file being transferred, and the filename.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a8b958a20fbe7cf082d5ee074fceac474">file_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div><div class="line"> <span class="keywordtype">char</span>* mimetype, <span class="keywordtype">char</span>* filename);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#a8b958a20fbe7cf082d5ee074fceac474">file_handler</a> = <a class="code" href="structguac__user.html#a8b958a20fbe7cf082d5ee074fceac474">file_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="ada73c04bbf06de4280f2d7679190a19b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada73c04bbf06de4280f2d7679190a19b">&#9670;&nbsp;</a></span>get_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#ab8b7cadf31aeac0b2ac0ce4f46dafe81">guac_user_get_handler</a>* guac_user::get_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for get events sent by the Guacamole web-client. </p>
<p>The handler takes a <a class="el" href="structguac__object.html" title="Represents a single object within the Guacamole protocol. ">guac_object</a>, containing the object index which will persist through the duration of the transfer, and the name of the stream being requested. It is up to the get handler to create the required body stream.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#ada73c04bbf06de4280f2d7679190a19b">get_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__object.html">guac_object</a>* <span class="keywordtype">object</span>,</div><div class="line"> <span class="keywordtype">char</span>* name);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#ada73c04bbf06de4280f2d7679190a19b">get_handler</a> = <a class="code" href="structguac__user.html#ada73c04bbf06de4280f2d7679190a19b">get_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="ab9b8b3c268a0d14a28bdae6929cffb13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9b8b3c268a0d14a28bdae6929cffb13">&#9670;&nbsp;</a></span>key_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#a48d196c39615f6a1ff9b129267cb402e">guac_user_key_handler</a>* guac_user::key_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for key events sent by the Guacamole web-client. </p>
<p>The handler takes the integer X11 keysym associated with the key being pressed/released, and an integer representing whether the key is being pressed (1) or released (0).</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#ab9b8b3c268a0d14a28bdae6929cffb13">key_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <span class="keywordtype">int</span> keysym, <span class="keywordtype">int</span> pressed);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#ab9b8b3c268a0d14a28bdae6929cffb13">key_handler</a> = <a class="code" href="structguac__user.html#ab9b8b3c268a0d14a28bdae6929cffb13">key_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="ac7e84b1bf15d3d15ba49ce58f1819060"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac7e84b1bf15d3d15ba49ce58f1819060">&#9670;&nbsp;</a></span>last_frame_duration</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int guac_user::last_frame_duration</td>
</tr>
</table>
</div><div class="memdoc">
<p>The duration of the last frame rendered by the user, in milliseconds. </p>
<p>This duration will include network and processing lag, and thus should be slightly higher than the true frame duration. </p>
</div>
</div>
<a id="a12f1c20cab11d657e0f255db10f42e2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12f1c20cab11d657e0f255db10f42e2f">&#9670;&nbsp;</a></span>leave_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#aaa5806d288a42d93a54864b6c35617b8">guac_user_leave_handler</a>* guac_user::leave_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for leave events fired by the <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a> when a <a class="el" href="structguac__user.html" title="Representation of a physical connection within a larger logical connection which may be shared...">guac_user</a> is leaving an active connection. </p>
<p>The handler takes only a <a class="el" href="structguac__user.html" title="Representation of a physical connection within a larger logical connection which may be shared...">guac_user</a> which will be the <a class="el" href="structguac__user.html" title="Representation of a physical connection within a larger logical connection which may be shared...">guac_user</a> that left the connection. This <a class="el" href="structguac__user.html" title="Representation of a physical connection within a larger logical connection which may be shared...">guac_user</a> will be disposed of immediately after this event is finished.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a12f1c20cab11d657e0f255db10f42e2f">leave_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> my_join_handler(<a class="code" href="structguac__user.html">guac_user</a>* user, <span class="keywordtype">int</span> argv, <span class="keywordtype">char</span>** argv) {</div><div class="line"> user-&gt;<a class="code" href="structguac__user.html#a12f1c20cab11d657e0f255db10f42e2f">leave_handler</a> = <a class="code" href="structguac__user.html#a12f1c20cab11d657e0f255db10f42e2f">leave_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a05ec6fd1894ff8df10c051b20df1b763"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05ec6fd1894ff8df10c051b20df1b763">&#9670;&nbsp;</a></span>mouse_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#a337a3fe8b983e3e25e25dbb836ea2694">guac_user_mouse_handler</a>* guac_user::mouse_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for mouse events sent by the Gaucamole web-client. </p>
<p>The handler takes the integer mouse X and Y coordinates, as well as a button mask containing the bitwise OR of all button values currently being pressed. Those values are:</p>
<table class="doxtable">
<tr>
<th>Button </th><th>Value </th></tr>
<tr>
<td>Left </td><td>1 </td></tr>
<tr>
<td>Middle </td><td>2 </td></tr>
<tr>
<td>Right </td><td>4 </td></tr>
<tr>
<td>Scrollwheel Up </td><td>8 </td></tr>
<tr>
<td>Scrollwheel Down</td><td>16 </td></tr>
</table>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a05ec6fd1894ff8df10c051b20df1b763">mouse_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> button_mask);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#a05ec6fd1894ff8df10c051b20df1b763">mouse_handler</a> = <a class="code" href="structguac__user.html#a05ec6fd1894ff8df10c051b20df1b763">mouse_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a265180af7291745b2e090ee6fa47cbb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a265180af7291745b2e090ee6fa47cbb8">&#9670;&nbsp;</a></span>owner</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int guac_user::owner</td>
</tr>
</table>
</div><div class="memdoc">
<p>Non-zero if this user is the owner of the associated connection, zero otherwise. </p>
<p>The owner is the user which created the connection. </p>
</div>
</div>
<a id="af35d1f6f2c97d917bf88cf66384f58a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af35d1f6f2c97d917bf88cf66384f58a3">&#9670;&nbsp;</a></span>pipe_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#ab7ae6833c33b39618a8b78603581ff79">guac_user_pipe_handler</a>* guac_user::pipe_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for pipe events sent by the Guacamole web-client. </p>
<p>The handler takes a <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a> which contains the stream index and will persist through the duration of the transfer, the mimetype of the data being transferred, and the pipe name.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#af35d1f6f2c97d917bf88cf66384f58a3">pipe_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div><div class="line"> <span class="keywordtype">char</span>* mimetype, <span class="keywordtype">char</span>* name);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#af35d1f6f2c97d917bf88cf66384f58a3">pipe_handler</a> = <a class="code" href="structguac__user.html#af35d1f6f2c97d917bf88cf66384f58a3">pipe_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a0b33553d0e1af01d8c9fbc6ec33202c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b33553d0e1af01d8c9fbc6ec33202c3">&#9670;&nbsp;</a></span>put_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#afd4c60871cc2dbbbdc82f58ae1c5baa0">guac_user_put_handler</a>* guac_user::put_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for put events sent by the Guacamole web-client. </p>
<p>The handler takes a <a class="el" href="structguac__object.html" title="Represents a single object within the Guacamole protocol. ">guac_object</a> and <a class="el" href="structguac__stream.html" title="Represents a single stream within the Guacamole protocol. ">guac_stream</a>, which each contain their respective indices which will persist through the duration of the transfer, the mimetype of the data being transferred, and the name of the stream within the object being written to.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a0b33553d0e1af01d8c9fbc6ec33202c3">put_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="structguac__object.html">guac_object</a>* <span class="keywordtype">object</span>,</div><div class="line"> <a class="code" href="structguac__stream.html">guac_stream</a>* stream, <span class="keywordtype">char</span>* mimetype, <span class="keywordtype">char</span>* name);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#a0b33553d0e1af01d8c9fbc6ec33202c3">put_handler</a> = <a class="code" href="structguac__user.html#a0b33553d0e1af01d8c9fbc6ec33202c3">put_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a36a2fee906be0898907ba6e4a97bdb9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36a2fee906be0898907ba6e4a97bdb9a">&#9670;&nbsp;</a></span>size_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#aca3c0d12202f7888146bb95986011b6f">guac_user_size_handler</a>* guac_user::size_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for size events sent by the Guacamole web-client. </p>
<p>The handler takes an integer width and integer height, representing the current visible screen area of the client.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a36a2fee906be0898907ba6e4a97bdb9a">size_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#a36a2fee906be0898907ba6e4a97bdb9a">size_handler</a> = <a class="code" href="structguac__user.html#a36a2fee906be0898907ba6e4a97bdb9a">size_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a8496638b8c4c52f5f15d483b92becf27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8496638b8c4c52f5f15d483b92becf27">&#9670;&nbsp;</a></span>socket</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structguac__socket.html">guac_socket</a>* guac_user::socket</td>
</tr>
</table>
</div><div class="memdoc">
<p>This user's actual socket. </p>
<p>Data written to this socket will be received by this user alone, and data sent by this specific user will be received by this socket. </p>
</div>
</div>
<a id="a209e83f080baf2e84d04cf08395374d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a209e83f080baf2e84d04cf08395374d2">&#9670;&nbsp;</a></span>sync_handler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="user-fntypes_8h.html#ab60c51d865526c5c5d2c096e4fcb5539">guac_user_sync_handler</a>* guac_user::sync_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handler for sync events sent by the Guacamole web-client. </p>
<p>Sync events are used to track per-user latency.</p>
<p>The handler takes only a guac_timestamp which contains the timestamp received from the user. Latency can be determined by comparing this timestamp against the last_sent_timestamp of <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a>.</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__user.html#a209e83f080baf2e84d04cf08395374d2">sync_handler</a>(<a class="code" href="structguac__user.html">guac_user</a>* user, <a class="code" href="timestamp-types_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a> timestamp);</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> guac_user_init(<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"> user-&gt;<a class="code" href="structguac__user.html#a209e83f080baf2e84d04cf08395374d2">sync_handler</a> = <a class="code" href="structguac__user.html#a209e83f080baf2e84d04cf08395374d2">sync_handler</a>;</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="aad1c6a8b56d17c12eb1f1e36c4798c70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad1c6a8b56d17c12eb1f1e36c4798c70">&#9670;&nbsp;</a></span>user_id</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char* guac_user::user_id</td>
</tr>
</table>
</div><div class="memdoc">
<p>The unique identifier allocated for this user, which may be used within the Guacamole protocol to refer to this user. </p>
<p>This identifier is guaranteed to be unique from all existing connections and users, and will not collide with any available protocol names. </p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>guacamole/<a class="el" href="user_8h_source.html">user.h</a></li>
</ul>
</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>