blob: 367ab25063759d7947088c30e5a95aef066e71bf [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: IgniteClient</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: IgniteClient</h1>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>IgniteClient<span class="signature">(onStateChanged<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h2>
<div class="class-description"><p>Class representing Ignite client.</p></div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="IgniteClient"><span class="type-signature"></span>new IgniteClient<span class="signature">(onStateChanged<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Public constructor.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>onStateChanged</code></td>
<td class="type">
<span class="param-type"><a href="IgniteClient.html#.onStateChanged">IgniteClient.onStateChanged</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="default">
null
</td>
<td class="description last"><p>callback called everytime when the client has moved to a new state <a href="IgniteClient.html#.STATE">IgniteClient.STATE</a>.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line60">line 60</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id=".STATE"><span class="type-signature">(static, readonly) </span>STATE<span class="type-signature"></span></h4>
<div class="description">
<p>State of Ignite client.</p>
</div>
<h5 class="subsection-title">Properties:</h5>
<table class="props">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>DISCONNECTED</code></td>
<td class="type">
</td>
<td class="description last"><p>The client is not connected to any Ignite node,
operations with the Ignite server are not allowed.
This is initial state after a client instance creation.
If connect() method is called, the client moves to CONNECTING state.</p></td>
</tr>
<tr>
<td class="name"><code>CONNECTING</code></td>
<td class="type">
</td>
<td class="description last"><p>The client tries to connect to an Ignite node,
operations with the Ignite server are not allowed.
If disconnect() method is called, the client moves to DISCONNECTED state.
If not possible to connect to any Ignite node, the client moves to DISCONNECTED state.
If connection to an Ignite node is successful, the client moves to CONNECTED state.</p></td>
</tr>
<tr>
<td class="name"><code>CONNECTED</code></td>
<td class="type">
</td>
<td class="description last"><p>The client is connected to an Ignite node,
all operations with the Ignite server are allowed.
If connection with the Ignite node is lost, the client moves to CONNECTING state.
If disconnect() method is called, the client moves to DISCONNECTED state.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line30">line 30</a>
</li></ul></dd>
</dl>
<h3 class="subsection-title">Methods</h3>
<h4 class="name" id="cacheNames"><span class="type-signature">(async) </span>cacheNames<span class="signature">()</span><span class="type-signature"> &rarr; {Promise.&lt;Array.&lt;string>>}</span></h4>
<div class="description">
<p>Gets existing cache names.</p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line249">line 249</a>
</li></ul></dd>
</dl>
<h5>Throws:</h5>
<ul>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if the client is not in CONNECTED <a href="IgniteClient.html#.STATE">IgniteClient.STATE</a>.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IllegalStateError.html">IllegalStateError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if other error.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IgniteClientError.html">IgniteClientError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
</ul>
<h5>Returns:</h5>
<div class="param-desc">
<ul>
<li>array with the existing cache names.
The array is empty if no caches exist.</li>
</ul>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Promise.&lt;Array.&lt;string>></span>
</dd>
</dl>
<h4 class="name" id="connect"><span class="type-signature">(async) </span>connect<span class="signature">(config)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Connects the client.</p>
<p>Should be called from DISCONNECTED state only.
Moves the client to CONNECTING state.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>config</code></td>
<td class="type">
<span class="param-type"><a href="IgniteClientConfiguration.html">IgniteClientConfiguration</a></span>
</td>
<td class="description last"><p>the client configuration.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line100">line 100</a>
</li></ul></dd>
</dl>
<h5>Throws:</h5>
<ul>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if the client is not in DISCONNECTED <a href="IgniteClient.html#.STATE">IgniteClient.STATE</a>.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IllegalStateError.html">IllegalStateError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if other error.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IgniteClientError.html">IgniteClientError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
</ul>
<h4 class="name" id="createCache"><span class="type-signature">(async) </span>createCache<span class="signature">(name, cacheConfig<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Promise.&lt;<a href="CacheClient.html">CacheClient</a>>}</span></h4>
<div class="description">
<p>Creates new cache with the provided name and optional configuration.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>cache name.</p></td>
</tr>
<tr>
<td class="name"><code>cacheConfig</code></td>
<td class="type">
<span class="param-type"><a href="CacheConfiguration.html">CacheConfiguration</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="default">
null
</td>
<td class="description last"><p>cache configuration.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line132">line 132</a>
</li></ul></dd>
</dl>
<h5>Throws:</h5>
<ul>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if the client is not in CONNECTED <a href="IgniteClient.html#.STATE">IgniteClient.STATE</a>.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IllegalStateError.html">IllegalStateError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if cache with the provided name already exists.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="OperationError.html">OperationError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if other error.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IgniteClientError.html">IgniteClientError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
</ul>
<h5>Returns:</h5>
<div class="param-desc">
<ul>
<li>new cache client instance for the created cache.</li>
</ul>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Promise.&lt;<a href="CacheClient.html">CacheClient</a>></span>
</dd>
</dl>
<h4 class="name" id="destroyCache"><span class="type-signature">(async) </span>destroyCache<span class="signature">(name)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Destroys cache with the provided name.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>cache name.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line200">line 200</a>
</li></ul></dd>
</dl>
<h5>Throws:</h5>
<ul>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if the client is not in CONNECTED <a href="IgniteClient.html#.STATE">IgniteClient.STATE</a>.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IllegalStateError.html">IllegalStateError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if cache with the provided name does not exist.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="OperationError.html">OperationError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if other error.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IgniteClientError.html">IgniteClientError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
</ul>
<h4 class="name" id="disconnect"><span class="type-signature"></span>disconnect<span class="signature">()</span><span class="type-signature"></span></h4>
<div class="description">
<p>Disconnects the client.</p>
<p>Moves the client to DISCONNECTED state from any other state.
Does nothing if the client already disconnected.</p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line112">line 112</a>
</li></ul></dd>
</dl>
<h4 class="name" id="getCache"><span class="type-signature"></span>getCache<span class="signature">(name)</span><span class="type-signature"> &rarr; {<a href="CacheClient.html">CacheClient</a>}</span></h4>
<div class="description">
<p>Gets cache client instance of cache with the provided name.
The method does not check if the cache with the provided name exists.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>cache name.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line184">line 184</a>
</li></ul></dd>
</dl>
<h5>Throws:</h5>
<dl>
<dt>
<div class="param-desc">
<p>if error.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IgniteClientError.html">IgniteClientError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<ul>
<li>new cache client instance.</li>
</ul>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="CacheClient.html">CacheClient</a></span>
</dd>
</dl>
<h4 class="name" id="getCacheConfiguration"><span class="type-signature">(async) </span>getCacheConfiguration<span class="signature">(name)</span><span class="type-signature"> &rarr; {Promise.&lt;<a href="CacheConfiguration.html">CacheConfiguration</a>>}</span></h4>
<div class="description">
<p>Returns configuration of cache with the provided name.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>cache name.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line222">line 222</a>
</li></ul></dd>
</dl>
<h5>Throws:</h5>
<ul>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if the client is not in CONNECTED <a href="IgniteClient.html#.STATE">IgniteClient.STATE</a>.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IllegalStateError.html">IllegalStateError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if cache with the provided name does not exist.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="OperationError.html">OperationError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if other error.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IgniteClientError.html">IgniteClientError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
</ul>
<h5>Returns:</h5>
<div class="param-desc">
<ul>
<li>cache configuration</li>
</ul>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Promise.&lt;<a href="CacheConfiguration.html">CacheConfiguration</a>></span>
</dd>
</dl>
<h4 class="name" id="getOrCreateCache"><span class="type-signature">(async) </span>getOrCreateCache<span class="signature">(name, cacheConfig<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Promise.&lt;<a href="CacheClient.html">CacheClient</a>>}</span></h4>
<div class="description">
<p>Gets existing cache with the provided name
or creates new one with the provided name and optional configuration.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>cache name.</p></td>
</tr>
<tr>
<td class="name"><code>cacheConfig</code></td>
<td class="type">
<span class="param-type"><a href="CacheConfiguration.html">CacheConfiguration</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="default">
null
</td>
<td class="description last"><p>cache configuration (ignored if cache
with the provided name already exists).</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line161">line 161</a>
</li></ul></dd>
</dl>
<h5>Throws:</h5>
<ul>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if the client is not in CONNECTED <a href="IgniteClient.html#.STATE">IgniteClient.STATE</a>.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IllegalStateError.html">IllegalStateError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
<li>
<dl>
<dt>
<div class="param-desc">
<p>if other error.</p>
</div>
</dt>
<dd></dd>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="IgniteClientError.html">IgniteClientError</a></span>
</dd>
</dl>
</dt>
<dd></dd>
</dl>
</li>
</ul>
<h5>Returns:</h5>
<div class="param-desc">
<ul>
<li>new cache client instance for the existing or created cache.</li>
</ul>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Promise.&lt;<a href="CacheClient.html">CacheClient</a>></span>
</dd>
</dl>
<h4 class="name" id="setDebug"><span class="type-signature"></span>setDebug<span class="signature">(value)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Enables/disables the library debug output (including errors logging).
Disabled by default.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>value</code></td>
<td class="type">
<span class="param-type">boolean</span>
</td>
<td class="description last"><p>true to enable, false to disable</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line266">line 266</a>
</li></ul></dd>
</dl>
<h3 class="subsection-title">Type Definitions</h3>
<h4 class="name" id=".onStateChanged"><span class="type-signature"></span>onStateChanged<span class="signature">(state, reason)</span><span class="type-signature"></span></h4>
<div class="description">
<p>onStateChanged callback.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>state</code></td>
<td class="type">
<span class="param-type"><a href="IgniteClient.html#.STATE">IgniteClient.STATE</a></span>
</td>
<td class="description last"><p>the new state of the client.</p></td>
</tr>
<tr>
<td class="name"><code>reason</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>the reason why the state has been changed.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="IgniteClient.js.html">IgniteClient.js</a>, <a href="IgniteClient.js.html#line80">line 80</a>
</li></ul></dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="BinaryObject.html">BinaryObject</a></li><li><a href="CacheClient.html">CacheClient</a></li><li><a href="CacheConfiguration.html">CacheConfiguration</a></li><li><a href="CacheEntry.html">CacheEntry</a></li><li><a href="CacheKeyConfiguration.html">CacheKeyConfiguration</a></li><li><a href="CollectionObjectType.html">CollectionObjectType</a></li><li><a href="ComplexObjectType.html">ComplexObjectType</a></li><li><a href="CompositeType.html">CompositeType</a></li><li><a href="Cursor.html">Cursor</a></li><li><a href="EnumItem.html">EnumItem</a></li><li><a href="IgniteClient.html">IgniteClient</a></li><li><a href="IgniteClientConfiguration.html">IgniteClientConfiguration</a></li><li><a href="IgniteClientError.html">IgniteClientError</a></li><li><a href="IllegalStateError.html">IllegalStateError</a></li><li><a href="LostConnectionError.html">LostConnectionError</a></li><li><a href="MapObjectType.html">MapObjectType</a></li><li><a href="ObjectArrayType.html">ObjectArrayType</a></li><li><a href="ObjectType.html">ObjectType</a></li><li><a href="OperationError.html">OperationError</a></li><li><a href="Query.html">Query</a></li><li><a href="QueryEntity.html">QueryEntity</a></li><li><a href="QueryField.html">QueryField</a></li><li><a href="QueryIndex.html">QueryIndex</a></li><li><a href="ScanQuery.html">ScanQuery</a></li><li><a href="SqlFieldsCursor.html">SqlFieldsCursor</a></li><li><a href="SqlFieldsQuery.html">SqlFieldsQuery</a></li><li><a href="SqlQuery.html">SqlQuery</a></li><li><a href="Timestamp.html">Timestamp</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Tue May 22 2018 12:08:49 GMT+0300 (Russia TZ 2 Standard Time)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>