<!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/user-fntypes.h File 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.0.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="summary">
<a href="#typedef-members">Typedefs</a>  </div>
  <div class="headertitle">
<div class="title">user-fntypes.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Function type definitions related to 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> object.  
<a href="#details">More...</a></p>

<p><a href="user-fntypes_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a99c5146e0ab1df9ba2b2574fb26fbddf"><td class="memItemLeft" align="right" valign="top">typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#a99c5146e0ab1df9ba2b2574fb26fbddf">guac_user_callback</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, void *data)</td></tr>
<tr class="memdesc:a99c5146e0ab1df9ba2b2574fb26fbddf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback which relates to a single <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> at a time, along with arbitrary data.  <a href="#a99c5146e0ab1df9ba2b2574fb26fbddf">More...</a><br /></td></tr>
<tr class="separator:a99c5146e0ab1df9ba2b2574fb26fbddf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a337a3fe8b983e3e25e25dbb836ea2694"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#a337a3fe8b983e3e25e25dbb836ea2694">guac_user_mouse_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, int x, int y, int button_mask)</td></tr>
<tr class="memdesc:a337a3fe8b983e3e25e25dbb836ea2694"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole mouse events, invoked when a "mouse" instruction has been received from a user.  <a href="#a337a3fe8b983e3e25e25dbb836ea2694">More...</a><br /></td></tr>
<tr class="separator:a337a3fe8b983e3e25e25dbb836ea2694"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48d196c39615f6a1ff9b129267cb402e"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#a48d196c39615f6a1ff9b129267cb402e">guac_user_key_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, int keysym, int pressed)</td></tr>
<tr class="memdesc:a48d196c39615f6a1ff9b129267cb402e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole key events, invoked when a "key" event has been received from a user.  <a href="#a48d196c39615f6a1ff9b129267cb402e">More...</a><br /></td></tr>
<tr class="separator:a48d196c39615f6a1ff9b129267cb402e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d2777aaa35f39e5ba5e803a3ffbd137"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#a1d2777aaa35f39e5ba5e803a3ffbd137">guac_user_audio_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype)</td></tr>
<tr class="memdesc:a1d2777aaa35f39e5ba5e803a3ffbd137"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole audio streams received from a user.  <a href="#a1d2777aaa35f39e5ba5e803a3ffbd137">More...</a><br /></td></tr>
<tr class="separator:a1d2777aaa35f39e5ba5e803a3ffbd137"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1658ce15f8c6fe958e873015e12aeed9"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#a1658ce15f8c6fe958e873015e12aeed9">guac_user_clipboard_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype)</td></tr>
<tr class="memdesc:a1658ce15f8c6fe958e873015e12aeed9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole clipboard streams received from a user.  <a href="#a1658ce15f8c6fe958e873015e12aeed9">More...</a><br /></td></tr>
<tr class="separator:a1658ce15f8c6fe958e873015e12aeed9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca3c0d12202f7888146bb95986011b6f"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#aca3c0d12202f7888146bb95986011b6f">guac_user_size_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, int width, int height)</td></tr>
<tr class="memdesc:aca3c0d12202f7888146bb95986011b6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole size events, invoked when a "size" instruction has been received from a user.  <a href="#aca3c0d12202f7888146bb95986011b6f">More...</a><br /></td></tr>
<tr class="separator:aca3c0d12202f7888146bb95986011b6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c24aa9dee9ee4be3f3d21e1e24b9e3e"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#a6c24aa9dee9ee4be3f3d21e1e24b9e3e">guac_user_file_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype, char *filename)</td></tr>
<tr class="memdesc:a6c24aa9dee9ee4be3f3d21e1e24b9e3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole file streams received from a user.  <a href="#a6c24aa9dee9ee4be3f3d21e1e24b9e3e">More...</a><br /></td></tr>
<tr class="separator:a6c24aa9dee9ee4be3f3d21e1e24b9e3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7ae6833c33b39618a8b78603581ff79"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#ab7ae6833c33b39618a8b78603581ff79">guac_user_pipe_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype, char *name)</td></tr>
<tr class="memdesc:ab7ae6833c33b39618a8b78603581ff79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole pipe streams received from a user.  <a href="#ab7ae6833c33b39618a8b78603581ff79">More...</a><br /></td></tr>
<tr class="separator:ab7ae6833c33b39618a8b78603581ff79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aead320956199884ff6af82d49d6163c1"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#aead320956199884ff6af82d49d6163c1">guac_user_blob_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, void *data, int length)</td></tr>
<tr class="memdesc:aead320956199884ff6af82d49d6163c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole stream blobs.  <a href="#aead320956199884ff6af82d49d6163c1">More...</a><br /></td></tr>
<tr class="separator:aead320956199884ff6af82d49d6163c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88f4b7af6d47c82f65e9332afcc7ab09"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#a88f4b7af6d47c82f65e9332afcc7ab09">guac_user_ack_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *error, <a class="el" href="protocol-types_8h.html#af946f7f843fa5935dbeeb08f85dec9e2">guac_protocol_status</a> status)</td></tr>
<tr class="memdesc:a88f4b7af6d47c82f65e9332afcc7ab09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole stream "ack" instructions.  <a href="#a88f4b7af6d47c82f65e9332afcc7ab09">More...</a><br /></td></tr>
<tr class="separator:a88f4b7af6d47c82f65e9332afcc7ab09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa8b0e25073cbe710265dc8a0ed150ca"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#afa8b0e25073cbe710265dc8a0ed150ca">guac_user_end_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream)</td></tr>
<tr class="memdesc:afa8b0e25073cbe710265dc8a0ed150ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole stream "end" instructions.  <a href="#afa8b0e25073cbe710265dc8a0ed150ca">More...</a><br /></td></tr>
<tr class="separator:afa8b0e25073cbe710265dc8a0ed150ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88717a7ab29ac1e4a853fcc2caa8f872"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#a88717a7ab29ac1e4a853fcc2caa8f872">guac_user_join_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, int argc, char **argv)</td></tr>
<tr class="memdesc:a88717a7ab29ac1e4a853fcc2caa8f872"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole join events.  <a href="#a88717a7ab29ac1e4a853fcc2caa8f872">More...</a><br /></td></tr>
<tr class="separator:a88717a7ab29ac1e4a853fcc2caa8f872"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa5806d288a42d93a54864b6c35617b8"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#aaa5806d288a42d93a54864b6c35617b8">guac_user_leave_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user)</td></tr>
<tr class="memdesc:aaa5806d288a42d93a54864b6c35617b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole leave events.  <a href="#aaa5806d288a42d93a54864b6c35617b8">More...</a><br /></td></tr>
<tr class="separator:aaa5806d288a42d93a54864b6c35617b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab60c51d865526c5c5d2c096e4fcb5539"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#ab60c51d865526c5c5d2c096e4fcb5539">guac_user_sync_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="timestamp-types_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a> timestamp)</td></tr>
<tr class="memdesc:ab60c51d865526c5c5d2c096e4fcb5539"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole sync events.  <a href="#ab60c51d865526c5c5d2c096e4fcb5539">More...</a><br /></td></tr>
<tr class="separator:ab60c51d865526c5c5d2c096e4fcb5539"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8b7cadf31aeac0b2ac0ce4f46dafe81"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#ab8b7cadf31aeac0b2ac0ce4f46dafe81">guac_user_get_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__object.html">guac_object</a> *object, char *name)</td></tr>
<tr class="memdesc:ab8b7cadf31aeac0b2ac0ce4f46dafe81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole object get requests.  <a href="#ab8b7cadf31aeac0b2ac0ce4f46dafe81">More...</a><br /></td></tr>
<tr class="separator:ab8b7cadf31aeac0b2ac0ce4f46dafe81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd4c60871cc2dbbbdc82f58ae1c5baa0"><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="user-fntypes_8h.html#afd4c60871cc2dbbbdc82f58ae1c5baa0">guac_user_put_handler</a>(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__object.html">guac_object</a> *object, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype, char *name)</td></tr>
<tr class="memdesc:afd4c60871cc2dbbbdc82f58ae1c5baa0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for Guacamole object put requests.  <a href="#afd4c60871cc2dbbbdc82f58ae1c5baa0">More...</a><br /></td></tr>
<tr class="separator:afd4c60871cc2dbbbdc82f58ae1c5baa0"><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>Function type definitions related to 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> object. </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a id="a88f4b7af6d47c82f65e9332afcc7ab09"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88f4b7af6d47c82f65e9332afcc7ab09">&#9670;&nbsp;</a></span>guac_user_ack_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_ack_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *error, <a class="el" href="protocol-types_8h.html#af946f7f843fa5935dbeeb08f85dec9e2">guac_protocol_status</a> status)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole stream "ack" instructions. </p>
<p>A user will send "ack" instructions to acknowledge the successful receipt of blobs along a stream opened by the server, or to notify of errors. An "ack" with an error status implicitly closes the stream.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user sending the "ack" instruction.</td></tr>
    <tr><td class="paramname">stream</td><td>The stream for which the "ack" was received.</td></tr>
    <tr><td class="paramname">error</td><td>An arbitrary, human-readable message describing the error that occurred, if any. If no error occurs, this will likely be blank, "SUCCESS", or similar. This value exists for the sake of readability, not for the sake of data interchange.</td></tr>
    <tr><td class="paramname">status</td><td>GUAC_PROTOCOL_STATUS_SUCCESS if the blob was received and handled successfully, or a different status code describing the problem if an error occurred and the stream has been implicitly closed.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the "ack" message was successfully handled, non-zero otherwise. </dd></dl>

</div>
</div>
<a id="a1d2777aaa35f39e5ba5e803a3ffbd137"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d2777aaa35f39e5ba5e803a3ffbd137">&#9670;&nbsp;</a></span>guac_user_audio_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_audio_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole audio streams received from a user. </p>
<p>Each such audio stream begins when the user sends an "audio" instruction. To handle received data along this stream, implementations of this handler must assign blob and end handlers to the given stream object.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that opened the audio stream.</td></tr>
    <tr><td class="paramname">stream</td><td>The stream object allocated by libguac to represent the audio stream opened by the user.</td></tr>
    <tr><td class="paramname">mimetype</td><td>The mimetype of the data that will be sent along the stream.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the opening of the audio stream has been handled successfully, or non-zero if an error occurs. </dd></dl>

</div>
</div>
<a id="aead320956199884ff6af82d49d6163c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aead320956199884ff6af82d49d6163c1">&#9670;&nbsp;</a></span>guac_user_blob_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_blob_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, void *data, int length)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole stream blobs. </p>
<p>Each blob originates from a "blob" instruction which was associated with a previously-created stream.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that is sending this blob of data along the stream.</td></tr>
    <tr><td class="paramname">stream</td><td>The stream along which the blob was received. The semantics associated with this stream are determined by the manner of its creation.</td></tr>
    <tr><td class="paramname">data</td><td>The blob of data received.</td></tr>
    <tr><td class="paramname">length</td><td>The number of bytes within the blob of data received.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the blob of data was successfully handled, non-zero otherwise. </dd></dl>

</div>
</div>
<a id="a99c5146e0ab1df9ba2b2574fb26fbddf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99c5146e0ab1df9ba2b2574fb26fbddf">&#9670;&nbsp;</a></span>guac_user_callback</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void* guac_user_callback(<a class="el" href="structguac__user.html">guac_user</a> *user, void *data)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Callback which relates to a single <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> at a time, along with arbitrary data. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="client_8h.html#af652f3db0f89d488cef6d90f612a2077" title="Calls the given function on all currently-connected users of the given client. ">guac_client_foreach_user()</a> </dd>
<dd>
<a class="el" href="client_8h.html#af3f4ed85d98b16376e2cdc031ff1b44a" title="Calls the given function with the currently-connected user that is marked as the owner. ">guac_client_for_owner()</a></dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user for which this callback was invoked. Depending on whether <a class="el" href="client_8h.html#af652f3db0f89d488cef6d90f612a2077" title="Calls the given function on all currently-connected users of the given client. ">guac_client_foreach_user()</a> or <a class="el" href="client_8h.html#af3f4ed85d98b16376e2cdc031ff1b44a" title="Calls the given function with the currently-connected user that is marked as the owner. ">guac_client_for_owner()</a> was called, this will either be the current user as the "foreach" iteration continues, or the owner of the connection. If <a class="el" href="client_8h.html#af3f4ed85d98b16376e2cdc031ff1b44a" title="Calls the given function with the currently-connected user that is marked as the owner. ">guac_client_for_owner()</a> was called for a connection which has no owner, this may be NULL.</td></tr>
    <tr><td class="paramname">data</td><td>The arbitrary data passed to <a class="el" href="client_8h.html#af652f3db0f89d488cef6d90f612a2077" title="Calls the given function on all currently-connected users of the given client. ">guac_client_foreach_user()</a> or <a class="el" href="client_8h.html#af3f4ed85d98b16376e2cdc031ff1b44a" title="Calls the given function with the currently-connected user that is marked as the owner. ">guac_client_for_owner()</a>.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An arbitrary return value, the semantics of which are determined by the implementation of the callback and the manner of its user. In the case of a callback provided to <a class="el" href="client_8h.html#af652f3db0f89d488cef6d90f612a2077" title="Calls the given function on all currently-connected users of the given client. ">guac_client_foreach_user()</a>, this value is always discarded. </dd></dl>

</div>
</div>
<a id="a1658ce15f8c6fe958e873015e12aeed9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1658ce15f8c6fe958e873015e12aeed9">&#9670;&nbsp;</a></span>guac_user_clipboard_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_clipboard_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole clipboard streams received from a user. </p>
<p>Each such clipboard stream begins when the user sends a "clipboard" instruction. To handle received data along this stream, implementations of this handler must assign blob and end handlers to the given stream object.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that opened the clipboard stream.</td></tr>
    <tr><td class="paramname">stream</td><td>The stream object allocated by libguac to represent the clipboard stream opened by the user.</td></tr>
    <tr><td class="paramname">mimetype</td><td>The mimetype of the data that will be sent along the stream.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the opening of the clipboard stream has been handled successfully, or non-zero if an error occurs. </dd></dl>

</div>
</div>
<a id="afa8b0e25073cbe710265dc8a0ed150ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa8b0e25073cbe710265dc8a0ed150ca">&#9670;&nbsp;</a></span>guac_user_end_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_end_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole stream "end" instructions. </p>
<p>End instructions are sent by the user when a stream is closing because its end has been reached.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that sent the "end" instruction.</td></tr>
    <tr><td class="paramname">stream</td><td>The stream that is being closed.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the end-of-stream condition has been sucessfully handled, non-zero otherwise. </dd></dl>

</div>
</div>
<a id="a6c24aa9dee9ee4be3f3d21e1e24b9e3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c24aa9dee9ee4be3f3d21e1e24b9e3e">&#9670;&nbsp;</a></span>guac_user_file_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_file_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype, char *filename)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole file streams received from a user. </p>
<p>Each such file stream begins when the user sends a "file" instruction. To handle received data along this stream, implementations of this handler must assign blob and end handlers to the given stream object.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that opened the file stream.</td></tr>
    <tr><td class="paramname">stream</td><td>The stream object allocated by libguac to represent the file stream opened by the user.</td></tr>
    <tr><td class="paramname">mimetype</td><td>The mimetype of the data that will be sent along the stream.</td></tr>
    <tr><td class="paramname">filename</td><td>The name of the file being transferred.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the opening of the file stream has been handled successfully, or non-zero if an error occurs. </dd></dl>

</div>
</div>
<a id="ab8b7cadf31aeac0b2ac0ce4f46dafe81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8b7cadf31aeac0b2ac0ce4f46dafe81">&#9670;&nbsp;</a></span>guac_user_get_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_get_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__object.html">guac_object</a> *object, char *name)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole object get requests. </p>
<p>The semantics of the stream which will be created in response to the request are determined by the type of the object and the name of the stream requested. It is up to the implementation of this handler to then respond with a "body" instruction that begins the requested stream.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user requesting read access to the stream having the given name.</td></tr>
    <tr><td class="paramname">object</td><td>The object from which the given named stream is being requested.</td></tr>
    <tr><td class="paramname">name</td><td>The name of the stream being requested.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the get request was successfully handled, non-zero otherwise. </dd></dl>

</div>
</div>
<a id="a88717a7ab29ac1e4a853fcc2caa8f872"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88717a7ab29ac1e4a853fcc2caa8f872">&#9670;&nbsp;</a></span>guac_user_join_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_join_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, int argc, char **argv)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole join events. </p>
<p>A join event is fired by the <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a> whenever 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> joins the connection. There is no instruction associated with a join event.</p>
<p>Implementations of the join handler MUST NOT use the client-level broadcast socket, nor invoke <a class="el" href="client_8h.html#af652f3db0f89d488cef6d90f612a2077" title="Calls the given function on all currently-connected users of the given client. ">guac_client_foreach_user()</a> or <a class="el" href="client_8h.html#af3f4ed85d98b16376e2cdc031ff1b44a" title="Calls the given function with the currently-connected user that is marked as the owner. ">guac_client_for_owner()</a>. Doing so will result in undefined behavior, including segfaults.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user joining the connection. The <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a> associated with the connection will already be populated within the user object.</td></tr>
    <tr><td class="paramname">argc</td><td>The number of arguments stored within argv.</td></tr>
    <tr><td class="paramname">argv</td><td>An array of all arguments provided by the user when they joined. These arguments must correspond to the argument names declared when the <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a> was initialized. If the number of arguments does not match the number of argument names declared, then the joining user has violated the Guacamole protocol.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the user has been successfully initialized and should be allowed to join the connection, non-zero otherwise. </dd></dl>

</div>
</div>
<a id="a48d196c39615f6a1ff9b129267cb402e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a48d196c39615f6a1ff9b129267cb402e">&#9670;&nbsp;</a></span>guac_user_key_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_key_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, int keysym, int pressed)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole key events, invoked when a "key" event has been received from a user. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that sent the key event.</td></tr>
    <tr><td class="paramname">keysym</td><td>The X11 keysym of the key that was pressed or released.</td></tr>
    <tr><td class="paramname">pressed</td><td>Non-zero if the key represented by the given keysym is currently pressed, zero if it is released.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the key event was handled successfully, or non-zero if an error occurred. </dd></dl>

</div>
</div>
<a id="aaa5806d288a42d93a54864b6c35617b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa5806d288a42d93a54864b6c35617b8">&#9670;&nbsp;</a></span>guac_user_leave_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_leave_handler(<a class="el" href="structguac__user.html">guac_user</a> *user)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole leave events. </p>
<p>A leave event is fired by the <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a> whenever 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> leaves the connection. There is no instruction associated with a leave event.</p>
<p>Implementations of the leave handler MUST NOT use the client-level broadcast socket, nor invoke <a class="el" href="client_8h.html#af652f3db0f89d488cef6d90f612a2077" title="Calls the given function on all currently-connected users of the given client. ">guac_client_foreach_user()</a> or <a class="el" href="client_8h.html#af3f4ed85d98b16376e2cdc031ff1b44a" title="Calls the given function with the currently-connected user that is marked as the owner. ">guac_client_for_owner()</a>. Doing so will result in undefined behavior, including segfaults.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that has left the connection.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the leave event has been successfully handled, non-zero otherwise. </dd></dl>

</div>
</div>
<a id="a337a3fe8b983e3e25e25dbb836ea2694"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a337a3fe8b983e3e25e25dbb836ea2694">&#9670;&nbsp;</a></span>guac_user_mouse_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_mouse_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, int x, int y, int button_mask)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole mouse events, invoked when a "mouse" instruction has been received from a user. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that sent the mouse event.</td></tr>
    <tr><td class="paramname">x</td><td>The X coordinate of the mouse within the display when the event occurred, in pixels. This value is not guaranteed to be within the bounds of the display area.</td></tr>
    <tr><td class="paramname">y</td><td>The Y coordinate of the mouse within the display when the event occurred, in pixels. This value is not guaranteed to be within the bounds of the display area.</td></tr>
    <tr><td class="paramname">button_mask</td><td>An integer value representing the current state of each button, where the Nth bit within the integer is set to 1 if and only if the Nth mouse button is currently pressed. The lowest-order bit is the left mouse button, followed by the middle button, right button, and finally the up and down buttons of the scroll wheel.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="client-constants_8h.html#a4bb4f5b852ac8c3e2d3c89cd5e63efd2" title="The flag set in the mouse button mask when the left mouse button is down. ">GUAC_CLIENT_MOUSE_LEFT</a> </dd>
<dd>
<a class="el" href="client-constants_8h.html#ad14c5f1800aac863bbebcd676c5c2124" title="The flag set in the mouse button mask when the middle mouse button is down. ">GUAC_CLIENT_MOUSE_MIDDLE</a> </dd>
<dd>
<a class="el" href="client-constants_8h.html#a88917d2d7143a483c219eee62fd6317f" title="The flag set in the mouse button mask when the right mouse button is down. ">GUAC_CLIENT_MOUSE_RIGHT</a> </dd>
<dd>
<a class="el" href="client-constants_8h.html#a134afd8a0d8f10a34af51fc70981e39d" title="The flag set in the mouse button mask when the mouse scrollwheel is scrolled up. ">GUAC_CLIENT_MOUSE_SCROLL_UP</a> </dd>
<dd>
<a class="el" href="client-constants_8h.html#a771231574e9d303aa08fc1cecc9069f0" title="The flag set in the mouse button mask when the mouse scrollwheel is scrolled down. ">GUAC_CLIENT_MOUSE_SCROLL_DOWN</a></dd></dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the mouse event was handled successfully, or non-zero if an error occurred. </dd></dl>

</div>
</div>
<a id="ab7ae6833c33b39618a8b78603581ff79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7ae6833c33b39618a8b78603581ff79">&#9670;&nbsp;</a></span>guac_user_pipe_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_pipe_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype, char *name)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole pipe streams received from a user. </p>
<p>Pipe streams are unidirectional, arbitrary, named pipes. Each such pipe stream begins when the user sends a "pipe" instruction. To handle received data along this stream, implementations of this handler must assign blob and end handlers to the given stream object.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that opened the pipe stream.</td></tr>
    <tr><td class="paramname">stream</td><td>The stream object allocated by libguac to represent the pipe stream opened by the user.</td></tr>
    <tr><td class="paramname">mimetype</td><td>The mimetype of the data that will be sent along the stream.</td></tr>
    <tr><td class="paramname">name</td><td>The arbitrary name assigned to this pipe. It is up to the implementation of this handler and the application containing the Guacamole client to determine the semantics of a pipe stream having this name.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the opening of the pipe stream has been handled successfully, or non-zero if an error occurs. </dd></dl>

</div>
</div>
<a id="afd4c60871cc2dbbbdc82f58ae1c5baa0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd4c60871cc2dbbbdc82f58ae1c5baa0">&#9670;&nbsp;</a></span>guac_user_put_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_put_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="structguac__object.html">guac_object</a> *object, <a class="el" href="structguac__stream.html">guac_stream</a> *stream, char *mimetype, char *name)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole object put requests. </p>
<p>Put requests implicitly create a stream, the semantics of which are determined by the type of the object and the name of the stream requested.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user requesting write access to the stream having the given name.</td></tr>
    <tr><td class="paramname">object</td><td>The object from which the given named stream is being requested.</td></tr>
    <tr><td class="paramname">stream</td><td>The stream along which the blobs which should be written to the named stream will be received.</td></tr>
    <tr><td class="paramname">mimetype</td><td>The mimetype of the data that will be received along the given stream.</td></tr>
    <tr><td class="paramname">name</td><td>The name of the stream being requested.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the put request was successfully handled, non-zero otherwise. </dd></dl>

</div>
</div>
<a id="aca3c0d12202f7888146bb95986011b6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca3c0d12202f7888146bb95986011b6f">&#9670;&nbsp;</a></span>guac_user_size_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_size_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, int width, int height)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole size events, invoked when a "size" instruction has been received from a user. </p>
<p>A "size" instruction indicates that the desired display size has changed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user whose desired display size has changed.</td></tr>
    <tr><td class="paramname">width</td><td>The desired width of the display, in pixels.</td></tr>
    <tr><td class="paramname">height</td><td>The desired height of the display, in pixels.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the size event has been successfully handled, non-zero otherwise. </dd></dl>

</div>
</div>
<a id="ab60c51d865526c5c5d2c096e4fcb5539"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab60c51d865526c5c5d2c096e4fcb5539">&#9670;&nbsp;</a></span>guac_user_sync_handler</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int guac_user_sync_handler(<a class="el" href="structguac__user.html">guac_user</a> *user, <a class="el" href="timestamp-types_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a> timestamp)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for Guacamole sync events. </p>
<p>A sync event is fired by the <a class="el" href="structguac__client.html" title="Guacamole proxy client. ">guac_client</a> whenever 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> responds to a "sync" instruction. Sync instructions are sent by the Guacamole server to mark the logical end of a frame, and to inform the Guacamole client that all data up to a particular point in time has been sent. The response from the Guacamole client similarly indicates that all data received up to a particular point in server time has been handled.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">user</td><td>The user that sent the "sync" instruction.</td></tr>
    <tr><td class="paramname">timestamp</td><td>The timestamp contained within the sync instruction.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if the sync event has been handled successfully, non-zero otherwise. </dd></dl>

</div>
</div>
</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>
        <!-- Google Analytics -->
        <script type="text/javascript">
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          ga('create', 'UA-75289145-1', 'auto');
          ga('send', 'pageview');
        </script>
</body>
</html>
