blob: 68c6d4e1b290377210933338f79ff579db21dc29 [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.9.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/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">libguac
&#160;<span id="projectnumber">0.9.9</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.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="classes.html"><span>Data&#160;Structure&#160;Index</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)">
</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-types_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-types_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-types_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-fntypes_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-fntypes_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-fntypes_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-fntypes_8h.html#a248815ebd832e4e99bdb19e5d2854549">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-fntypes_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:abc56a0e12d564843eee4723f82f3d2fc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client-fntypes_8h.html#a8c208f624c38f6350939d1e8af56acf9">guac_client_file_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#abc56a0e12d564843eee4723f82f3d2fc">file_handler</a></td></tr>
<tr class="memdesc:abc56a0e12d564843eee4723f82f3d2fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for file events sent by the Guacamole web-client. <a href="#abc56a0e12d564843eee4723f82f3d2fc">More...</a><br /></td></tr>
<tr class="separator:abc56a0e12d564843eee4723f82f3d2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd62220caeae9c5da0291a30e29d5dfa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client-fntypes_8h.html#a7039aa3d43ee760ea7acc571c73a8b80">guac_client_pipe_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#acd62220caeae9c5da0291a30e29d5dfa">pipe_handler</a></td></tr>
<tr class="memdesc:acd62220caeae9c5da0291a30e29d5dfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for pipe events sent by the Guacamole web-client. <a href="#acd62220caeae9c5da0291a30e29d5dfa">More...</a><br /></td></tr>
<tr class="separator:acd62220caeae9c5da0291a30e29d5dfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada98af16d05a257165080441ad13309a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client-fntypes_8h.html#a00eba30f03a05be0758274f8793823ce">guac_client_ack_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#ada98af16d05a257165080441ad13309a">ack_handler</a></td></tr>
<tr class="memdesc:ada98af16d05a257165080441ad13309a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for ack events sent by the Guacamole web-client. <a href="#ada98af16d05a257165080441ad13309a">More...</a><br /></td></tr>
<tr class="separator:ada98af16d05a257165080441ad13309a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae394480f2509d5e2f3fa93a57db59ef6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client-fntypes_8h.html#a9eafe8b2d2edbe8de1bd4e62e4f2a5ae">guac_client_blob_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#ae394480f2509d5e2f3fa93a57db59ef6">blob_handler</a></td></tr>
<tr class="memdesc:ae394480f2509d5e2f3fa93a57db59ef6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for blob events sent by the Guacamole web-client. <a href="#ae394480f2509d5e2f3fa93a57db59ef6">More...</a><br /></td></tr>
<tr class="separator:ae394480f2509d5e2f3fa93a57db59ef6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae4631fe1d35e9ee2b494303921145dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client-fntypes_8h.html#a37ffa7ba8c54f00e322f661a868c7161">guac_client_end_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#aae4631fe1d35e9ee2b494303921145dc">end_handler</a></td></tr>
<tr class="memdesc:aae4631fe1d35e9ee2b494303921145dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for stream end events sent by the Guacamole web-client. <a href="#aae4631fe1d35e9ee2b494303921145dc">More...</a><br /></td></tr>
<tr class="separator:aae4631fe1d35e9ee2b494303921145dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79e29c931fd448cf51f7153fea064169"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client-fntypes_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:a3eb24ba13be9ecb3a8c6f64a73932f43"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client-fntypes_8h.html#a23837e22dbfe152719d596e6918bad3c">guac_client_log_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#a3eb24ba13be9ecb3a8c6f64a73932f43">log_handler</a></td></tr>
<tr class="memdesc:a3eb24ba13be9ecb3a8c6f64a73932f43"><td class="mdescLeft">&#160;</td><td class="mdescRight">Logging handler. <a href="#a3eb24ba13be9ecb3a8c6f64a73932f43">More...</a><br /></td></tr>
<tr class="separator:a3eb24ba13be9ecb3a8c6f64a73932f43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac43b788df7025b5a8f787c4b6c9e1ddf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client-fntypes_8h.html#ad7dfdbe2377ec45bc7e185410d09f189">guac_client_get_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#ac43b788df7025b5a8f787c4b6c9e1ddf">get_handler</a></td></tr>
<tr class="memdesc:ac43b788df7025b5a8f787c4b6c9e1ddf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for get events sent by the Guacamole web-client. <a href="#ac43b788df7025b5a8f787c4b6c9e1ddf">More...</a><br /></td></tr>
<tr class="separator:ac43b788df7025b5a8f787c4b6c9e1ddf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7d0c32b2f0760b4f803ba41f18f5a73"><td class="memItemLeft" align="right" valign="top"><a class="el" href="client-fntypes_8h.html#ac6d393643367ba401ac182c6eb667573">guac_client_put_handler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#ae7d0c32b2f0760b4f803ba41f18f5a73">put_handler</a></td></tr>
<tr class="memdesc:ae7d0c32b2f0760b4f803ba41f18f5a73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handler for put events sent by the Guacamole web-client. <a href="#ae7d0c32b2f0760b4f803ba41f18f5a73">More...</a><br /></td></tr>
<tr class="separator:ae7d0c32b2f0760b4f803ba41f18f5a73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad38b9ded1f04bfe8eb235e551fc08094"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structguac__client.html#ad38b9ded1f04bfe8eb235e551fc08094">connection_id</a></td></tr>
<tr class="memdesc:ad38b9ded1f04bfe8eb235e551fc08094"><td class="mdescLeft">&#160;</td><td class="mdescRight">The unique identifier allocated for the connection, which may be used within the Guacamole protocol to refer to this connection. <a href="#ad38b9ded1f04bfe8eb235e551fc08094">More...</a><br /></td></tr>
<tr class="separator:ad38b9ded1f04bfe8eb235e551fc08094"><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="ada98af16d05a257165080441ad13309a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="client-fntypes_8h.html#a00eba30f03a05be0758274f8793823ce">guac_client_ack_handler</a>* guac_client::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__client.html#ada98af16d05a257165080441ad13309a">ack_handler</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div>
<div class="line"> <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_client_init(<a class="code" href="structguac__client.html">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#ada98af16d05a257165080441ad13309a">ack_handler</a> = <a class="code" href="structguac__client.html#ada98af16d05a257165080441ad13309a">ack_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ae394480f2509d5e2f3fa93a57db59ef6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="client-fntypes_8h.html#a9eafe8b2d2edbe8de1bd4e62e4f2a5ae">guac_client_blob_handler</a>* guac_client::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__client.html#ae394480f2509d5e2f3fa93a57db59ef6">blob_handler</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div>
<div class="line"> <span class="keywordtype">void</span>* <a class="code" href="structguac__client.html#a0569bc7eea8d37b5bd95bcd3821ca0a3">data</a>, <span class="keywordtype">int</span> length);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> guac_client_init(<a class="code" href="structguac__client.html">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#ae394480f2509d5e2f3fa93a57db59ef6">blob_handler</a> = <a class="code" href="structguac__client.html#ae394480f2509d5e2f3fa93a57db59ef6">blob_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="addf8b9aeb379e6132797f2b7000fb0d1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="client-fntypes_8h.html#a248815ebd832e4e99bdb19e5d2854549">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>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__client.html#addf8b9aeb379e6132797f2b7000fb0d1">clipboard_handler</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div>
<div class="line"> <span class="keywordtype">char</span>* mimetype);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> guac_client_init(<a class="code" href="structguac__client.html">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">clipboard_handler</a> = <a class="code" href="structguac__client.html#addf8b9aeb379e6132797f2b7000fb0d1">clipboard_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ad38b9ded1f04bfe8eb235e551fc08094"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char* guac_client::connection_id</td>
</tr>
</table>
</div><div class="memdoc">
<p>The unique identifier allocated for the connection, which may be used within the Guacamole protocol to refer to this connection. </p>
<p>This identifier is guaranteed to be unique from all existing connections and will not collide with any available protocol names. </p>
</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="aae4631fe1d35e9ee2b494303921145dc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="client-fntypes_8h.html#a37ffa7ba8c54f00e322f661a868c7161">guac_client_end_handler</a>* guac_client::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__client.html#aae4631fe1d35e9ee2b494303921145dc">end_handler</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__stream.html">guac_stream</a>* stream);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> guac_client_init(<a class="code" href="structguac__client.html">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#aae4631fe1d35e9ee2b494303921145dc">end_handler</a> = <a class="code" href="structguac__client.html#aae4631fe1d35e9ee2b494303921145dc">end_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="abc56a0e12d564843eee4723f82f3d2fc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="client-fntypes_8h.html#a8c208f624c38f6350939d1e8af56acf9">guac_client_file_handler</a>* guac_client::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__client.html#abc56a0e12d564843eee4723f82f3d2fc">file_handler</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div>
<div class="line"> <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_client_init(<a class="code" href="structguac__client.html">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#abc56a0e12d564843eee4723f82f3d2fc">file_handler</a> = <a class="code" href="structguac__client.html#abc56a0e12d564843eee4723f82f3d2fc">file_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment -->
</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-fntypes_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">free_handler</a>(<a class="code" href="structguac__client.html">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">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">free_handler</a> = <a class="code" href="structguac__client.html#a79e29c931fd448cf51f7153fea064169">free_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ac43b788df7025b5a8f787c4b6c9e1ddf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="client-fntypes_8h.html#ad7dfdbe2377ec45bc7e185410d09f189">guac_client_get_handler</a>* guac_client::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__client.html#ac43b788df7025b5a8f787c4b6c9e1ddf">get_handler</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <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_client_init(<a class="code" href="structguac__client.html">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#ac43b788df7025b5a8f787c4b6c9e1ddf">get_handler</a> = <a class="code" href="structguac__client.html#ac43b788df7025b5a8f787c4b6c9e1ddf">get_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-fntypes_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">handle_messages</a>(<a class="code" href="structguac__client.html">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">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">handle_messages</a> = <a class="code" href="structguac__client.html#a75a6618618ff90b6ade14c750f7d3343">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-fntypes_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">key_handler</a>(<a class="code" href="structguac__client.html">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">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">key_handler</a> = <a class="code" href="structguac__client.html#ac0ed2c84d5aa62c435e8024310812259">key_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a3eb24ba13be9ecb3a8c6f64a73932f43"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="client-fntypes_8h.html#a23837e22dbfe152719d596e6918bad3c">guac_client_log_handler</a>* guac_client::log_handler</td>
</tr>
</table>
</div><div class="memdoc">
<p>Logging handler. </p>
<p>This handler will be called via <a class="el" href="client_8h.html#ad53666bbe29346497cabb04fc9628208" title="Writes a message in the log used by the given client. ">guac_client_log()</a> when the client needs to log messages of any type.</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> <a class="code" href="structguac__client.html#a3eb24ba13be9ecb3a8c6f64a73932f43">log_handler</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="client-types_8h.html#adfeeb4ff06541220c91ce3401d840727">guac_client_log_level</a> level, <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">guac_client</a>* client = [pass <a class="code" href="structguac__client.html#a3eb24ba13be9ecb3a8c6f64a73932f43">log_handler</a> 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-fntypes_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">mouse_handler</a>(<a class="code" href="structguac__client.html">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">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">mouse_handler</a> = <a class="code" href="structguac__client.html#a13f56570676f29a6f463e1542e156416">mouse_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="acd62220caeae9c5da0291a30e29d5dfa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="client-fntypes_8h.html#a7039aa3d43ee760ea7acc571c73a8b80">guac_client_pipe_handler</a>* guac_client::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__client.html#acd62220caeae9c5da0291a30e29d5dfa">pipe_handler</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <a class="code" href="structguac__stream.html">guac_stream</a>* stream,</div>
<div class="line"> <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_client_init(<a class="code" href="structguac__client.html">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#acd62220caeae9c5da0291a30e29d5dfa">pipe_handler</a> = <a class="code" href="structguac__client.html#acd62220caeae9c5da0291a30e29d5dfa">pipe_handler</a>;</div>
<div class="line">}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ae7d0c32b2f0760b4f803ba41f18f5a73"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="client-fntypes_8h.html#ac6d393643367ba401ac182c6eb667573">guac_client_put_handler</a>* guac_client::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__client.html#ae7d0c32b2f0760b4f803ba41f18f5a73">put_handler</a>(<a class="code" href="structguac__client.html">guac_client</a>* client, <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_client_init(<a class="code" href="structguac__client.html">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#ae7d0c32b2f0760b4f803ba41f18f5a73">put_handler</a> = <a class="code" href="structguac__client.html#ae7d0c32b2f0760b4f803ba41f18f5a73">put_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-fntypes_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">size_handler</a>(<a class="code" href="structguac__client.html">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">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">size_handler</a> = <a class="code" href="structguac__client.html#a9768d046d71ad0e81746fa0bffc08092">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-types_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>guacamole/<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 by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</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>
<!-- End Google Analytics -->
</body>
</html>