blob: ddc16f050723dabe94514fb9eeda0bfd1c6b3fdd [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>
<link rel="canonical" href="https://ignite.apache.org/releases/1.8.0/dotnetdoc/interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<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>Apache Ignite.NET: Apache.Ignite.Core.Cluster.IClusterNode Interface 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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<script>
(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','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61232409-1', 'auto');
ga('send', 'pageview');
</script></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="projectlogo"><img alt="Logo" src="ignite_logo.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Apache Ignite.NET
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#properties">Properties</a> &#124;
<a href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Apache.Ignite.Core.Cluster.IClusterNode Interface Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Interface representing a single cluster node. Use <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#ad562deba121107f87bf3a3797aa0df7c" title="Gets node&#39;s attribute. Attributes are assigned to nodes at startup. ">GetAttribute&lt;T&gt;</a> or <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#ad4731d07aa9f5a33554281b0c8efdce6" title="Gets metrics snapshot for this node. Note that node metrics are constantly updated and provide up to ...">GetMetrics</a> to get static and dynamic information about remote nodes. You can get a list of all nodes in grid by calling <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_group.html#acf4f953056fa4ab4fec7a410fd366765" title="Gets read-only collections of nodes in this projection. ">IClusterGroup.GetNodes</a> on <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_i_ignite.html" title="Main entry point for all Ignite APIs. You can obtain an instance of IGrid through Ignition...">IIgnite</a> instance.
<a href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad562deba121107f87bf3a3797aa0df7c"><td class="memItemLeft" align="right" valign="top">T&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#ad562deba121107f87bf3a3797aa0df7c">GetAttribute&lt; T &gt;</a> (string name)</td></tr>
<tr class="memdesc:ad562deba121107f87bf3a3797aa0df7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets node's attribute. Attributes are assigned to nodes at startup. <a href="#ad562deba121107f87bf3a3797aa0df7c">More...</a><br /></td></tr>
<tr class="separator:ad562deba121107f87bf3a3797aa0df7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2076153e0bafe7fa18c1aaa2399ef96d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#a2076153e0bafe7fa18c1aaa2399ef96d">TryGetAttribute&lt; T &gt;</a> (string name, out T attr)</td></tr>
<tr class="memdesc:a2076153e0bafe7fa18c1aaa2399ef96d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Try getting node's attribute. Attributes are assigned to nodes at startup. <a href="#a2076153e0bafe7fa18c1aaa2399ef96d">More...</a><br /></td></tr>
<tr class="separator:a2076153e0bafe7fa18c1aaa2399ef96d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f33018dbeba33a3b6dd790c12630ced"><td class="memItemLeft" align="right" valign="top">IDictionary&lt; string, object &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#a2f33018dbeba33a3b6dd790c12630ced">GetAttributes</a> ()</td></tr>
<tr class="memdesc:a2f33018dbeba33a3b6dd790c12630ced"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets all node attributes. Attributes are assigned to nodes at startup. <a href="#a2f33018dbeba33a3b6dd790c12630ced">More...</a><br /></td></tr>
<tr class="separator:a2f33018dbeba33a3b6dd790c12630ced"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4731d07aa9f5a33554281b0c8efdce6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_metrics.html">IClusterMetrics</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#ad4731d07aa9f5a33554281b0c8efdce6">GetMetrics</a> ()</td></tr>
<tr class="memdesc:ad4731d07aa9f5a33554281b0c8efdce6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets metrics snapshot for this node. Note that node metrics are constantly updated and provide up to date information about nodes. For example, you can get an idea about CPU load on remote node via <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_metrics.html#a7a8003f47ce5578824e7ca83620dcc3e" title="Returns the CPU usage usage in [0, 1] range. ">IClusterMetrics.CurrentCpuLoad</a>. Node metrics are updated with some delay which is directly related to heartbeat frequency. For example, when used with default <code>GridTcpDiscoverySpi</code> the update will happen every <code>2</code> seconds. <a href="#ad4731d07aa9f5a33554281b0c8efdce6">More...</a><br /></td></tr>
<tr class="separator:ad4731d07aa9f5a33554281b0c8efdce6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="properties"></a>
Properties</h2></td></tr>
<tr class="memitem:a234dd26c9017310abfe145978edb2be5"><td class="memItemLeft" align="right" valign="top">Guid&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#a234dd26c9017310abfe145978edb2be5">Id</a><code> [get]</code></td></tr>
<tr class="memdesc:a234dd26c9017310abfe145978edb2be5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Globally unique node ID. A new ID is generated every time a node restarts. <a href="#a234dd26c9017310abfe145978edb2be5">More...</a><br /></td></tr>
<tr class="separator:a234dd26c9017310abfe145978edb2be5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a5a3e7a54d7d71c34d098ba8bf377ed"><td class="memItemLeft" align="right" valign="top">ICollection&lt; string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#a8a5a3e7a54d7d71c34d098ba8bf377ed">Addresses</a><code> [get]</code></td></tr>
<tr class="memdesc:a8a5a3e7a54d7d71c34d098ba8bf377ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Collection of addresses this node is known by. <a href="#a8a5a3e7a54d7d71c34d098ba8bf377ed">More...</a><br /></td></tr>
<tr class="separator:a8a5a3e7a54d7d71c34d098ba8bf377ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac04d92ac4a772c9f050f5a41b3e8d5c9"><td class="memItemLeft" align="right" valign="top">ICollection&lt; string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#ac04d92ac4a772c9f050f5a41b3e8d5c9">HostNames</a><code> [get]</code></td></tr>
<tr class="memdesc:ac04d92ac4a772c9f050f5a41b3e8d5c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Collection of host names this node is known by. <a href="#ac04d92ac4a772c9f050f5a41b3e8d5c9">More...</a><br /></td></tr>
<tr class="separator:ac04d92ac4a772c9f050f5a41b3e8d5c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d36f8bea9b4746d0ac5b423d9e71d9e"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#a7d36f8bea9b4746d0ac5b423d9e71d9e">Order</a><code> [get]</code></td></tr>
<tr class="memdesc:a7d36f8bea9b4746d0ac5b423d9e71d9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Node order within grid topology. Discovery SPIs that support node ordering will assign a proper order to each node and will guarantee that discovery event notifications for new nodes will come in proper order. All other SPIs not supporting ordering may choose to return node startup time here. <a href="#a7d36f8bea9b4746d0ac5b423d9e71d9e">More...</a><br /></td></tr>
<tr class="separator:a7d36f8bea9b4746d0ac5b423d9e71d9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b00bb568c6c80fa69d102db1f5ea4f6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#a8b00bb568c6c80fa69d102db1f5ea4f6">IsLocal</a><code> [get]</code></td></tr>
<tr class="memdesc:a8b00bb568c6c80fa69d102db1f5ea4f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether or not this node is a local node. <a href="#a8b00bb568c6c80fa69d102db1f5ea4f6">More...</a><br /></td></tr>
<tr class="separator:a8b00bb568c6c80fa69d102db1f5ea4f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9c5b7a572734191046e54d2ac439860"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#ab9c5b7a572734191046e54d2ac439860">IsDaemon</a><code> [get]</code></td></tr>
<tr class="memdesc:ab9c5b7a572734191046e54d2ac439860"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether or not this node is a daemon. Daemon nodes are the usual Ignite nodes that participate in topology but not visible on the main APIs, i.e. they are not part of any projections. Daemon nodes are used primarily for management and monitoring functionality that is build on Ignite and needs to participate in the topology but should be excluded from "normal" topology so that it won't participate in task execution or in-memory database. Application code should never use daemon nodes. <a href="#ab9c5b7a572734191046e54d2ac439860">More...</a><br /></td></tr>
<tr class="separator:ab9c5b7a572734191046e54d2ac439860"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6dda7314fa9ee94f75749ac46ed2126"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html#aa6dda7314fa9ee94f75749ac46ed2126">IsClient</a><code> [get]</code></td></tr>
<tr class="memdesc:aa6dda7314fa9ee94f75749ac46ed2126"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a value indicating whether or not this node is connected to cluster as a client. <a href="#aa6dda7314fa9ee94f75749ac46ed2126">More...</a><br /></td></tr>
<tr class="separator:aa6dda7314fa9ee94f75749ac46ed2126"><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>You can use Ignite node attributes to provide static information about a node. This information is initialized once within grid, during node startup, and remains the same throughout the lifetime of a node. </p>
<p>All members are thread-safe and may be used concurrently from multiple threads. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ad562deba121107f87bf3a3797aa0df7c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">T Apache.Ignite.Core.Cluster.IClusterNode.GetAttribute&lt; T &gt; </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Note that attributes cannot be changed at runtime. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Attribute name.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Attribute value.</dd></dl>
</div>
</div>
<a class="anchor" id="a2f33018dbeba33a3b6dd790c12630ced"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">IDictionary&lt;string, object&gt; Apache.Ignite.Core.Cluster.IClusterNode.GetAttributes </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Note that attributes cannot be changed at runtime. </p>
<dl class="section return"><dt>Returns</dt><dd>All node attributes.</dd></dl>
</div>
</div>
<a class="anchor" id="ad4731d07aa9f5a33554281b0c8efdce6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_metrics.html">IClusterMetrics</a> Apache.Ignite.Core.Cluster.IClusterNode.GetMetrics </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Runtime metrics snapshot for this node.</dd></dl>
</div>
</div>
<a class="anchor" id="a2076153e0bafe7fa18c1aaa2399ef96d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Apache.Ignite.Core.Cluster.IClusterNode.TryGetAttribute&lt; T &gt; </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">out T&#160;</td>
<td class="paramname"><em>attr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Note that attributes cannot be changed at runtime. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Attribute name.</td></tr>
<tr><td class="paramname">attr</td><td>Attribute value.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> in case such attribute exists.</dd></dl>
</div>
</div>
<h2 class="groupheader">Property Documentation</h2>
<a class="anchor" id="a8a5a3e7a54d7d71c34d098ba8bf377ed"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ICollection&lt;string&gt; Apache.Ignite.Core.Cluster.IClusterNode.Addresses</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Collection of addresses.</dd></dl>
</div>
</div>
<a class="anchor" id="ac04d92ac4a772c9f050f5a41b3e8d5c9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ICollection&lt;string&gt; Apache.Ignite.Core.Cluster.IClusterNode.HostNames</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Collection of host names.</dd></dl>
</div>
</div>
<a class="anchor" id="a234dd26c9017310abfe145978edb2be5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Guid Apache.Ignite.Core.Cluster.IClusterNode.Id</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aa6dda7314fa9ee94f75749ac46ed2126"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool Apache.Ignite.Core.Cluster.IClusterNode.IsClient</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not confuse client in terms of discovery and client in terms of cache. Cache clients cannot carry data, while topology clients connect to the topology in a different way. </p>
<p><code>true</code> if this node is a client node, <code>false otherwise.</code>. </p>
</div>
</div>
<a class="anchor" id="ab9c5b7a572734191046e54d2ac439860"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool Apache.Ignite.Core.Cluster.IClusterNode.IsDaemon</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8b00bb568c6c80fa69d102db1f5ea4f6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool Apache.Ignite.Core.Cluster.IClusterNode.IsLocal</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7d36f8bea9b4746d0ac5b423d9e71d9e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">long Apache.Ignite.Core.Cluster.IClusterNode.Order</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespace_apache.html">Apache</a></li><li class="navelem"><a class="el" href="namespace_apache_1_1_ignite.html">Ignite</a></li><li class="navelem"><a class="el" href="namespace_apache_1_1_ignite_1_1_core.html">Core</a></li><li class="navelem"><a class="el" href="namespace_apache_1_1_ignite_1_1_core_1_1_cluster.html">Cluster</a></li><li class="navelem"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node.html">IClusterNode</a></li>
<li class="footer">Generated on Mon Dec 5 2016 14:37:39 for Apache Ignite.NET by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
</ul>
</div>
</body>
</html>