Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > b9df5f75aa4bdf00e21ea70411e9c71a > files > 185

libguac-devel-0.7.0-5.fc18.i686.rpm

<!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.3.1"/>
<title>libguac: guac_client 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/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
   <div id="projectname">libguac
   &#160;<span id="projectnumber">0.7.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a></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_client Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Guacamole proxy client.  
 <a href="structguac__client.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:aa634856fd3c522377ba7345f3308000e"><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__client.html#aa634856fd3c522377ba7345f3308000e">socket</a></td></tr>
<tr class="memdesc:aa634856fd3c522377ba7345f3308000e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <a class="el" href="structguac__socket.html" title="The core I/O object of Guacamole.">guac_socket</a> structure to be used to communicate with the web-client.  <a href="#aa634856fd3c522377ba7345f3308000e">More...</a><br/></td></tr>
<tr class="separator:aa634856fd3c522377ba7345f3308000e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb3e3f5d0ce5726cdde768f97b473f53"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client_8h.html#a6f7e91d6dcb20598953948f077910c3b">guac_client_state</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#acb3e3f5d0ce5726cdde768f97b473f53">state</a></td></tr>
<tr class="memdesc:acb3e3f5d0ce5726cdde768f97b473f53"><td class="mdescLeft">&#160;</td><td class="mdescRight">The current state of the client.  <a href="#acb3e3f5d0ce5726cdde768f97b473f53">More...</a><br/></td></tr>
<tr class="separator:acb3e3f5d0ce5726cdde768f97b473f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c8e4b4a92bdeaace0fa2dd32f956ab2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c8e4b4a92bdeaace0fa2dd32f956ab2"></a>
<a class="el" href="timestamp_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a3c8e4b4a92bdeaace0fa2dd32f956ab2">last_received_timestamp</a></td></tr>
<tr class="memdesc:a3c8e4b4a92bdeaace0fa2dd32f956ab2"><td class="mdescLeft">&#160;</td><td class="mdescRight">The time (in milliseconds) of receipt of the last sync message from the client. <br/></td></tr>
<tr class="separator:a3c8e4b4a92bdeaace0fa2dd32f956ab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f3069566c7a5ca76ce4369715589dad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f3069566c7a5ca76ce4369715589dad"></a>
<a class="el" href="timestamp_8h.html#a69e916d1ff324fbe0e527f32359c9cea">guac_timestamp</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a0f3069566c7a5ca76ce4369715589dad">last_sent_timestamp</a></td></tr>
<tr class="memdesc:a0f3069566c7a5ca76ce4369715589dad"><td class="mdescLeft">&#160;</td><td class="mdescRight">The time (in milliseconds) that the last sync message was sent to the client. <br/></td></tr>
<tr class="separator:a0f3069566c7a5ca76ce4369715589dad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab67a82a9f940360dac0ec0ca96d446cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab67a82a9f940360dac0ec0ca96d446cf"></a>
<a class="el" href="structguac__client__info.html">guac_client_info</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#ab67a82a9f940360dac0ec0ca96d446cf">info</a></td></tr>
<tr class="memdesc:ab67a82a9f940360dac0ec0ca96d446cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Information structure containing properties exposed by the remote client during the initial handshake process. <br/></td></tr>
<tr class="separator:ab67a82a9f940360dac0ec0ca96d446cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0569bc7eea8d37b5bd95bcd3821ca0a3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a0569bc7eea8d37b5bd95bcd3821ca0a3">data</a></td></tr>
<tr class="memdesc:a0569bc7eea8d37b5bd95bcd3821ca0a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Arbitrary reference to proxy client-specific data.  <a href="#a0569bc7eea8d37b5bd95bcd3821ca0a3">More...</a><br/></td></tr>
<tr class="separator:a0569bc7eea8d37b5bd95bcd3821ca0a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75a6618618ff90b6ade14c750f7d3343"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client_8h.html#abf18878fb969a93415805ea80b503d6d">guac_client_handle_messages</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a75a6618618ff90b6ade14c750f7d3343">handle_messages</a></td></tr>
<tr class="memdesc:a75a6618618ff90b6ade14c750f7d3343"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for server messages.  <a href="#a75a6618618ff90b6ade14c750f7d3343">More...</a><br/></td></tr>
<tr class="separator:a75a6618618ff90b6ade14c750f7d3343"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13f56570676f29a6f463e1542e156416"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client_8h.html#a1724a9f56ab5d8f8d562b14a4602dcf3">guac_client_mouse_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a13f56570676f29a6f463e1542e156416">mouse_handler</a></td></tr>
<tr class="memdesc:a13f56570676f29a6f463e1542e156416"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for mouse events sent by the Gaucamole web-client.  <a href="#a13f56570676f29a6f463e1542e156416">More...</a><br/></td></tr>
<tr class="separator:a13f56570676f29a6f463e1542e156416"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0ed2c84d5aa62c435e8024310812259"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client_8h.html#a5bab062cc67cf64b963f65fe6e910c15">guac_client_key_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#ac0ed2c84d5aa62c435e8024310812259">key_handler</a></td></tr>
<tr class="memdesc:ac0ed2c84d5aa62c435e8024310812259"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for key events sent by the Guacamole web-client.  <a href="#ac0ed2c84d5aa62c435e8024310812259">More...</a><br/></td></tr>
<tr class="separator:ac0ed2c84d5aa62c435e8024310812259"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addf8b9aeb379e6132797f2b7000fb0d1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client_8h.html#a575ee65a0ae00edcacac3c86fc3af7bd">guac_client_clipboard_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#addf8b9aeb379e6132797f2b7000fb0d1">clipboard_handler</a></td></tr>
<tr class="memdesc:addf8b9aeb379e6132797f2b7000fb0d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for clipboard events sent by the Guacamole web-client.  <a href="#addf8b9aeb379e6132797f2b7000fb0d1">More...</a><br/></td></tr>
<tr class="separator:addf8b9aeb379e6132797f2b7000fb0d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9768d046d71ad0e81746fa0bffc08092"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client_8h.html#acd660ba1aa9f6fae07d3d36abb23bca8">guac_client_size_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a9768d046d71ad0e81746fa0bffc08092">size_handler</a></td></tr>
<tr class="memdesc:a9768d046d71ad0e81746fa0bffc08092"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for size events sent by the Guacamole web-client.  <a href="#a9768d046d71ad0e81746fa0bffc08092">More...</a><br/></td></tr>
<tr class="separator:a9768d046d71ad0e81746fa0bffc08092"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79e29c931fd448cf51f7153fea064169"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client_8h.html#a7f8c6986f3db9818d016eee6fa562577">guac_client_free_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a79e29c931fd448cf51f7153fea064169">free_handler</a></td></tr>
<tr class="memdesc:a79e29c931fd448cf51f7153fea064169"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for freeing data when the client is being unloaded.  <a href="#a79e29c931fd448cf51f7153fea064169">More...</a><br/></td></tr>
<tr class="separator:a79e29c931fd448cf51f7153fea064169"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a055d63be9770e614c7abb2dfc5a8fb0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client_8h.html#a74756e90266493c7cd3ae009c8c1c717">guac_client_log_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a055d63be9770e614c7abb2dfc5a8fb0c">log_info_handler</a></td></tr>
<tr class="memdesc:a055d63be9770e614c7abb2dfc5a8fb0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for logging informational messages.  <a href="#a055d63be9770e614c7abb2dfc5a8fb0c">More...</a><br/></td></tr>
<tr class="separator:a055d63be9770e614c7abb2dfc5a8fb0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59c74b12d77ead505b4e94ba169b2fdf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client_8h.html#a74756e90266493c7cd3ae009c8c1c717">guac_client_log_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a59c74b12d77ead505b4e94ba169b2fdf">log_error_handler</a></td></tr>
<tr class="memdesc:a59c74b12d77ead505b4e94ba169b2fdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for logging error messages.  <a href="#a59c74b12d77ead505b4e94ba169b2fdf">More...</a><br/></td></tr>
<tr class="separator:a59c74b12d77ead505b4e94ba169b2fdf"><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>Guacamole proxy client. </p>
<p>Represents a Guacamole proxy client (the client which communicates to a server on behalf of Guacamole, on behalf of the web-client). </p>
</div><h2 class="groupheader">Field Documentation</h2>
<a class="anchor" id="addf8b9aeb379e6132797f2b7000fb0d1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="client_8h.html#a575ee65a0ae00edcacac3c86fc3af7bd">guac_client_clipboard_handler</a>* guac_client::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>This handler takes a single string which contains the text which has been set in the clipboard. This text is already unescaped from the Guacamole escaped version sent within the clipboard message in the protocol.</p>
<p>Example: </p>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__client.html#addf8b9aeb379e6132797f2b7000fb0d1" title="Handler for clipboard events sent by the Guacamole web-client.">clipboard_handler</a>(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <span class="keywordtype">char</span>* copied);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> guac_client_init(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {</div>
<div class="line">    client-&gt;<a class="code" href="structguac__client.html#addf8b9aeb379e6132797f2b7000fb0d1" title="Handler for clipboard events sent by the Guacamole web-client.">clipboard_handler</a> = <a class="code" href="structguac__client.html#addf8b9aeb379e6132797f2b7000fb0d1" title="Handler for clipboard events sent by the Guacamole web-client.">clipboard_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment --> 
</div>
</div>
<a class="anchor" id="a0569bc7eea8d37b5bd95bcd3821ca0a3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* guac_client::data</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Arbitrary reference to proxy client-specific data. </p>
<p>Implementors of a Guacamole proxy client can store any data they want here, which can then be retrieved as necessary in the message handlers. </p>

</div>
</div>
<a class="anchor" id="a79e29c931fd448cf51f7153fea064169"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="client_8h.html#a7f8c6986f3db9818d016eee6fa562577">guac_client_free_handler</a>* guac_client::free_handler</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for freeing data when the client is being unloaded. </p>
<p>This handler will be called when the client needs to be unloaded by the proxy, and any data allocated by the proxy client should be freed.</p>
<p>Note that this handler will NOT be called if the client's guac_client_init() function fails.</p>
<p>Implement this handler if you store data inside the client.</p>
<p>Example: </p>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__client.html#a79e29c931fd448cf51f7153fea064169" title="Handler for freeing data when the client is being unloaded.">free_handler</a>(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> guac_client_init(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {</div>
<div class="line">    client-&gt;<a class="code" href="structguac__client.html#a79e29c931fd448cf51f7153fea064169" title="Handler for freeing data when the client is being unloaded.">free_handler</a> = <a class="code" href="structguac__client.html#a79e29c931fd448cf51f7153fea064169" title="Handler for freeing data when the client is being unloaded.">free_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment --> 
</div>
</div>
<a class="anchor" id="a75a6618618ff90b6ade14c750f7d3343"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="client_8h.html#abf18878fb969a93415805ea80b503d6d">guac_client_handle_messages</a>* guac_client::handle_messages</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for server messages. </p>
<p>If set, this function will be called occasionally by the Guacamole proxy to give the client a chance to handle messages from whichever server it is connected to.</p>
<p>Example: </p>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> <a class="code" href="structguac__client.html#a75a6618618ff90b6ade14c750f7d3343" title="Handler for server messages.">handle_messages</a>(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> guac_client_init(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {</div>
<div class="line">    client-&gt;<a class="code" href="structguac__client.html#a75a6618618ff90b6ade14c750f7d3343" title="Handler for server messages.">handle_messages</a> = <a class="code" href="structguac__client.html#a75a6618618ff90b6ade14c750f7d3343" title="Handler for server messages.">handle_messages</a>;</div>
<div class="line">}</div>
</div><!-- fragment --> 
</div>
</div>
<a class="anchor" id="ac0ed2c84d5aa62c435e8024310812259"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="client_8h.html#a5bab062cc67cf64b963f65fe6e910c15">guac_client_key_handler</a>* guac_client::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__client.html#ac0ed2c84d5aa62c435e8024310812259" title="Handler for key events sent by the Guacamole web-client.">key_handler</a>(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <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_client_init(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {</div>
<div class="line">    client-&gt;<a class="code" href="structguac__client.html#ac0ed2c84d5aa62c435e8024310812259" title="Handler for key events sent by the Guacamole web-client.">key_handler</a> = <a class="code" href="structguac__client.html#ac0ed2c84d5aa62c435e8024310812259" title="Handler for key events sent by the Guacamole web-client.">key_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment --> 
</div>
</div>
<a class="anchor" id="a59c74b12d77ead505b4e94ba169b2fdf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="client_8h.html#a74756e90266493c7cd3ae009c8c1c717">guac_client_log_handler</a>* guac_client::log_error_handler</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for logging error messages. </p>
<p>This handler will be called via <a class="el" href="client_8h.html#a23df81a823e4be52c9aa3c9ca1975ed6" title="Logs an error message in the log used by the given client.">guac_client_log_error()</a> when the client needs to log an error.</p>
<p>In general, only programs loading the client should implement this handler, as those are the programs that would provide the logging facilities.</p>
<p>Client implementations should expect these handlers to already be set.</p>
<p>Example: </p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> log_handler(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, va_list args);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> function_of_daemon() {</div>
<div class="line"></div>
<div class="line">    <a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client = [pass log_handler to guac_client_plugin_get_client()];</div>
<div class="line"></div>
<div class="line">}</div>
</div><!-- fragment --> 
</div>
</div>
<a class="anchor" id="a055d63be9770e614c7abb2dfc5a8fb0c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="client_8h.html#a74756e90266493c7cd3ae009c8c1c717">guac_client_log_handler</a>* guac_client::log_info_handler</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handler for logging informational messages. </p>
<p>This handler will be called via <a class="el" href="client_8h.html#a1e461c0f2d8d13a89310cd1a37ab41df" title="Logs an informational message in the log used by the given client.">guac_client_log_info()</a> when the client needs to log information.</p>
<p>In general, only programs loading the client should implement this handler, as those are the programs that would provide the logging facilities.</p>
<p>Client implementations should expect these handlers to already be set.</p>
<p>Example: </p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> log_handler(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, va_list args);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> function_of_daemon() {</div>
<div class="line"></div>
<div class="line">    <a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client = [pass log_handler to guac_client_plugin_get_client()];</div>
<div class="line"></div>
<div class="line">}</div>
</div><!-- fragment --> 
</div>
</div>
<a class="anchor" id="a13f56570676f29a6f463e1542e156416"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="client_8h.html#a1724a9f56ab5d8f8d562b14a4602dcf3">guac_client_mouse_handler</a>* guac_client::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__client.html#a13f56570676f29a6f463e1542e156416" title="Handler for mouse events sent by the Gaucamole web-client.">mouse_handler</a>(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <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_client_init(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {</div>
<div class="line">    client-&gt;<a class="code" href="structguac__client.html#a13f56570676f29a6f463e1542e156416" title="Handler for mouse events sent by the Gaucamole web-client.">mouse_handler</a> = <a class="code" href="structguac__client.html#a13f56570676f29a6f463e1542e156416" title="Handler for mouse events sent by the Gaucamole web-client.">mouse_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment --> 
</div>
</div>
<a class="anchor" id="a9768d046d71ad0e81746fa0bffc08092"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="client_8h.html#acd660ba1aa9f6fae07d3d36abb23bca8">guac_client_size_handler</a>* guac_client::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__client.html#a9768d046d71ad0e81746fa0bffc08092" title="Handler for size events sent by the Guacamole web-client.">size_handler</a>(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <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_client_init(<a class="code" href="structguac__client.html" title="Guacamole proxy client.">guac_client</a>* client, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {</div>
<div class="line">    client-&gt;<a class="code" href="structguac__client.html#a9768d046d71ad0e81746fa0bffc08092" title="Handler for size events sent by the Guacamole web-client.">size_handler</a> = <a class="code" href="structguac__client.html#a9768d046d71ad0e81746fa0bffc08092" title="Handler for size events sent by the Guacamole web-client.">size_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment --> 
</div>
</div>
<a class="anchor" id="aa634856fd3c522377ba7345f3308000e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structguac__socket.html">guac_socket</a>* guac_client::socket</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The <a class="el" href="structguac__socket.html" title="The core I/O object of Guacamole.">guac_socket</a> structure to be used to communicate with the web-client. </p>
<p>It is expected that the implementor of any Guacamole proxy client will provide their own mechanism of I/O for their protocol. The <a class="el" href="structguac__socket.html" title="The core I/O object of Guacamole.">guac_socket</a> structure is used only to communicate conveniently with the Guacamole web-client. </p>

</div>
</div>
<a class="anchor" id="acb3e3f5d0ce5726cdde768f97b473f53"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="client_8h.html#a6f7e91d6dcb20598953948f077910c3b">guac_client_state</a> guac_client::state</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The current state of the client. </p>
<p>When the client is first allocated, this will be initialized to GUAC_CLIENT_RUNNING. It will remain at GUAC_CLIENT_RUNNING until an event occurs which requires the client to shutdown, at which point the state becomes GUAC_CLIENT_STOPPING. </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="client_8h_source.html">client.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jun 19 2013 12:42:08 for libguac by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body>
</html>