Commit 252a8a9c authored by SHIVAM DIXIT's avatar SHIVAM DIXIT

Added documentation

parent c3c9ce17
File added
......@@ -19,6 +19,9 @@ Getting the code :
cd into directory where you want to store the code.
run : git clone https://shivamdixit@git.cse.iitb.ac.in/shivamdixit/CS699_FSync.git
Dependencies :
You need to ensure the installation of Java (jdk1.7 or above). For this you can just visit the website: https://www.java.com/en/download/manual.jsp for details of different versions of Java and their installation procedures.
Building and running server :
Go to 'source/Server' directory.
run : chmod 777 build.sh
......
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classBlockSig.html" target="_self">BlockSig</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classClient.html" target="_self">Client</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classConnection.html" target="_self">Connection</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDatabase.html" target="_self">Database</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classFileOps.html" target="_self">FileOps</a></td><td class="desc"></td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classListeningSocket.html" target="_self">ListeningSocket</a></td><td class="desc"></td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classLoginFrame.html" target="_self">LoginFrame</a></td><td class="desc"></td></tr>
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classMainFrame.html" target="_self">MainFrame</a></td><td class="desc"></td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classMainThread.html" target="_self">MainThread</a></td><td class="desc"></td></tr>
<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classMsg.html" target="_self">Msg</a></td><td class="desc"></td></tr>
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classRollingHash.html" target="_self">RollingHash</a></td><td class="desc"></td></tr>
<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classServer.html" target="_self">Server</a></td><td class="desc"></td></tr>
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSetIntervalFrame.html" target="_self">SetIntervalFrame</a></td><td class="desc"></td></tr>
<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSignupFrame.html" target="_self">SignupFrame</a></td><td class="desc"></td></tr>
<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSync.html" target="_self">Sync</a></td><td class="desc"></td></tr>
<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSyncThread.html" target="_self">SyncThread</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">BlockSig Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classBlockSig.html">BlockSig</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BlockSig</b>(int id, int hash, byte md5[]) (defined in <a class="el" href="classBlockSig.html">BlockSig</a>)</td><td class="entry"><a class="el" href="classBlockSig.html">BlockSig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>BlockSig</b>(int id, int hash, byte md5[]) (defined in <a class="el" href="classBlockSig.html">BlockSig</a>)</td><td class="entry"><a class="el" href="classBlockSig.html">BlockSig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>equals</b>(Object obj) (defined in <a class="el" href="classBlockSig.html">BlockSig</a>)</td><td class="entry"><a class="el" href="classBlockSig.html">BlockSig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>equals</b>(Object obj) (defined in <a class="el" href="classBlockSig.html">BlockSig</a>)</td><td class="entry"><a class="el" href="classBlockSig.html">BlockSig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hashCode</b>() (defined in <a class="el" href="classBlockSig.html">BlockSig</a>)</td><td class="entry"><a class="el" href="classBlockSig.html">BlockSig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>hashCode</b>() (defined in <a class="el" href="classBlockSig.html">BlockSig</a>)</td><td class="entry"><a class="el" href="classBlockSig.html">BlockSig</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: BlockSig Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classBlockSig-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">BlockSig Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<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:a83d07b349bb9fcf6a73ed07a33c53b36"><td class="memItemLeft" align="right" valign="top"><a id="a83d07b349bb9fcf6a73ed07a33c53b36"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>BlockSig</b> (int id, int hash, byte md5[])</td></tr>
<tr class="separator:a83d07b349bb9fcf6a73ed07a33c53b36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a810347f5447586f17f6fcd88b943ef38"><td class="memItemLeft" align="right" valign="top"><a id="a810347f5447586f17f6fcd88b943ef38"></a>
boolean&#160;</td><td class="memItemRight" valign="bottom"><b>equals</b> (Object obj)</td></tr>
<tr class="separator:a810347f5447586f17f6fcd88b943ef38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80b7468305ab0f6b80c519ab5d665345"><td class="memItemLeft" align="right" valign="top"><a id="a80b7468305ab0f6b80c519ab5d665345"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>hashCode</b> ()</td></tr>
<tr class="separator:a80b7468305ab0f6b80c519ab5d665345"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83d07b349bb9fcf6a73ed07a33c53b36"><td class="memItemLeft" align="right" valign="top"><a id="a83d07b349bb9fcf6a73ed07a33c53b36"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>BlockSig</b> (int id, int hash, byte md5[])</td></tr>
<tr class="separator:a83d07b349bb9fcf6a73ed07a33c53b36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a810347f5447586f17f6fcd88b943ef38"><td class="memItemLeft" align="right" valign="top"><a id="a810347f5447586f17f6fcd88b943ef38"></a>
boolean&#160;</td><td class="memItemRight" valign="bottom"><b>equals</b> (Object obj)</td></tr>
<tr class="separator:a810347f5447586f17f6fcd88b943ef38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80b7468305ab0f6b80c519ab5d665345"><td class="memItemLeft" align="right" valign="top"><a id="a80b7468305ab0f6b80c519ab5d665345"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>hashCode</b> ()</td></tr>
<tr class="separator:a80b7468305ab0f6b80c519ab5d665345"><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>Contains block id, weak hash and strong hash of the block. </p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/BlockSig.java</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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Client Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classClient.html">Client</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classClient.html#ad5f5700afdbd0ce56e5023dee309b4ab">handleIncomingMsg</a>(Msg msg)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classClient.html#a400a22946d872d802bd6e9591477982a">handleLoginReply</a>(Msg msg)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classClient.html#a68f7a00015444e2ab2b42ec9bf8bef84">handleSignupReply</a>(Msg msg)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classClient.html#a94262af4acc81129f8eac71abac189f1">handleSyncDownReqDenied</a>(Msg msg)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classClient.html#a125c5d10357458dcd17b053e8b421b1f">handleSyncUpReqDenied</a>(Msg msg)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classClient.html#a9f7f543fd16e253e80ab4f3a814cfc25">initiateSyncdown</a>()</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classClient.html#a19f23cc8387bc794a950fe11971c5c48">initiateSyncup</a>()</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>main</b>(String[] args) (defined in <a class="el" href="classClient.html">Client</a>)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classClient.html#a7ae00d9a9515ede5f609a12db8c197c1">performSyncDown</a>()</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classClient.html#af85d7f80493c4736f4a343c83a546aa7">processDeltaFile</a>(Msg msg)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classClient.html#a159cb4c810266496101380bb3f97a404">processSigFile</a>(Msg msg)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classClient.html#a37480e8b43dab360f9a7b6b761eb56b6">readConfig</a>()</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classClient.html#a28549389b6f3c38126d03a6015ea5a76">start</a>()</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classClient.html#aa871ac5c9cf88b5714bc2ffc93463c16">tryToLogin</a>(Msg msg)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classClient.html#a27ff78bc046c2e1369e94401adcee56d">tryToSignup</a>(Msg msg)</td><td class="entry"><a class="el" href="classClient.html">Client</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Client Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classClient-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Client Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Collaboration diagram for Client:</div>
<div class="dyncontent">
<div class="center"><img src="classClient__coll__graph.png" border="0" usemap="#Client_coll__map" alt="Collaboration graph"/></div>
<map name="Client_coll__map" id="Client_coll__map">
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:a37480e8b43dab360f9a7b6b761eb56b6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a37480e8b43dab360f9a7b6b761eb56b6">readConfig</a> () throws IOException </td></tr>
<tr class="separator:a37480e8b43dab360f9a7b6b761eb56b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa871ac5c9cf88b5714bc2ffc93463c16"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#aa871ac5c9cf88b5714bc2ffc93463c16">tryToLogin</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:aa871ac5c9cf88b5714bc2ffc93463c16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a400a22946d872d802bd6e9591477982a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a400a22946d872d802bd6e9591477982a">handleLoginReply</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:a400a22946d872d802bd6e9591477982a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27ff78bc046c2e1369e94401adcee56d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a27ff78bc046c2e1369e94401adcee56d">tryToSignup</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:a27ff78bc046c2e1369e94401adcee56d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68f7a00015444e2ab2b42ec9bf8bef84"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a68f7a00015444e2ab2b42ec9bf8bef84">handleSignupReply</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:a68f7a00015444e2ab2b42ec9bf8bef84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19f23cc8387bc794a950fe11971c5c48"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a19f23cc8387bc794a950fe11971c5c48">initiateSyncup</a> () throws IOException </td></tr>
<tr class="separator:a19f23cc8387bc794a950fe11971c5c48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f7f543fd16e253e80ab4f3a814cfc25"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a9f7f543fd16e253e80ab4f3a814cfc25">initiateSyncdown</a> () throws IOException </td></tr>
<tr class="separator:a9f7f543fd16e253e80ab4f3a814cfc25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a125c5d10357458dcd17b053e8b421b1f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a125c5d10357458dcd17b053e8b421b1f">handleSyncUpReqDenied</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:a125c5d10357458dcd17b053e8b421b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94262af4acc81129f8eac71abac189f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a94262af4acc81129f8eac71abac189f1">handleSyncDownReqDenied</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:a94262af4acc81129f8eac71abac189f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ae00d9a9515ede5f609a12db8c197c1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a7ae00d9a9515ede5f609a12db8c197c1">performSyncDown</a> () throws IOException, DigestException </td></tr>
<tr class="separator:a7ae00d9a9515ede5f609a12db8c197c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a159cb4c810266496101380bb3f97a404"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a159cb4c810266496101380bb3f97a404">processSigFile</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException, InvalidSignatureFile </td></tr>
<tr class="separator:a159cb4c810266496101380bb3f97a404"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af85d7f80493c4736f4a343c83a546aa7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#af85d7f80493c4736f4a343c83a546aa7">processDeltaFile</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException, InvalidSignatureFile </td></tr>
<tr class="separator:af85d7f80493c4736f4a343c83a546aa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5f5700afdbd0ce56e5023dee309b4ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#ad5f5700afdbd0ce56e5023dee309b4ab">handleIncomingMsg</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException, DigestException, InvalidSignatureFile </td></tr>
<tr class="separator:ad5f5700afdbd0ce56e5023dee309b4ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28549389b6f3c38126d03a6015ea5a76"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classClient.html#a28549389b6f3c38126d03a6015ea5a76">start</a> () throws IOException </td></tr>
<tr class="separator:a28549389b6f3c38126d03a6015ea5a76"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:ab9b892ebe4b84667bfe6da7181385481"><td class="memItemLeft" align="right" valign="top"><a id="ab9b892ebe4b84667bfe6da7181385481"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>main</b> (String[] args) throws InterruptedException </td></tr>
<tr class="separator:ab9b892ebe4b84667bfe6da7181385481"><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>This class implements all the client side functionality. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ad5f5700afdbd0ce56e5023dee309b4ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5f5700afdbd0ce56e5023dee309b4ab">&#9670;&nbsp;</a></span>handleIncomingMsg()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.handleIncomingMsg </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException, DigestException, InvalidSignatureFile</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the message name of the incoming message and calls the appropriate handler.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: incoming message </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">DigestException</td><td></td></tr>
<tr><td class="paramname">InvalidSignatureFile</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a400a22946d872d802bd6e9591477982a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a400a22946d872d802bd6e9591477982a">&#9670;&nbsp;</a></span>handleLoginReply()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.handleLoginReply </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Processes login request result from the server.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: server's reply </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a68f7a00015444e2ab2b42ec9bf8bef84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68f7a00015444e2ab2b42ec9bf8bef84">&#9670;&nbsp;</a></span>handleSignupReply()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.handleSignupReply </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Processes signup request result from the server.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: server's reply </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a94262af4acc81129f8eac71abac189f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94262af4acc81129f8eac71abac189f1">&#9670;&nbsp;</a></span>handleSyncDownReqDenied()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.handleSyncDownReqDenied </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This is called when the sync down request is denied.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: server's reply </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a125c5d10357458dcd17b053e8b421b1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a125c5d10357458dcd17b053e8b421b1f">&#9670;&nbsp;</a></span>handleSyncUpReqDenied()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.handleSyncUpReqDenied </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This is called when the sync up request is denied.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: server's reply </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9f7f543fd16e253e80ab4f3a814cfc25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f7f543fd16e253e80ab4f3a814cfc25">&#9670;&nbsp;</a></span>initiateSyncdown()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.initiateSyncdown </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Send the sync down request to the server.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a19f23cc8387bc794a950fe11971c5c48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19f23cc8387bc794a950fe11971c5c48">&#9670;&nbsp;</a></span>initiateSyncup()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.initiateSyncup </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Send the sync up request to the server.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7ae00d9a9515ede5f609a12db8c197c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ae00d9a9515ede5f609a12db8c197c1">&#9670;&nbsp;</a></span>performSyncDown()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.performSyncDown </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException, DigestException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts the sync down process. This is called when the client gets an approval for sync down request or an instruction to perform sync down from server.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">DigestException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af85d7f80493c4736f4a343c83a546aa7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af85d7f80493c4736f4a343c83a546aa7">&#9670;&nbsp;</a></span>processDeltaFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.processDeltaFile </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException, InvalidSignatureFile</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This is called when client receives a part of the delta file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: contains a part of the delta file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">InvalidSignatureFile</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a159cb4c810266496101380bb3f97a404"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a159cb4c810266496101380bb3f97a404">&#9670;&nbsp;</a></span>processSigFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.processSigFile </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException, InvalidSignatureFile</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This is called when client receives a part of the signature file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: contains a part of the signature file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">InvalidSignatureFile</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a37480e8b43dab360f9a7b6b761eb56b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37480e8b43dab360f9a7b6b761eb56b6">&#9670;&nbsp;</a></span>readConfig()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.readConfig </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the configuration file and sets the server address, port and working directory. </p>
</div>
</div>
<a id="a28549389b6f3c38126d03a6015ea5a76"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28549389b6f3c38126d03a6015ea5a76">&#9670;&nbsp;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads config file, connects to the server and creates the client side GUI.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa871ac5c9cf88b5714bc2ffc93463c16"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa871ac5c9cf88b5714bc2ffc93463c16">&#9670;&nbsp;</a></span>tryToLogin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.tryToLogin </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sends login request.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: this contains the username and password </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a27ff78bc046c2e1369e94401adcee56d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27ff78bc046c2e1369e94401adcee56d">&#9670;&nbsp;</a></span>tryToSignup()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Client.tryToSignup </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Send signup request.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: this contains username and password </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Client/Client.java</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.13
</small></address>
</body>
</html>
digraph "Client"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="Client",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node2 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" gui" ,fontname="Helvetica"];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndeltaFileOut" ,fontname="Helvetica"];
Node4 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ,fontname="Helvetica"];
Node5 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" autoSyncThread" ,fontname="Helvetica"];
Node6 [label="AutoSyncThread",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node2 -> Node6 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node7 -> Node6 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" mf" ,fontname="Helvetica"];
Node7 [label="MainFrame",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classMainFrame.html"];
Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncDown\nsyncUp\nautoSyncButton" ,fontname="Helvetica"];
Node8 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node9 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" output" ,fontname="Helvetica"];
Node9 [label="JTextArea",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node2 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node10 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ,fontname="Helvetica"];
Node10 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node11 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" autoSyncLabel1\nautoSyncLabel2\nuserNamelabel" ,fontname="Helvetica"];
Node11 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node12 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" connection" ,fontname="Helvetica"];
Node12 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node13 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ,fontname="Helvetica"];
Node13 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node2 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ,fontname="Helvetica"];
Node4 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ,fontname="Helvetica"];
Node5 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ,fontname="Helvetica"];
Node14 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ,fontname="Helvetica"];
Node14 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
405617af8d5755d145f4c2e4d7f5d586
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Connection Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classConnection.html">Connection</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classConnection.html#a5c52903d0c5d5529892af3bed85ca13f">close</a>()</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classConnection.html#a5c52903d0c5d5529892af3bed85ca13f">close</a>()</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classConnection.html#adc308009f2f493dda9e69a45a579edef">Connection</a>(Socket socket, LinkedBlockingQueue&lt; Msg &gt; inQueue)</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classConnection.html#adc308009f2f493dda9e69a45a579edef">Connection</a>(Socket socket, LinkedBlockingQueue&lt; Msg &gt; inQueue)</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classConnection.html#a339605e1bd2344ecc6079f7a26cead17">send</a>(Msg msg)</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classConnection.html#a339605e1bd2344ecc6079f7a26cead17">send</a>(Msg msg)</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3">sendFile</a>(File f, int fileType)</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3">sendFile</a>(File f, int fileType)</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f">startRecSendThreads</a>()</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f">startRecSendThreads</a>()</td><td class="entry"><a class="el" href="classConnection.html">Connection</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Connection Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classConnection-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Connection Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Collaboration diagram for Connection:</div>
<div class="dyncontent">
<div class="center"><img src="classConnection__coll__graph.png" border="0" usemap="#Connection_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:adc308009f2f493dda9e69a45a579edef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#adc308009f2f493dda9e69a45a579edef">Connection</a> (Socket socket, LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt; inQueue) throws IOException </td></tr>
<tr class="separator:adc308009f2f493dda9e69a45a579edef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a339605e1bd2344ecc6079f7a26cead17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#a339605e1bd2344ecc6079f7a26cead17">send</a> (<a class="el" href="classMsg.html">Msg</a> msg)</td></tr>
<tr class="separator:a339605e1bd2344ecc6079f7a26cead17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3">sendFile</a> (File f, int fileType) throws IOException </td></tr>
<tr class="separator:ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46315dd5e68a4ea009c9ac8faa95fe5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f">startRecSendThreads</a> ()</td></tr>
<tr class="separator:a46315dd5e68a4ea009c9ac8faa95fe5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c52903d0c5d5529892af3bed85ca13f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#a5c52903d0c5d5529892af3bed85ca13f">close</a> ()</td></tr>
<tr class="separator:a5c52903d0c5d5529892af3bed85ca13f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc308009f2f493dda9e69a45a579edef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#adc308009f2f493dda9e69a45a579edef">Connection</a> (Socket socket, LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt; inQueue) throws IOException </td></tr>
<tr class="separator:adc308009f2f493dda9e69a45a579edef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a339605e1bd2344ecc6079f7a26cead17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#a339605e1bd2344ecc6079f7a26cead17">send</a> (<a class="el" href="classMsg.html">Msg</a> msg)</td></tr>
<tr class="separator:a339605e1bd2344ecc6079f7a26cead17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3">sendFile</a> (File f, int fileType) throws IOException </td></tr>
<tr class="separator:ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46315dd5e68a4ea009c9ac8faa95fe5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f">startRecSendThreads</a> ()</td></tr>
<tr class="separator:a46315dd5e68a4ea009c9ac8faa95fe5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c52903d0c5d5529892af3bed85ca13f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classConnection.html#a5c52903d0c5d5529892af3bed85ca13f">close</a> ()</td></tr>
<tr class="separator:a5c52903d0c5d5529892af3bed85ca13f"><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>Represents a network connection. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="adc308009f2f493dda9e69a45a579edef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc308009f2f493dda9e69a45a579edef">&#9670;&nbsp;</a></span>Connection() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Connection.Connection </td>
<td>(</td>
<td class="paramtype">Socket&#160;</td>
<td class="paramname"><em>socket</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt;&#160;</td>
<td class="paramname"><em>inQueue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">socket</td><td>: network socket for this connection </td></tr>
<tr><td class="paramname">inQueue</td><td>: main thread's inbox, all incoming messages will be put in this queue </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="adc308009f2f493dda9e69a45a579edef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc308009f2f493dda9e69a45a579edef">&#9670;&nbsp;</a></span>Connection() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Connection.Connection </td>
<td>(</td>
<td class="paramtype">Socket&#160;</td>
<td class="paramname"><em>socket</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt;&#160;</td>
<td class="paramname"><em>inQueue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">socket</td><td>: network socket for this connection </td></tr>
<tr><td class="paramname">inQueue</td><td>: main thread's inbox, all incoming messages will be put in this queue </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a5c52903d0c5d5529892af3bed85ca13f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c52903d0c5d5529892af3bed85ca13f">&#9670;&nbsp;</a></span>close() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Connection.close </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Closes the connection's socket and stops the send and receive threads. </p>
</div>
</div>
<a id="a5c52903d0c5d5529892af3bed85ca13f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c52903d0c5d5529892af3bed85ca13f">&#9670;&nbsp;</a></span>close() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Connection.close </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Closes the connection's socket and stops the send and receive threads. </p>
</div>
</div>
<a id="a339605e1bd2344ecc6079f7a26cead17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a339605e1bd2344ecc6079f7a26cead17">&#9670;&nbsp;</a></span>send() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Connection.send </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds the given message to the send queue.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: message to be sent </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a339605e1bd2344ecc6079f7a26cead17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a339605e1bd2344ecc6079f7a26cead17">&#9670;&nbsp;</a></span>send() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Connection.send </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds the given message to the send queue.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: message to be sent </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3">&#9670;&nbsp;</a></span>sendFile() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Connection.sendFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>f</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>fileType</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Send the whole file through this connection.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">f</td><td>: file to be sent </td></tr>
<tr><td class="paramname">fileType</td><td>: either SIGFILE or DELTAFILE </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3">&#9670;&nbsp;</a></span>sendFile() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Connection.sendFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>f</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>fileType</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Send the whole file through this connection.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">f</td><td>: file to be sent </td></tr>
<tr><td class="paramname">fileType</td><td>: either SIGFILE or DELTAFILE </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a46315dd5e68a4ea009c9ac8faa95fe5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46315dd5e68a4ea009c9ac8faa95fe5f">&#9670;&nbsp;</a></span>startRecSendThreads() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Connection.startRecSendThreads </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates send and receive threads. Send thread sends all the messages that it receives from other parts of the program through this connection. Receive thread receives all the messages from this connection and passes them on to main thread. </p>
</div>
</div>
<a id="a46315dd5e68a4ea009c9ac8faa95fe5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46315dd5e68a4ea009c9ac8faa95fe5f">&#9670;&nbsp;</a></span>startRecSendThreads() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Connection.startRecSendThreads </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates send and receive threads. Send thread sends all the messages that it receives from other parts of the program through this connection. Receive thread receives all the messages from this connection and passes them on to main thread. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/Connection.java</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.13
</small></address>
</body>
</html>
digraph "Connection"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ,fontname="Helvetica"];
Node2 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ,fontname="Helvetica"];
Node3 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ,fontname="Helvetica"];
Node4 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ,fontname="Helvetica"];
Node5 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ,fontname="Helvetica"];
Node6 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
d3240bb7e5870031269b24a5c677a09c
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Database Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classDatabase.html">Database</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classDatabase.html#aba056b29124441dedd4663df22d9d5e7">addUser</a>(String uname, String pass)</td><td class="entry"><a class="el" href="classDatabase.html">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classDatabase.html#af7388b47545fe298ea7219d308e3e3c5">checkLogin</a>(String uname, String pass)</td><td class="entry"><a class="el" href="classDatabase.html">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDatabase.html#ae164fd695758d409242898f63f7e28b9">Database</a>(String dbFile)</td><td class="entry"><a class="el" href="classDatabase.html">Database</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Database Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classDatabase-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Database Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Collaboration diagram for Database:</div>
<div class="dyncontent">
<div class="center"><img src="classDatabase__coll__graph.png" border="0" usemap="#Database_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:ae164fd695758d409242898f63f7e28b9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDatabase.html#ae164fd695758d409242898f63f7e28b9">Database</a> (String dbFile)</td></tr>
<tr class="separator:ae164fd695758d409242898f63f7e28b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba056b29124441dedd4663df22d9d5e7"><td class="memItemLeft" align="right" valign="top">boolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDatabase.html#aba056b29124441dedd4663df22d9d5e7">addUser</a> (String uname, String pass)</td></tr>
<tr class="separator:aba056b29124441dedd4663df22d9d5e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7388b47545fe298ea7219d308e3e3c5"><td class="memItemLeft" align="right" valign="top">boolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDatabase.html#af7388b47545fe298ea7219d308e3e3c5">checkLogin</a> (String uname, String pass)</td></tr>
<tr class="separator:af7388b47545fe298ea7219d308e3e3c5"><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>Represents a sqlite database used to store client login information. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ae164fd695758d409242898f63f7e28b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae164fd695758d409242898f63f7e28b9">&#9670;&nbsp;</a></span>Database()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Database.Database </td>
<td>(</td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>dbFile</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dbFile</td><td>: <a class="el" href="classDatabase.html">Database</a> file to be used. If the file does not exist it will be created. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aba056b29124441dedd4663df22d9d5e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba056b29124441dedd4663df22d9d5e7">&#9670;&nbsp;</a></span>addUser()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boolean Database.addUser </td>
<td>(</td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>uname</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>pass</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a new user to the database.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">uname</td><td>: username </td></tr>
<tr><td class="paramname">pass</td><td>: password </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>: true if user was added false otherwise </dd></dl>
</div>
</div>
<a id="af7388b47545fe298ea7219d308e3e3c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7388b47545fe298ea7219d308e3e3c5">&#9670;&nbsp;</a></span>checkLogin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boolean Database.checkLogin </td>
<td>(</td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>uname</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>pass</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if the given username and password is valid.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">uname</td><td>: username </td></tr>
<tr><td class="paramname">pass</td><td>: password </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>: true if login is valid false otherwise </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/Database.java</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.13
</small></address>
</body>
</html>
digraph "Database"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="Database",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dbConnection" ,fontname="Helvetica"];
Node2 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ,fontname="Helvetica"];
Node3 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ,fontname="Helvetica"];
Node4 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ,fontname="Helvetica"];
Node5 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ,fontname="Helvetica"];
Node6 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ,fontname="Helvetica"];
Node7 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
d7ad217e55384f7fd50f4eb5259c9b3d
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">FileOps Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classFileOps.html">FileOps</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classFileOps.html#a01465191b85c90ff878bbde8406200be">createAIOFile</a>(File srcDir, File aio)</td><td class="entry"><a class="el" href="classFileOps.html">FileOps</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classFileOps.html#a01465191b85c90ff878bbde8406200be">createAIOFile</a>(File srcDir, File aio)</td><td class="entry"><a class="el" href="classFileOps.html">FileOps</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c">createFolderFromAIOFile</a>(File aio, String parentDir)</td><td class="entry"><a class="el" href="classFileOps.html">FileOps</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c">createFolderFromAIOFile</a>(File aio, String parentDir)</td><td class="entry"><a class="el" href="classFileOps.html">FileOps</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classFileOps.html#a3d6960fa284423a1b015da0558c96113">deleteDir</a>(File dir)</td><td class="entry"><a class="el" href="classFileOps.html">FileOps</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classFileOps.html#a3d6960fa284423a1b015da0558c96113">deleteDir</a>(File dir)</td><td class="entry"><a class="el" href="classFileOps.html">FileOps</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: FileOps Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classFileOps-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">FileOps Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a3d6960fa284423a1b015da0558c96113"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFileOps.html#a3d6960fa284423a1b015da0558c96113">deleteDir</a> (File dir)</td></tr>
<tr class="separator:a3d6960fa284423a1b015da0558c96113"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcbaa79b342798fb73b95ab0d9a5f35c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c">createFolderFromAIOFile</a> (File aio, String parentDir) throws IOException </td></tr>
<tr class="separator:abcbaa79b342798fb73b95ab0d9a5f35c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01465191b85c90ff878bbde8406200be"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFileOps.html#a01465191b85c90ff878bbde8406200be">createAIOFile</a> (File srcDir, File aio) throws IOException </td></tr>
<tr class="separator:a01465191b85c90ff878bbde8406200be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d6960fa284423a1b015da0558c96113"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFileOps.html#a3d6960fa284423a1b015da0558c96113">deleteDir</a> (File dir)</td></tr>
<tr class="separator:a3d6960fa284423a1b015da0558c96113"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcbaa79b342798fb73b95ab0d9a5f35c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c">createFolderFromAIOFile</a> (File aio, String parentDir) throws IOException </td></tr>
<tr class="separator:abcbaa79b342798fb73b95ab0d9a5f35c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01465191b85c90ff878bbde8406200be"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFileOps.html#a01465191b85c90ff878bbde8406200be">createAIOFile</a> (File srcDir, File aio) throws IOException </td></tr>
<tr class="separator:a01465191b85c90ff878bbde8406200be"><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>This class provides support for handling AIO files. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a01465191b85c90ff878bbde8406200be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01465191b85c90ff878bbde8406200be">&#9670;&nbsp;</a></span>createAIOFile() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void FileOps.createAIOFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>srcDir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>aio</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates AIO file from the given folder.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">srcDir</td><td>: folder from which to create AIO file </td></tr>
<tr><td class="paramname">aio</td><td>: output AIO file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a01465191b85c90ff878bbde8406200be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01465191b85c90ff878bbde8406200be">&#9670;&nbsp;</a></span>createAIOFile() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void FileOps.createAIOFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>srcDir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>aio</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates AIO file from the given folder.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">srcDir</td><td>: folder from which to create AIO file </td></tr>
<tr><td class="paramname">aio</td><td>: output AIO file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abcbaa79b342798fb73b95ab0d9a5f35c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcbaa79b342798fb73b95ab0d9a5f35c">&#9670;&nbsp;</a></span>createFolderFromAIOFile() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void FileOps.createFolderFromAIOFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>aio</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>parentDir</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create the whole folder with all the files inside from the given AIO file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">aio</td><td>: AIO file to create the folder from </td></tr>
<tr><td class="paramname">parentDir</td><td>: create folder at this location </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abcbaa79b342798fb73b95ab0d9a5f35c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcbaa79b342798fb73b95ab0d9a5f35c">&#9670;&nbsp;</a></span>createFolderFromAIOFile() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void FileOps.createFolderFromAIOFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>aio</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>parentDir</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create the whole folder with all the files inside from the given AIO file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">aio</td><td>: AIO file to create the folder from </td></tr>
<tr><td class="paramname">parentDir</td><td>: create folder at this location </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3d6960fa284423a1b015da0558c96113"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d6960fa284423a1b015da0558c96113">&#9670;&nbsp;</a></span>deleteDir() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void FileOps.deleteDir </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>dir</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Deletes the given directory.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dir</td><td>: directory to delete </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3d6960fa284423a1b015da0558c96113"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d6960fa284423a1b015da0558c96113">&#9670;&nbsp;</a></span>deleteDir() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void FileOps.deleteDir </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>dir</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Deletes the given directory.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dir</td><td>: directory to delete </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/FileOps.java</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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ListeningSocket Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classListeningSocket.html">ListeningSocket</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classListeningSocket.html#a8cccb422e17de624db0952b616f83376">getPort</a>()</td><td class="entry"><a class="el" href="classListeningSocket.html">ListeningSocket</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classListeningSocket.html#ab84a6dd4f9555e5f16752042aeaec9e8">getSocketAddr</a>()</td><td class="entry"><a class="el" href="classListeningSocket.html">ListeningSocket</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classListeningSocket.html#a7553b5ab4c0b2d817038ecfab7c13963">ListeningSocket</a>(LinkedBlockingQueue&lt; Msg &gt; inbox)</td><td class="entry"><a class="el" href="classListeningSocket.html">ListeningSocket</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classListeningSocket.html#a6c691efcc63a2aa34b01132a0641f9d2">ListeningSocket</a>(int port, LinkedBlockingQueue&lt; Msg &gt; inbox)</td><td class="entry"><a class="el" href="classListeningSocket.html">ListeningSocket</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classListeningSocket.html#a88951dfeb85a42f083980aa8e0d10406">start</a>()</td><td class="entry"><a class="el" href="classListeningSocket.html">ListeningSocket</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: ListeningSocket Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classListeningSocket-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ListeningSocket Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Collaboration diagram for ListeningSocket:</div>
<div class="dyncontent">
<div class="center"><img src="classListeningSocket__coll__graph.png" border="0" usemap="#ListeningSocket_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:a7553b5ab4c0b2d817038ecfab7c13963"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classListeningSocket.html#a7553b5ab4c0b2d817038ecfab7c13963">ListeningSocket</a> (LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt; inbox)</td></tr>
<tr class="separator:a7553b5ab4c0b2d817038ecfab7c13963"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c691efcc63a2aa34b01132a0641f9d2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classListeningSocket.html#a6c691efcc63a2aa34b01132a0641f9d2">ListeningSocket</a> (int port, LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt; inbox)</td></tr>
<tr class="separator:a6c691efcc63a2aa34b01132a0641f9d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88951dfeb85a42f083980aa8e0d10406"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classListeningSocket.html#a88951dfeb85a42f083980aa8e0d10406">start</a> () throws IOException </td></tr>
<tr class="separator:a88951dfeb85a42f083980aa8e0d10406"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cccb422e17de624db0952b616f83376"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classListeningSocket.html#a8cccb422e17de624db0952b616f83376">getPort</a> ()</td></tr>
<tr class="separator:a8cccb422e17de624db0952b616f83376"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84a6dd4f9555e5f16752042aeaec9e8"><td class="memItemLeft" align="right" valign="top">String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classListeningSocket.html#ab84a6dd4f9555e5f16752042aeaec9e8">getSocketAddr</a> ()</td></tr>
<tr class="separator:ab84a6dd4f9555e5f16752042aeaec9e8"><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>Represents the server socket used to accept client connections. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a7553b5ab4c0b2d817038ecfab7c13963"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7553b5ab4c0b2d817038ecfab7c13963">&#9670;&nbsp;</a></span>ListeningSocket() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ListeningSocket.ListeningSocket </td>
<td>(</td>
<td class="paramtype">LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt;&#160;</td>
<td class="paramname"><em>inbox</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inbox</td><td>: inbox of main thread </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a6c691efcc63a2aa34b01132a0641f9d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c691efcc63a2aa34b01132a0641f9d2">&#9670;&nbsp;</a></span>ListeningSocket() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ListeningSocket.ListeningSocket </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt;&#160;</td>
<td class="paramname"><em>inbox</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">port</td><td>: port number on which to listen for new connections </td></tr>
<tr><td class="paramname">inbox</td><td>: inbox of main thread </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a8cccb422e17de624db0952b616f83376"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cccb422e17de624db0952b616f83376">&#9670;&nbsp;</a></span>getPort()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int ListeningSocket.getPort </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>port number on which socket is running or 0 if the socket is not running </dd></dl>
</div>
</div>
<a id="ab84a6dd4f9555e5f16752042aeaec9e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab84a6dd4f9555e5f16752042aeaec9e8">&#9670;&nbsp;</a></span>getSocketAddr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">String ListeningSocket.getSocketAddr </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>local address of the socket </dd></dl>
</div>
</div>
<a id="a88951dfeb85a42f083980aa8e0d10406"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88951dfeb85a42f083980aa8e0d10406">&#9670;&nbsp;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ListeningSocket.start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a server socket and starts a new thread to accept the incoming connections.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/ListeningSocket.java</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.13
</small></address>
</body>
</html>
digraph "ListeningSocket"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="ListeningSocket",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" serverSocket" ,fontname="Helvetica"];
Node2 [label="ServerSocket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node3 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
c5c9d1d188a52fa74c0a27c6cf494064
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">LoginFrame Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classLoginFrame.html">LoginFrame</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classLoginFrame.html#aa86ab7ad8d64bfe04cdbb612150ca7c5">updateOutput</a>(String msg)</td><td class="entry"><a class="el" href="classLoginFrame.html">LoginFrame</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: LoginFrame Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classLoginFrame-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">LoginFrame Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for LoginFrame:</div>
<div class="dyncontent">
<div class="center"><img src="classLoginFrame__inherit__graph.png" border="0" usemap="#LoginFrame_inherit__map" alt="Inheritance graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for LoginFrame:</div>
<div class="dyncontent">
<div class="center"><img src="classLoginFrame__coll__graph.png" border="0" usemap="#LoginFrame_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 1 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:aa86ab7ad8d64bfe04cdbb612150ca7c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLoginFrame.html#aa86ab7ad8d64bfe04cdbb612150ca7c5">updateOutput</a> (String msg)</td></tr>
<tr class="separator:aa86ab7ad8d64bfe04cdbb612150ca7c5"><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>GUI for the login form. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aa86ab7ad8d64bfe04cdbb612150ca7c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa86ab7ad8d64bfe04cdbb612150ca7c5">&#9670;&nbsp;</a></span>updateOutput()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void LoginFrame.updateOutput </td>
<td>(</td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Update the output text.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: new output text </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Client/LoginFrame.java</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.13
</small></address>
</body>
</html>
digraph "LoginFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node2 [label="LoginFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" login\ngotoSignup" ,fontname="Helvetica"];
Node4 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" output" ,fontname="Helvetica"];
Node5 [label="JTextArea",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" username" ,fontname="Helvetica"];
Node6 [label="JTextField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node7 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" password" ,fontname="Helvetica"];
Node8 [label="JPasswordField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node9 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ,fontname="Helvetica"];
Node9 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node10 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" usernameLabel\npasswordLabel" ,fontname="Helvetica"];
Node10 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
8268ee6d31044343dfebcfa378f5d6f7
\ No newline at end of file
digraph "LoginFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node0 [label="LoginFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
bbd774505f5dc56b2488e7bc1dd688d4
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">MainFrame Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classMainFrame.html">MainFrame</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classMainFrame.html#ac74abf01d0a5c95cc97d22ac53394a60">updateAutoSyncStatus</a>(boolean isOn, int interval)</td><td class="entry"><a class="el" href="classMainFrame.html">MainFrame</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMainFrame.html#a3a0ea249d05e0ad786c8663727fedf05">updateOutput</a>(String m1, String m2)</td><td class="entry"><a class="el" href="classMainFrame.html">MainFrame</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: MainFrame Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classMainFrame-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">MainFrame Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for MainFrame:</div>
<div class="dyncontent">
<div class="center"><img src="classMainFrame__inherit__graph.png" border="0" usemap="#MainFrame_inherit__map" alt="Inheritance graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for MainFrame:</div>
<div class="dyncontent">
<div class="center"><img src="classMainFrame__coll__graph.png" border="0" usemap="#MainFrame_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 1 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:a3a0ea249d05e0ad786c8663727fedf05"><td class="memItemLeft" align="right" valign="top">synchronized void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMainFrame.html#a3a0ea249d05e0ad786c8663727fedf05">updateOutput</a> (String m1, String m2)</td></tr>
<tr class="separator:a3a0ea249d05e0ad786c8663727fedf05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac74abf01d0a5c95cc97d22ac53394a60"><td class="memItemLeft" align="right" valign="top">synchronized void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMainFrame.html#ac74abf01d0a5c95cc97d22ac53394a60">updateAutoSyncStatus</a> (boolean isOn, int interval)</td></tr>
<tr class="separator:ac74abf01d0a5c95cc97d22ac53394a60"><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>GUI for when client is logged in. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ac74abf01d0a5c95cc97d22ac53394a60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac74abf01d0a5c95cc97d22ac53394a60">&#9670;&nbsp;</a></span>updateAutoSyncStatus()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">synchronized void MainFrame.updateAutoSyncStatus </td>
<td>(</td>
<td class="paramtype">boolean&#160;</td>
<td class="paramname"><em>isOn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>interval</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Update the auto sync status.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">isOn</td><td>: is auto sync on. </td></tr>
<tr><td class="paramname">interval</td><td>: auto sync time interval </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3a0ea249d05e0ad786c8663727fedf05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a0ea249d05e0ad786c8663727fedf05">&#9670;&nbsp;</a></span>updateOutput()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">synchronized void MainFrame.updateOutput </td>
<td>(</td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>m1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>m2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Update the output text.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m1</td><td>: line1 text, if null then line1 text is unchanged. </td></tr>
<tr><td class="paramname">m2</td><td>: line2 text, if null then line2 text is unchanged. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Client/MainFrame.java</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.13
</small></address>
</body>
</html>
digraph "MainFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node2 [label="MainFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncDown\nsyncUp\nautoSyncButton" ,fontname="Helvetica"];
Node4 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" output" ,fontname="Helvetica"];
Node5 [label="JTextArea",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node6 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ,fontname="Helvetica"];
Node7 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" autoSyncLabel1\nautoSyncLabel2\nuserNamelabel" ,fontname="Helvetica"];
Node8 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
fbec7a45a3e0b40fc137c1b23b4e04f4
\ No newline at end of file
digraph "MainFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node0 [label="MainFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
9d305783b74719f0abed0126383624cb
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">MainThread Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classMainThread.html">MainThread</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classMainThread.html#acc9c240699d7df8d25c81f261e2c9604">checkLogin</a>(Msg msg)</td><td class="entry"><a class="el" href="classMainThread.html">MainThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMainThread.html#a02b10b098a47dd28fc55ae97d18050d2">handleLogin</a>(Msg msg)</td><td class="entry"><a class="el" href="classMainThread.html">MainThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classMainThread.html#affe1cbd87d540ab1650feb358ecc42e7">handleSignup</a>(Msg msg)</td><td class="entry"><a class="el" href="classMainThread.html">MainThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMainThread.html#aa16763cb2b5f289a0d443b5a1df8eb64">MainThread</a>(String cfn)</td><td class="entry"><a class="el" href="classMainThread.html">MainThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classMainThread.html#a8b6c064abc4d75fcecb94cb432dd543c">readConfig</a>()</td><td class="entry"><a class="el" href="classMainThread.html">MainThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMainThread.html#a8c60f0ba141e2b76766adb77c6fd177f">signup</a>(Msg msg)</td><td class="entry"><a class="el" href="classMainThread.html">MainThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classMainThread.html#ace7c99c112360940b0facec17874692d">start</a>()</td><td class="entry"><a class="el" href="classMainThread.html">MainThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: MainThread Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classMainThread-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">MainThread Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Collaboration diagram for MainThread:</div>
<div class="dyncontent">
<div class="center"><img src="classMainThread__coll__graph.png" border="0" usemap="#MainThread_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:aa16763cb2b5f289a0d443b5a1df8eb64"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMainThread.html#aa16763cb2b5f289a0d443b5a1df8eb64">MainThread</a> (String cfn)</td></tr>
<tr class="separator:aa16763cb2b5f289a0d443b5a1df8eb64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b6c064abc4d75fcecb94cb432dd543c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMainThread.html#a8b6c064abc4d75fcecb94cb432dd543c">readConfig</a> () throws IOException </td></tr>
<tr class="separator:a8b6c064abc4d75fcecb94cb432dd543c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc9c240699d7df8d25c81f261e2c9604"><td class="memItemLeft" align="right" valign="top">String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMainThread.html#acc9c240699d7df8d25c81f261e2c9604">checkLogin</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:acc9c240699d7df8d25c81f261e2c9604"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c60f0ba141e2b76766adb77c6fd177f"><td class="memItemLeft" align="right" valign="top">String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMainThread.html#a8c60f0ba141e2b76766adb77c6fd177f">signup</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:a8c60f0ba141e2b76766adb77c6fd177f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02b10b098a47dd28fc55ae97d18050d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMainThread.html#a02b10b098a47dd28fc55ae97d18050d2">handleLogin</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:a02b10b098a47dd28fc55ae97d18050d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affe1cbd87d540ab1650feb358ecc42e7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMainThread.html#affe1cbd87d540ab1650feb358ecc42e7">handleSignup</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:affe1cbd87d540ab1650feb358ecc42e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace7c99c112360940b0facec17874692d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMainThread.html#ace7c99c112360940b0facec17874692d">start</a> () throws IOException </td></tr>
<tr class="separator:ace7c99c112360940b0facec17874692d"><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>Represents the main thread server thread. It receives all the messages from clients and forwards them to appropriate SyncThreads. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa16763cb2b5f289a0d443b5a1df8eb64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa16763cb2b5f289a0d443b5a1df8eb64">&#9670;&nbsp;</a></span>MainThread()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">MainThread.MainThread </td>
<td>(</td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>cfn</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cfn</td><td>: config file name </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acc9c240699d7df8d25c81f261e2c9604"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc9c240699d7df8d25c81f261e2c9604">&#9670;&nbsp;</a></span>checkLogin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">String MainThread.checkLogin </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Processes login request from client and replies accordingly.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: contains login request </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>: username if valid login else null </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a02b10b098a47dd28fc55ae97d18050d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02b10b098a47dd28fc55ae97d18050d2">&#9670;&nbsp;</a></span>handleLogin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void MainThread.handleLogin </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calls checkLogin and adds the client to appropriate sync thread if valid login. If sync thread for the client is not running start a new sync thread for the client.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: contains login request </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="affe1cbd87d540ab1650feb358ecc42e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affe1cbd87d540ab1650feb358ecc42e7">&#9670;&nbsp;</a></span>handleSignup()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void MainThread.handleSignup </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calls signup and creates appropriate directories for the new user if signup is successful.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: contains signup request </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8b6c064abc4d75fcecb94cb432dd543c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b6c064abc4d75fcecb94cb432dd543c">&#9670;&nbsp;</a></span>readConfig()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void MainThread.readConfig </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads the config file and sets port and working directory.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8c60f0ba141e2b76766adb77c6fd177f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c60f0ba141e2b76766adb77c6fd177f">&#9670;&nbsp;</a></span>signup()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">String MainThread.signup </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Processes signup request from client and replies accordingly.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: contains signup request </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>: username if signup successful else null </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ace7c99c112360940b0facec17874692d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace7c99c112360940b0facec17874692d">&#9670;&nbsp;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void MainThread.start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads config file, initializes database, starts listening socket and waits for the incoming messages.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/MainThread.java</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.13
</small></address>
</body>
</html>
digraph "MainThread"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="MainThread",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncThreadMap" ,fontname="Helvetica"];
Node2 [label="Map\< String, SyncThread \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node3 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" listeningSocket" ,fontname="Helvetica"];
Node4 [label="ListeningSocket",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classListeningSocket.html"];
Node5 -> Node4 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" serverSocket" ,fontname="Helvetica"];
Node5 [label="ServerSocket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node4 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node6 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" database" ,fontname="Helvetica"];
Node6 [label="Database",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classDatabase.html"];
Node7 -> Node6 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dbConnection" ,fontname="Helvetica"];
Node7 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ,fontname="Helvetica"];
Node8 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ,fontname="Helvetica"];
Node9 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ,fontname="Helvetica"];
Node9 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node10 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ,fontname="Helvetica"];
Node10 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node11 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ,fontname="Helvetica"];
Node11 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
44c44a97d2c64d333a2858c47d3bcc08
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Msg Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classMsg.html">Msg</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e">getDataInputStream</a>()</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e">getDataInputStream</a>()</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1">getDataOutputStream</a>()</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1">getDataOutputStream</a>()</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classMsg.html#a8cc3de09d885bfeff9e41a534c0c09e3">Msg</a>(int type, byte msg[], Connection connection)</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMsg.html#a1350206b00860e9f672a52986beba1e4">Msg</a>(int type, Object userData)</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classMsg.html#a8cc3de09d885bfeff9e41a534c0c09e3">Msg</a>(int type, byte msg[], Connection connection)</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMsg.html#a1350206b00860e9f672a52986beba1e4">Msg</a>(int type, Object userData)</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classMsg.html#ae6d18cf6a15045107103de719bc59964">prepare</a>()</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMsg.html#ae6d18cf6a15045107103de719bc59964">prepare</a>()</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classMsg.html#a8e64149c518f7fc14fe154f3851861b5">resetDataInputStream</a>()</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classMsg.html#a8e64149c518f7fc14fe154f3851861b5">resetDataInputStream</a>()</td><td class="entry"><a class="el" href="classMsg.html">Msg</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Msg Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classMsg-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Msg Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Collaboration diagram for Msg:</div>
<div class="dyncontent">
<div class="center"><img src="classMsg__coll__graph.png" border="0" usemap="#Msg_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:a8cc3de09d885bfeff9e41a534c0c09e3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a8cc3de09d885bfeff9e41a534c0c09e3">Msg</a> (int type, byte msg[], <a class="el" href="classConnection.html">Connection</a> connection)</td></tr>
<tr class="separator:a8cc3de09d885bfeff9e41a534c0c09e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1350206b00860e9f672a52986beba1e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a1350206b00860e9f672a52986beba1e4">Msg</a> (int type, Object userData)</td></tr>
<tr class="separator:a1350206b00860e9f672a52986beba1e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e64149c518f7fc14fe154f3851861b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a8e64149c518f7fc14fe154f3851861b5">resetDataInputStream</a> ()</td></tr>
<tr class="separator:a8e64149c518f7fc14fe154f3851861b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d7d8181a9490b9b14eebb7c5ce4016e"><td class="memItemLeft" align="right" valign="top">DataInputStream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e">getDataInputStream</a> ()</td></tr>
<tr class="separator:a1d7d8181a9490b9b14eebb7c5ce4016e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10fc1e0ebd649614f7b573c6b5820fe1"><td class="memItemLeft" align="right" valign="top">DataOutputStream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1">getDataOutputStream</a> ()</td></tr>
<tr class="separator:a10fc1e0ebd649614f7b573c6b5820fe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6d18cf6a15045107103de719bc59964"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#ae6d18cf6a15045107103de719bc59964">prepare</a> () throws IOException </td></tr>
<tr class="separator:ae6d18cf6a15045107103de719bc59964"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cc3de09d885bfeff9e41a534c0c09e3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a8cc3de09d885bfeff9e41a534c0c09e3">Msg</a> (int type, byte msg[], <a class="el" href="classConnection.html">Connection</a> connection)</td></tr>
<tr class="separator:a8cc3de09d885bfeff9e41a534c0c09e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1350206b00860e9f672a52986beba1e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a1350206b00860e9f672a52986beba1e4">Msg</a> (int type, Object userData)</td></tr>
<tr class="separator:a1350206b00860e9f672a52986beba1e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e64149c518f7fc14fe154f3851861b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a8e64149c518f7fc14fe154f3851861b5">resetDataInputStream</a> ()</td></tr>
<tr class="separator:a8e64149c518f7fc14fe154f3851861b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d7d8181a9490b9b14eebb7c5ce4016e"><td class="memItemLeft" align="right" valign="top">DataInputStream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e">getDataInputStream</a> ()</td></tr>
<tr class="separator:a1d7d8181a9490b9b14eebb7c5ce4016e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10fc1e0ebd649614f7b573c6b5820fe1"><td class="memItemLeft" align="right" valign="top">DataOutputStream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1">getDataOutputStream</a> ()</td></tr>
<tr class="separator:a10fc1e0ebd649614f7b573c6b5820fe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6d18cf6a15045107103de719bc59964"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMsg.html#ae6d18cf6a15045107103de719bc59964">prepare</a> () throws IOException </td></tr>
<tr class="separator:ae6d18cf6a15045107103de719bc59964"><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>Represents a message sent either over the network or internally. Defines all the message types and message names. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a8cc3de09d885bfeff9e41a534c0c09e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cc3de09d885bfeff9e41a534c0c09e3">&#9670;&nbsp;</a></span>Msg() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Msg.Msg </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>msg</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classConnection.html">Connection</a>&#160;</td>
<td class="paramname"><em>connection</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>: Message type </td></tr>
<tr><td class="paramname">msg</td><td>: Message content </td></tr>
<tr><td class="paramname">connection</td><td>: network connection associated with the message </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1350206b00860e9f672a52986beba1e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1350206b00860e9f672a52986beba1e4">&#9670;&nbsp;</a></span>Msg() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Msg.Msg </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Object&#160;</td>
<td class="paramname"><em>userData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>: Message type </td></tr>
<tr><td class="paramname">userData</td><td>: Any arbitrary data to be associated with message </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8cc3de09d885bfeff9e41a534c0c09e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cc3de09d885bfeff9e41a534c0c09e3">&#9670;&nbsp;</a></span>Msg() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Msg.Msg </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>msg</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classConnection.html">Connection</a>&#160;</td>
<td class="paramname"><em>connection</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>: Message type </td></tr>
<tr><td class="paramname">msg</td><td>: Message content </td></tr>
<tr><td class="paramname">connection</td><td>: network connection associated with the message </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1350206b00860e9f672a52986beba1e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1350206b00860e9f672a52986beba1e4">&#9670;&nbsp;</a></span>Msg() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Msg.Msg </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Object&#160;</td>
<td class="paramname"><em>userData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>: Message type </td></tr>
<tr><td class="paramname">userData</td><td>: Any arbitrary data to be associated with message </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a1d7d8181a9490b9b14eebb7c5ce4016e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d7d8181a9490b9b14eebb7c5ce4016e">&#9670;&nbsp;</a></span>getDataInputStream() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">DataInputStream Msg.getDataInputStream </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the input stream to read the message content.</p>
<dl class="section return"><dt>Returns</dt><dd>Input stream of content of the message </dd></dl>
</div>
</div>
<a id="a1d7d8181a9490b9b14eebb7c5ce4016e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d7d8181a9490b9b14eebb7c5ce4016e">&#9670;&nbsp;</a></span>getDataInputStream() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">DataInputStream Msg.getDataInputStream </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the input stream to read the message content.</p>
<dl class="section return"><dt>Returns</dt><dd>Input stream of content of the message </dd></dl>
</div>
</div>
<a id="a10fc1e0ebd649614f7b573c6b5820fe1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10fc1e0ebd649614f7b573c6b5820fe1">&#9670;&nbsp;</a></span>getDataOutputStream() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">DataOutputStream Msg.getDataOutputStream </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the output stream to write the message content.</p>
<dl class="section return"><dt>Returns</dt><dd>Output stream for content of the message </dd></dl>
</div>
</div>
<a id="a10fc1e0ebd649614f7b573c6b5820fe1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10fc1e0ebd649614f7b573c6b5820fe1">&#9670;&nbsp;</a></span>getDataOutputStream() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">DataOutputStream Msg.getDataOutputStream </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the output stream to write the message content.</p>
<dl class="section return"><dt>Returns</dt><dd>Output stream for content of the message </dd></dl>
</div>
</div>
<a id="ae6d18cf6a15045107103de719bc59964"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6d18cf6a15045107103de719bc59964">&#9670;&nbsp;</a></span>prepare() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Msg.prepare </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Call this method when done writing to the output stream of the message to prepare the message to be sent out.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae6d18cf6a15045107103de719bc59964"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6d18cf6a15045107103de719bc59964">&#9670;&nbsp;</a></span>prepare() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Msg.prepare </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Call this method when done writing to the output stream of the message to prepare the message to be sent out.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8e64149c518f7fc14fe154f3851861b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e64149c518f7fc14fe154f3851861b5">&#9670;&nbsp;</a></span>resetDataInputStream() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Msg.resetDataInputStream </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Resets the input stream of the message </p>
</div>
</div>
<a id="a8e64149c518f7fc14fe154f3851861b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e64149c518f7fc14fe154f3851861b5">&#9670;&nbsp;</a></span>resetDataInputStream() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Msg.resetDataInputStream </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Resets the input stream of the message </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/Msg.java</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.13
</small></address>
</body>
</html>
digraph "Msg"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="Msg",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" connection" ,fontname="Helvetica"];
Node2 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ,fontname="Helvetica"];
Node3 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ,fontname="Helvetica"];
Node4 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ,fontname="Helvetica"];
Node5 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ,fontname="Helvetica"];
Node6 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ,fontname="Helvetica"];
Node7 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
0d019a2ed2d477c1aec7475153a70ed2
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">RollingHash Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classRollingHash.html">RollingHash</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29">getHash</a>()</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29">getHash</a>()</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4">reset</a>()</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4">reset</a>()</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRollingHash.html#abc955cf95e6aec64f808ef776fe43266">RollingHash</a>(int blockSize)</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classRollingHash.html#abc955cf95e6aec64f808ef776fe43266">RollingHash</a>(int blockSize)</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f">update</a>(byte b)</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classRollingHash.html#af25915532b88a26522320f5d18c55dde">update</a>(byte inByte, byte outByte)</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRollingHash.html#a364014385c2a6b5ecc2a9d772a697ee1">update</a>(byte[] arr, int offset, int len)</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f">update</a>(byte b)</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRollingHash.html#af25915532b88a26522320f5d18c55dde">update</a>(byte inByte, byte outByte)</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classRollingHash.html#a364014385c2a6b5ecc2a9d772a697ee1">update</a>(byte[] arr, int offset, int len)</td><td class="entry"><a class="el" href="classRollingHash.html">RollingHash</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: RollingHash Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classRollingHash-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">RollingHash Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<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:abc955cf95e6aec64f808ef776fe43266"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#abc955cf95e6aec64f808ef776fe43266">RollingHash</a> (int blockSize)</td></tr>
<tr class="separator:abc955cf95e6aec64f808ef776fe43266"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1c0c44cc72f3c0d91a4a3b1eb754a29"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29">getHash</a> ()</td></tr>
<tr class="separator:ae1c0c44cc72f3c0d91a4a3b1eb754a29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08f1b2a90304c01777bc193cbfc12fb4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4">reset</a> ()</td></tr>
<tr class="separator:a08f1b2a90304c01777bc193cbfc12fb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acccfdc00e40ba84faab1f89454acdb5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f">update</a> (byte b)</td></tr>
<tr class="separator:acccfdc00e40ba84faab1f89454acdb5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af25915532b88a26522320f5d18c55dde"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#af25915532b88a26522320f5d18c55dde">update</a> (byte inByte, byte outByte)</td></tr>
<tr class="separator:af25915532b88a26522320f5d18c55dde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a364014385c2a6b5ecc2a9d772a697ee1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#a364014385c2a6b5ecc2a9d772a697ee1">update</a> (byte[] arr, int offset, int len)</td></tr>
<tr class="separator:a364014385c2a6b5ecc2a9d772a697ee1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc955cf95e6aec64f808ef776fe43266"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#abc955cf95e6aec64f808ef776fe43266">RollingHash</a> (int blockSize)</td></tr>
<tr class="separator:abc955cf95e6aec64f808ef776fe43266"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1c0c44cc72f3c0d91a4a3b1eb754a29"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29">getHash</a> ()</td></tr>
<tr class="separator:ae1c0c44cc72f3c0d91a4a3b1eb754a29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08f1b2a90304c01777bc193cbfc12fb4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4">reset</a> ()</td></tr>
<tr class="separator:a08f1b2a90304c01777bc193cbfc12fb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acccfdc00e40ba84faab1f89454acdb5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f">update</a> (byte b)</td></tr>
<tr class="separator:acccfdc00e40ba84faab1f89454acdb5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af25915532b88a26522320f5d18c55dde"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#af25915532b88a26522320f5d18c55dde">update</a> (byte inByte, byte outByte)</td></tr>
<tr class="separator:af25915532b88a26522320f5d18c55dde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a364014385c2a6b5ecc2a9d772a697ee1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRollingHash.html#a364014385c2a6b5ecc2a9d772a697ee1">update</a> (byte[] arr, int offset, int len)</td></tr>
<tr class="separator:a364014385c2a6b5ecc2a9d772a697ee1"><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>Contains the rolling hash of a sequence of bytes. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="abc955cf95e6aec64f808ef776fe43266"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc955cf95e6aec64f808ef776fe43266">&#9670;&nbsp;</a></span>RollingHash() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">RollingHash.RollingHash </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>blockSize</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">blockSize</td><td>: size of byte sequence </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abc955cf95e6aec64f808ef776fe43266"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc955cf95e6aec64f808ef776fe43266">&#9670;&nbsp;</a></span>RollingHash() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">RollingHash.RollingHash </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>blockSize</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">blockSize</td><td>: size of byte sequence </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae1c0c44cc72f3c0d91a4a3b1eb754a29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1c0c44cc72f3c0d91a4a3b1eb754a29">&#9670;&nbsp;</a></span>getHash() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int RollingHash.getHash </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>: current value of hash </dd></dl>
</div>
</div>
<a id="ae1c0c44cc72f3c0d91a4a3b1eb754a29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1c0c44cc72f3c0d91a4a3b1eb754a29">&#9670;&nbsp;</a></span>getHash() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int RollingHash.getHash </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>: current value of hash </dd></dl>
</div>
</div>
<a id="a08f1b2a90304c01777bc193cbfc12fb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08f1b2a90304c01777bc193cbfc12fb4">&#9670;&nbsp;</a></span>reset() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void RollingHash.reset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Resets the hash value to 0. </p>
</div>
</div>
<a id="a08f1b2a90304c01777bc193cbfc12fb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08f1b2a90304c01777bc193cbfc12fb4">&#9670;&nbsp;</a></span>reset() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void RollingHash.reset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Resets the hash value to 0. </p>
</div>
</div>
<a id="acccfdc00e40ba84faab1f89454acdb5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acccfdc00e40ba84faab1f89454acdb5f">&#9670;&nbsp;</a></span>update() <span class="overload">[1/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void RollingHash.update </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>b</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add the given byte to the sequence and update the hash.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">b</td><td>: byte to be added </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="acccfdc00e40ba84faab1f89454acdb5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acccfdc00e40ba84faab1f89454acdb5f">&#9670;&nbsp;</a></span>update() <span class="overload">[2/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void RollingHash.update </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>b</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add the given byte to the sequence and update the hash.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">b</td><td>: byte to be added </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af25915532b88a26522320f5d18c55dde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af25915532b88a26522320f5d18c55dde">&#9670;&nbsp;</a></span>update() <span class="overload">[3/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void RollingHash.update </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>inByte</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>outByte</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add one byte and delete another from the sequence and update the hash.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inByte</td><td>: byte to be added </td></tr>
<tr><td class="paramname">outByte</td><td>: byte to be deleted </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af25915532b88a26522320f5d18c55dde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af25915532b88a26522320f5d18c55dde">&#9670;&nbsp;</a></span>update() <span class="overload">[4/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void RollingHash.update </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>inByte</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>outByte</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add one byte and delete another from the sequence and update the hash.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inByte</td><td>: byte to be added </td></tr>
<tr><td class="paramname">outByte</td><td>: byte to be deleted </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a364014385c2a6b5ecc2a9d772a697ee1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a364014385c2a6b5ecc2a9d772a697ee1">&#9670;&nbsp;</a></span>update() <span class="overload">[5/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void RollingHash.update </td>
<td>(</td>
<td class="paramtype">byte []&#160;</td>
<td class="paramname"><em>arr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add len number of bytes from arr starting from offset to the sequence and update the hash.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arr</td><td>: array containing bytes </td></tr>
<tr><td class="paramname">offset</td><td>: starting position </td></tr>
<tr><td class="paramname">len</td><td>: number of bytes to add </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a364014385c2a6b5ecc2a9d772a697ee1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a364014385c2a6b5ecc2a9d772a697ee1">&#9670;&nbsp;</a></span>update() <span class="overload">[6/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void RollingHash.update </td>
<td>(</td>
<td class="paramtype">byte []&#160;</td>
<td class="paramname"><em>arr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add len number of bytes from arr starting from offset to the sequence and update the hash.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arr</td><td>: array containing bytes </td></tr>
<tr><td class="paramname">offset</td><td>: starting position </td></tr>
<tr><td class="paramname">len</td><td>: number of bytes to add </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/RollingHash.java</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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Server Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classServer.html">Server</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>main</b>(String[] args) (defined in <a class="el" href="classServer.html">Server</a>)</td><td class="entry"><a class="el" href="classServer.html">Server</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Server Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classServer-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Server Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aa3fbc6151e35b67da9fc169408539cf6"><td class="memItemLeft" align="right" valign="top"><a id="aa3fbc6151e35b67da9fc169408539cf6"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>main</b> (String[] args) throws IOException </td></tr>
<tr class="separator:aa3fbc6151e35b67da9fc169408539cf6"><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>Contains the main method which creates and starts <a class="el" href="classMainThread.html">MainThread</a> of the server. </p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/Server.java</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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">SetIntervalFrame Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classSetIntervalFrame.html">SetIntervalFrame</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SetIntervalFrame</b>(LinkedBlockingQueue&lt; Msg &gt; inbox) (defined in <a class="el" href="classSetIntervalFrame.html">SetIntervalFrame</a>)</td><td class="entry"><a class="el" href="classSetIntervalFrame.html">SetIntervalFrame</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: SetIntervalFrame Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classSetIntervalFrame-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">SetIntervalFrame Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for SetIntervalFrame:</div>
<div class="dyncontent">
<div class="center"><img src="classSetIntervalFrame__inherit__graph.png" border="0" usemap="#SetIntervalFrame_inherit__map" alt="Inheritance graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for SetIntervalFrame:</div>
<div class="dyncontent">
<div class="center"><img src="classSetIntervalFrame__coll__graph.png" border="0" usemap="#SetIntervalFrame_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 1 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:a7fa0e676d4d4c6aa8a2a846d268cf33f"><td class="memItemLeft" align="right" valign="top"><a id="a7fa0e676d4d4c6aa8a2a846d268cf33f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>SetIntervalFrame</b> (LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt; inbox)</td></tr>
<tr class="separator:a7fa0e676d4d4c6aa8a2a846d268cf33f"><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>GUI for setting auto sync interval </p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>Client/SetIntervalFrame.java</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.13
</small></address>
</body>
</html>
digraph "SetIntervalFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node2 [label="SetIntervalFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" ok" ,fontname="Helvetica"];
Node4 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" interval" ,fontname="Helvetica"];
Node5 [label="JTextField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node6 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ,fontname="Helvetica"];
Node7 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" label" ,fontname="Helvetica"];
Node8 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
b158951f03177b42edf01d2d55321e67
\ No newline at end of file
digraph "SetIntervalFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node0 [label="SetIntervalFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
f2b3cb98e6859d5f7b0c830ebec0dd36
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">SignupFrame Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classSignupFrame.html">SignupFrame</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classSignupFrame.html#a1d28ba01c42c4e007ec0214adc175484">updateOutput</a>(String msg)</td><td class="entry"><a class="el" href="classSignupFrame.html">SignupFrame</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: SignupFrame Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classSignupFrame-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">SignupFrame Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for SignupFrame:</div>
<div class="dyncontent">
<div class="center"><img src="classSignupFrame__inherit__graph.png" border="0" usemap="#SignupFrame_inherit__map" alt="Inheritance graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for SignupFrame:</div>
<div class="dyncontent">
<div class="center"><img src="classSignupFrame__coll__graph.png" border="0" usemap="#SignupFrame_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 1 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:a1d28ba01c42c4e007ec0214adc175484"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSignupFrame.html#a1d28ba01c42c4e007ec0214adc175484">updateOutput</a> (String msg)</td></tr>
<tr class="separator:a1d28ba01c42c4e007ec0214adc175484"><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>GUI for the signup form. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a1d28ba01c42c4e007ec0214adc175484"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d28ba01c42c4e007ec0214adc175484">&#9670;&nbsp;</a></span>updateOutput()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void SignupFrame.updateOutput </td>
<td>(</td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Update the output text.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: new output text </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Client/SignupFrame.java</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.13
</small></address>
</body>
</html>
digraph "SignupFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node2 [label="SignupFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" signup\ngotoLogin" ,fontname="Helvetica"];
Node4 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" output" ,fontname="Helvetica"];
Node5 [label="JTextArea",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" username" ,fontname="Helvetica"];
Node6 [label="JTextField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ,fontname="Helvetica"];
Node7 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" password" ,fontname="Helvetica"];
Node8 [label="JPasswordField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node9 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ,fontname="Helvetica"];
Node9 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node10 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" usernameLabel\npasswordLabel" ,fontname="Helvetica"];
Node10 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
508c4c9156d59e28502ce3bc894beaab
\ No newline at end of file
digraph "SignupFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node0 [label="SignupFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
da25774f19eab4f4a4290a4f7006c3f8
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Sync Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classSync.html">Sync</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36">applyDelta</a>(File baseFile, File deltaFile, File targetFile)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36">applyDelta</a>(File baseFile, File deltaFile, File targetFile)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classSync.html#a14cc1491aaa96c88a88389d86691bdc5">generateDeltaFile</a>(File source, File sigFile, File deltaFile)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classSync.html#a14cc1491aaa96c88a88389d86691bdc5">generateDeltaFile</a>(File source, File sigFile, File deltaFile)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classSync.html#a13b140ebee4ce707cb19b748ea12b217">generateSigFile</a>(File source, File sigFile)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classSync.html#a13b140ebee4ce707cb19b748ea12b217">generateSigFile</a>(File source, File sigFile)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a">loadSigFile</a>(File sigFile)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a">loadSigFile</a>(File sigFile)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Sync</b>() (defined in <a class="el" href="classSync.html">Sync</a>)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Sync</b>() (defined in <a class="el" href="classSync.html">Sync</a>)</td><td class="entry"><a class="el" href="classSync.html">Sync</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Sync Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classSync-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Sync Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<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:a1ce0c0e5115c2eadf6934945c7ee326a"><td class="memItemLeft" align="right" valign="top">Map&lt; Integer, Map&lt; <a class="el" href="classBlockSig.html">BlockSig</a>, List&lt; Integer &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a">loadSigFile</a> (File sigFile) throws IOException, InvalidSignatureFile </td></tr>
<tr class="separator:a1ce0c0e5115c2eadf6934945c7ee326a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13b140ebee4ce707cb19b748ea12b217"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSync.html#a13b140ebee4ce707cb19b748ea12b217">generateSigFile</a> (File source, File sigFile) throws IOException, DigestException </td></tr>
<tr class="separator:a13b140ebee4ce707cb19b748ea12b217"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14cc1491aaa96c88a88389d86691bdc5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSync.html#a14cc1491aaa96c88a88389d86691bdc5">generateDeltaFile</a> (File source, File sigFile, File deltaFile) throws IOException, InvalidSignatureFile </td></tr>
<tr class="separator:a14cc1491aaa96c88a88389d86691bdc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8cd24ed7648c85b21fdc31c9ee19c36"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36">applyDelta</a> (File baseFile, File deltaFile, File targetFile) throws IOException </td></tr>
<tr class="separator:ae8cd24ed7648c85b21fdc31c9ee19c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ce0c0e5115c2eadf6934945c7ee326a"><td class="memItemLeft" align="right" valign="top">Map&lt; Integer, Map&lt; <a class="el" href="classBlockSig.html">BlockSig</a>, List&lt; Integer &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a">loadSigFile</a> (File sigFile) throws IOException, InvalidSignatureFile </td></tr>
<tr class="separator:a1ce0c0e5115c2eadf6934945c7ee326a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13b140ebee4ce707cb19b748ea12b217"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSync.html#a13b140ebee4ce707cb19b748ea12b217">generateSigFile</a> (File source, File sigFile) throws IOException, DigestException </td></tr>
<tr class="separator:a13b140ebee4ce707cb19b748ea12b217"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14cc1491aaa96c88a88389d86691bdc5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSync.html#a14cc1491aaa96c88a88389d86691bdc5">generateDeltaFile</a> (File source, File sigFile, File deltaFile) throws IOException, InvalidSignatureFile </td></tr>
<tr class="separator:a14cc1491aaa96c88a88389d86691bdc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8cd24ed7648c85b21fdc31c9ee19c36"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36">applyDelta</a> (File baseFile, File deltaFile, File targetFile) throws IOException </td></tr>
<tr class="separator:ae8cd24ed7648c85b21fdc31c9ee19c36"><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>This class implements the sync algorithm. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ae8cd24ed7648c85b21fdc31c9ee19c36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8cd24ed7648c85b21fdc31c9ee19c36">&#9670;&nbsp;</a></span>applyDelta() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Sync.applyDelta </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>baseFile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>deltaFile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>targetFile</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Apply the given delta file on the given base file to create output file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">baseFile</td><td>: file on which the delta file will be applied </td></tr>
<tr><td class="paramname">deltaFile</td><td>: delta file to apply </td></tr>
<tr><td class="paramname">targetFile</td><td>: output file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae8cd24ed7648c85b21fdc31c9ee19c36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8cd24ed7648c85b21fdc31c9ee19c36">&#9670;&nbsp;</a></span>applyDelta() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Sync.applyDelta </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>baseFile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>deltaFile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>targetFile</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Apply the given delta file on the given base file to create output file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">baseFile</td><td>: file on which the delta file will be applied </td></tr>
<tr><td class="paramname">deltaFile</td><td>: delta file to apply </td></tr>
<tr><td class="paramname">targetFile</td><td>: output file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a14cc1491aaa96c88a88389d86691bdc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14cc1491aaa96c88a88389d86691bdc5">&#9670;&nbsp;</a></span>generateDeltaFile() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Sync.generateDeltaFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>sigFile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>deltaFile</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException, InvalidSignatureFile</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate delta file given a source file and a signature file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">source</td><td>: file from which delta file will be generated </td></tr>
<tr><td class="paramname">sigFile</td><td>: signature file to be used </td></tr>
<tr><td class="paramname">deltaFile</td><td>: output delta file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">InvalidSignatureFile</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a14cc1491aaa96c88a88389d86691bdc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14cc1491aaa96c88a88389d86691bdc5">&#9670;&nbsp;</a></span>generateDeltaFile() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Sync.generateDeltaFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>sigFile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>deltaFile</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException, InvalidSignatureFile</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate delta file given a source file and a signature file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">source</td><td>: file from which delta file will be generated </td></tr>
<tr><td class="paramname">sigFile</td><td>: signature file to be used </td></tr>
<tr><td class="paramname">deltaFile</td><td>: output delta file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">InvalidSignatureFile</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a13b140ebee4ce707cb19b748ea12b217"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a13b140ebee4ce707cb19b748ea12b217">&#9670;&nbsp;</a></span>generateSigFile() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Sync.generateSigFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>sigFile</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException, DigestException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate signature file from source file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">source</td><td>: file from which the signature file will be generated </td></tr>
<tr><td class="paramname">sigFile</td><td>: output signature file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">DigestException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a13b140ebee4ce707cb19b748ea12b217"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a13b140ebee4ce707cb19b748ea12b217">&#9670;&nbsp;</a></span>generateSigFile() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Sync.generateSigFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>sigFile</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> throws IOException, DigestException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate signature file from source file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">source</td><td>: file from which the signature file will be generated </td></tr>
<tr><td class="paramname">sigFile</td><td>: output signature file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">DigestException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1ce0c0e5115c2eadf6934945c7ee326a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ce0c0e5115c2eadf6934945c7ee326a">&#9670;&nbsp;</a></span>loadSigFile() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Map&lt;Integer, Map&lt;<a class="el" href="classBlockSig.html">BlockSig</a>, List&lt;Integer&gt; &gt; &gt; Sync.loadSigFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>sigFile</em></td><td>)</td>
<td> throws IOException, InvalidSignatureFile</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Load the signatures from the signature file into memory. This function returns a hashmap with weak hash as keys and another hashmap as values. Inner hashmap is useful for quickly finding whether a block signature with a particular weak hash and strong hash exists. It has block signature as keys and a list of block ids as values.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sigFile</td><td>: signature file to be loaded </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>: map representing the signature file </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">InvalidSignatureFile</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1ce0c0e5115c2eadf6934945c7ee326a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ce0c0e5115c2eadf6934945c7ee326a">&#9670;&nbsp;</a></span>loadSigFile() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Map&lt;Integer, Map&lt;<a class="el" href="classBlockSig.html">BlockSig</a>, List&lt;Integer&gt; &gt; &gt; Sync.loadSigFile </td>
<td>(</td>
<td class="paramtype">File&#160;</td>
<td class="paramname"><em>sigFile</em></td><td>)</td>
<td> throws IOException, InvalidSignatureFile</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Load the signatures from the signature file into memory. This function returns a hashmap with weak hash as keys and another hashmap as values. Inner hashmap is useful for quickly finding whether a block signature with a particular weak hash and strong hash exists. It has block signature as keys and a list of block ids as values.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sigFile</td><td>: signature file to be loaded </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>: map representing the signature file </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">InvalidSignatureFile</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/Sync.java</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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">SyncThread Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classSyncThread.html">SyncThread</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classSyncThread.html#aa25c537fde786f3663e7a28732dcaccd">handleSyncDownReq</a>(Msg msg)</td><td class="entry"><a class="el" href="classSyncThread.html">SyncThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classSyncThread.html#adcd9c7f9699d3520ddf103dc97a091a8">handleSyncUpReq</a>(Msg msg)</td><td class="entry"><a class="el" href="classSyncThread.html">SyncThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classSyncThread.html#ac9c2068cc13bc92cd105c32d4b4444da">processDeltaFile</a>(Msg msg)</td><td class="entry"><a class="el" href="classSyncThread.html">SyncThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classSyncThread.html#a360f04de98c8a06ea9853d6b2a017b2b">processSigFile</a>(Msg msg)</td><td class="entry"><a class="el" href="classSyncThread.html">SyncThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classSyncThread.html#a27d72f6ba2ad8eee0248aee1b2646e5e">start</a>()</td><td class="entry"><a class="el" href="classSyncThread.html">SyncThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classSyncThread.html#aa850affc9978714a72acffe1233f5aa2">SyncThread</a>(LinkedBlockingQueue&lt; Msg &gt; mainThreadInbox, String parentDir, String userName)</td><td class="entry"><a class="el" href="classSyncThread.html">SyncThread</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: SyncThread Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classSyncThread-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">SyncThread Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Collaboration diagram for SyncThread:</div>
<div class="dyncontent">
<div class="center"><img src="classSyncThread__coll__graph.png" border="0" usemap="#SyncThread_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:aa850affc9978714a72acffe1233f5aa2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSyncThread.html#aa850affc9978714a72acffe1233f5aa2">SyncThread</a> (LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt; mainThreadInbox, String parentDir, String userName)</td></tr>
<tr class="separator:aa850affc9978714a72acffe1233f5aa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcd9c7f9699d3520ddf103dc97a091a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSyncThread.html#adcd9c7f9699d3520ddf103dc97a091a8">handleSyncUpReq</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException, DigestException </td></tr>
<tr class="separator:adcd9c7f9699d3520ddf103dc97a091a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa25c537fde786f3663e7a28732dcaccd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSyncThread.html#aa25c537fde786f3663e7a28732dcaccd">handleSyncDownReq</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException </td></tr>
<tr class="separator:aa25c537fde786f3663e7a28732dcaccd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a360f04de98c8a06ea9853d6b2a017b2b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSyncThread.html#a360f04de98c8a06ea9853d6b2a017b2b">processSigFile</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException, InvalidSignatureFile </td></tr>
<tr class="separator:a360f04de98c8a06ea9853d6b2a017b2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9c2068cc13bc92cd105c32d4b4444da"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSyncThread.html#ac9c2068cc13bc92cd105c32d4b4444da">processDeltaFile</a> (<a class="el" href="classMsg.html">Msg</a> msg) throws IOException, InvalidSignatureFile </td></tr>
<tr class="separator:ac9c2068cc13bc92cd105c32d4b4444da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27d72f6ba2ad8eee0248aee1b2646e5e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSyncThread.html#a27d72f6ba2ad8eee0248aee1b2646e5e">start</a> ()</td></tr>
<tr class="separator:a27d72f6ba2ad8eee0248aee1b2646e5e"><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>This objects represents the server side thread that handles all the sync operations of all the machines belonging to the same user. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa850affc9978714a72acffe1233f5aa2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa850affc9978714a72acffe1233f5aa2">&#9670;&nbsp;</a></span>SyncThread()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">SyncThread.SyncThread </td>
<td>(</td>
<td class="paramtype">LinkedBlockingQueue&lt; <a class="el" href="classMsg.html">Msg</a> &gt;&#160;</td>
<td class="paramname"><em>mainThreadInbox</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>parentDir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">String&#160;</td>
<td class="paramname"><em>userName</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mainThreadInbox</td><td>: main thread inbox used to send messages to main thread </td></tr>
<tr><td class="paramname">parentDir</td><td>: working directory for the thread </td></tr>
<tr><td class="paramname">userName</td><td>: username of the the user this thread will handle </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa25c537fde786f3663e7a28732dcaccd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa25c537fde786f3663e7a28732dcaccd">&#9670;&nbsp;</a></span>handleSyncDownReq()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void SyncThread.handleSyncDownReq </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Handles sync down request from client.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: message containing the request </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">DigestException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="adcd9c7f9699d3520ddf103dc97a091a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adcd9c7f9699d3520ddf103dc97a091a8">&#9670;&nbsp;</a></span>handleSyncUpReq()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void SyncThread.handleSyncUpReq </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException, DigestException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Handles sync up request from client.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: message containing the request </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">DigestException</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac9c2068cc13bc92cd105c32d4b4444da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac9c2068cc13bc92cd105c32d4b4444da">&#9670;&nbsp;</a></span>processDeltaFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void SyncThread.processDeltaFile </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException, InvalidSignatureFile</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This is called when server receives a part of the delta file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: contains a part of the delta file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">InvalidSignatureFile</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a360f04de98c8a06ea9853d6b2a017b2b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a360f04de98c8a06ea9853d6b2a017b2b">&#9670;&nbsp;</a></span>processSigFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void SyncThread.processSigFile </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classMsg.html">Msg</a>&#160;</td>
<td class="paramname"><em>msg</em></td><td>)</td>
<td> throws IOException, InvalidSignatureFile</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This is called when server receives a part of the signature file.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>: contains a part of the signature file </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">IOException</td><td></td></tr>
<tr><td class="paramname">InvalidSignatureFile</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a27d72f6ba2ad8eee0248aee1b2646e5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27d72f6ba2ad8eee0248aee1b2646e5e">&#9670;&nbsp;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void SyncThread.start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts a new thread that waits for the messages from client and processes them. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Server/SyncThread.java</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.13
</small></address>
</body>
</html>
digraph "SyncThread"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="SyncThread",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox\nmainThreadInbox" ,fontname="Helvetica"];
Node2 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncRecipients\nclients" ,fontname="Helvetica"];
Node3 [label="ArrayList\< Connection \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" lock" ,fontname="Helvetica"];
Node4 [label="Lock",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncSource" ,fontname="Helvetica"];
Node5 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node6 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ,fontname="Helvetica"];
Node6 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node2 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ,fontname="Helvetica"];
Node7 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ,fontname="Helvetica"];
Node7 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ,fontname="Helvetica"];
Node8 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node9 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ,fontname="Helvetica"];
Node9 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
eaaf081a432880d0ab6a309ff28c756f
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Class Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_c">c</a>&#160;|&#160;<a class="qindex" href="#letter_d">d</a>&#160;|&#160;<a class="qindex" href="#letter_f">f</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;d&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classLoginFrame.html">LoginFrame</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;m&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
<tr><td valign="top"><a class="el" href="classBlockSig.html">BlockSig</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classDatabase.html">Database</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classServer.html">Server</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_f"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;f&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classMainFrame.html">MainFrame</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classSetIntervalFrame.html">SetIntervalFrame</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="classMainThread.html">MainThread</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classSignupFrame.html">SignupFrame</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="classClient.html">Client</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classFileOps.html">FileOps</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classMsg.html">Msg</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classSync.html">Sync</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="classConnection.html">Connection</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;r&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classSyncThread.html">SyncThread</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td></td><td valign="top"><a class="el" href="classListeningSocket.html">ListeningSocket</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classRollingHash.html">RollingHash</a>&#160;&#160;&#160;</td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_c">c</a>&#160;|&#160;<a class="qindex" href="#letter_d">d</a>&#160;|&#160;<a class="qindex" href="#letter_f">f</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a></div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Server Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1a445cb237d74f7a5f8d11ec3b0585cc.html">Server</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Server Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
</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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Client Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_922c588100a187620fdc1533bc178f73.html">Client</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Client Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
</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.13
</small></address>
</body>
</html>
/* The standard CSS for doxygen 1.8.13 */
body, table, div, p, dl {
font: 400 14px/22px Roboto,sans-serif;
}
p.reference, p.definition {
font: 400 14px/22px Roboto,sans-serif;
}
/* @group Heading Levels */
h1.groupheader {
font-size: 150%;
}
.title {
font: 400 14px/28px Roboto,sans-serif;
font-size: 150%;
font-weight: bold;
margin: 10px 2px;
}
h2.groupheader {
border-bottom: 1px solid #879ECB;
color: #354C7B;
font-size: 150%;
font-weight: normal;
margin-top: 1.75em;
padding-top: 8px;
padding-bottom: 4px;
width: 100%;
}
h3.groupheader {
font-size: 100%;
}
h1, h2, h3, h4, h5, h6 {
-webkit-transition: text-shadow 0.5s linear;
-moz-transition: text-shadow 0.5s linear;
-ms-transition: text-shadow 0.5s linear;
-o-transition: text-shadow 0.5s linear;
transition: text-shadow 0.5s linear;
margin-right: 15px;
}
h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
text-shadow: 0 0 15px cyan;
}
dt {
font-weight: bold;
}
div.multicol {
-moz-column-gap: 1em;
-webkit-column-gap: 1em;
-moz-column-count: 3;
-webkit-column-count: 3;
}
p.startli, p.startdd {
margin-top: 2px;
}
p.starttd {
margin-top: 0px;
}
p.endli {
margin-bottom: 0px;
}
p.enddd {
margin-bottom: 4px;
}
p.endtd {
margin-bottom: 2px;
}
/* @end */
caption {
font-weight: bold;
}
span.legend {
font-size: 70%;
text-align: center;
}
h3.version {
font-size: 90%;
text-align: center;
}
div.qindex, div.navtab{
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
}
div.qindex, div.navpath {
width: 100%;
line-height: 140%;
}
div.navtab {
margin-right: 15px;
}
/* @group Link Styling */
a {
color: #3D578C;
font-weight: normal;
text-decoration: none;
}
.contents a:visited {
color: #4665A2;
}
a:hover {
text-decoration: underline;
}
a.qindex {
font-weight: bold;
}
a.qindexHL {
font-weight: bold;
background-color: #9CAFD4;
color: #ffffff;
border: 1px double #869DCA;
}
.contents a.qindexHL:visited {
color: #ffffff;
}
a.el {
font-weight: bold;
}
a.elRef {
}
a.code, a.code:visited, a.line, a.line:visited {
color: #4665A2;
}
a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
color: #4665A2;
}
/* @end */
dl.el {
margin-left: -1cm;
}
pre.fragment {
border: 1px solid #C4CFE5;
background-color: #FBFCFD;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
overflow: auto;
word-wrap: break-word;
font-size: 9pt;
line-height: 125%;
font-family: monospace, fixed;
font-size: 105%;
}
div.fragment {
padding: 0px;
margin: 4px 8px 4px 2px;
background-color: #FBFCFD;
border: 1px solid #C4CFE5;
}
div.line {
font-family: monospace, fixed;
font-size: 13px;
min-height: 13px;
line-height: 1.0;
text-wrap: unrestricted;
white-space: -moz-pre-wrap; /* Moz */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: pre-wrap; /* CSS3 */
word-wrap: break-word; /* IE 5.5+ */
text-indent: -53px;
padding-left: 53px;
padding-bottom: 0px;
margin: 0px;
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
div.line:after {
content:"\000A";
white-space: pre;
}
div.line.glow {
background-color: cyan;
box-shadow: 0 0 10px cyan;
}
span.lineno {
padding-right: 4px;
text-align: right;
border-right: 2px solid #0F0;
background-color: #E8E8E8;
white-space: pre;
}
span.lineno a {
background-color: #D8D8D8;
}
span.lineno a:hover {
background-color: #C8C8C8;
}
.lineno {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
div.ah, span.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px;
padding: 0.2em;
border: solid thin #333;
border-radius: 0.5em;
-webkit-border-radius: .5em;
-moz-border-radius: .5em;
box-shadow: 2px 2px 3px #999;
-webkit-box-shadow: 2px 2px 3px #999;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
}
div.classindex ul {
list-style: none;
padding-left: 0;
}
div.classindex span.ai {
display: inline-block;
}
div.groupHeader {
margin-left: 16px;
margin-top: 12px;
font-weight: bold;
}
div.groupText {
margin-left: 16px;
font-style: italic;
}
body {
background-color: white;
color: black;
margin: 0;
}
div.contents {
margin-top: 10px;
margin-left: 12px;
margin-right: 8px;
}
td.indexkey {
background-color: #EBEFF6;
font-weight: bold;
border: 1px solid #C4CFE5;
margin: 2px 0px 2px 0;
padding: 2px 10px;
white-space: nowrap;
vertical-align: top;
}
td.indexvalue {
background-color: #EBEFF6;
border: 1px solid #C4CFE5;
padding: 2px 10px;
margin: 2px 0px;
}
tr.memlist {
background-color: #EEF1F7;
}
p.formulaDsp {
text-align: center;
}
img.formulaDsp {
}
img.formulaInl {
vertical-align: middle;
}
div.center {
text-align: center;
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
div.center img {
border: 0px;
}
address.footer {
text-align: right;
padding-right: 12px;
}
img.footer {
border: 0px;
vertical-align: middle;
}
/* @group Code Colorization */
span.keyword {
color: #008000
}
span.keywordtype {
color: #604020
}
span.keywordflow {
color: #e08000
}
span.comment {
color: #800000
}
span.preprocessor {
color: #806020
}
span.stringliteral {
color: #002080
}
span.charliteral {
color: #008080
}
span.vhdldigit {
color: #ff00ff
}
span.vhdlchar {
color: #000000
}
span.vhdlkeyword {
color: #700070
}
span.vhdllogic {
color: #ff0000
}
blockquote {
background-color: #F7F8FB;
border-left: 2px solid #9CAFD4;
margin: 0 24px 0 4px;
padding: 0 12px 0 16px;
}
/* @end */
/*
.search {
color: #003399;
font-weight: bold;
}
form.search {
margin-bottom: 0px;
margin-top: 0px;
}
input.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
*/
td.tiny {
font-size: 75%;
}
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #A3B4D7;
}
th.dirtab {
background: #EBEFF6;
font-weight: bold;
}
hr {
height: 0px;
border: none;
border-top: 1px solid #4A6AAA;
}
hr.footer {
height: 1px;
}
/* @group Member Descriptions */
table.memberdecls {
border-spacing: 0px;
padding: 0px;
}
.memberdecls td, .fieldtable tr {
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
.memberdecls td.glow, .fieldtable tr.glow {
background-color: cyan;
box-shadow: 0 0 15px cyan;
}
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
background-color: #F9FAFC;
border: none;
margin: 4px;
padding: 1px 0 0 8px;
}
.mdescLeft, .mdescRight {
padding: 0px 8px 4px 8px;
color: #555;
}
.memSeparator {
border-bottom: 1px solid #DEE4F0;
line-height: 1px;
margin: 0px;
padding: 0px;
}
.memItemLeft, .memTemplItemLeft {
white-space: nowrap;
}
.memItemRight {
width: 100%;
}
.memTemplParams {
color: #4665A2;
white-space: nowrap;
font-size: 80%;
}
/* @end */
/* @group Member Details */
/* Styles for detailed member documentation */
.memtitle {
padding: 8px;
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
border-top-right-radius: 4px;
border-top-left-radius: 4px;
margin-bottom: -1px;
background-image: url('nav_f.png');
background-repeat: repeat-x;
background-color: #E2E8F2;
line-height: 1.25;
font-weight: 300;
float:left;
}
.permalink
{
font-size: 65%;
display: inline-block;
vertical-align: middle;
}
.memtemplate {
font-size: 80%;
color: #4665A2;
font-weight: normal;
margin-left: 9px;
}
.memnav {
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.mempage {
width: 100%;
}
.memitem {
padding: 0;
margin-bottom: 10px;
margin-right: 5px;
-webkit-transition: box-shadow 0.5s linear;
-moz-transition: box-shadow 0.5s linear;
-ms-transition: box-shadow 0.5s linear;
-o-transition: box-shadow 0.5s linear;
transition: box-shadow 0.5s linear;
display: table !important;
width: 100%;
}
.memitem.glow {
box-shadow: 0 0 15px cyan;
}
.memname {
font-weight: 400;
margin-left: 6px;
}
.memname td {
vertical-align: bottom;
}
.memproto, dl.reflist dt {
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 6px 0px 6px 0px;
color: #253555;
font-weight: bold;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
background-color: #DFE5F1;
/* opera specific markup */
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
border-top-right-radius: 4px;
/* firefox specific markup */
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-moz-border-radius-topright: 4px;
/* webkit specific markup */
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-webkit-border-top-right-radius: 4px;
}
.overload {
font-family: "courier new",courier,monospace;
font-size: 65%;
}
.memdoc, dl.reflist dd {
border-bottom: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 6px 10px 2px 10px;
background-color: #FBFCFD;
border-top-width: 0;
background-image:url('nav_g.png');
background-repeat:repeat-x;
background-color: #FFFFFF;
/* opera specific markup */
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
/* firefox specific markup */
-moz-border-radius-bottomleft: 4px;
-moz-border-radius-bottomright: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
/* webkit specific markup */
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
dl.reflist dt {
padding: 5px;
}
dl.reflist dd {
margin: 0px 0px 10px 0px;
padding: 5px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
white-space: nowrap;
}
.paramname em {
font-style: normal;
}
.paramname code {
line-height: 14px;
}
.params, .retval, .exception, .tparams {
margin-left: 0px;
padding-left: 0px;
}
.params .paramname, .retval .paramname {
font-weight: bold;
vertical-align: top;
}
.params .paramtype {
font-style: italic;
vertical-align: top;
}
.params .paramdir {
font-family: "courier new",courier,monospace;
vertical-align: top;
}
table.mlabels {
border-spacing: 0px;
}
td.mlabels-left {
width: 100%;
padding: 0px;
}
td.mlabels-right {
vertical-align: bottom;
padding: 0px;
white-space: nowrap;
}
span.mlabels {
margin-left: 8px;
}
span.mlabel {
background-color: #728DC1;
border-top:1px solid #5373B4;
border-left:1px solid #5373B4;
border-right:1px solid #C4CFE5;
border-bottom:1px solid #C4CFE5;
text-shadow: none;
color: white;
margin-right: 4px;
padding: 2px 3px;
border-radius: 3px;
font-size: 7pt;
white-space: nowrap;
vertical-align: middle;
}
/* @end */
/* these are for tree view inside a (index) page */
div.directory {
margin: 10px 0px;
border-top: 1px solid #9CAFD4;
border-bottom: 1px solid #9CAFD4;
width: 100%;
}
.directory table {
border-collapse:collapse;
}
.directory td {
margin: 0px;
padding: 0px;
vertical-align: top;
}
.directory td.entry {
white-space: nowrap;
padding-right: 6px;
padding-top: 3px;
}
.directory td.entry a {
outline:none;
}
.directory td.entry a img {
border: none;
}
.directory td.desc {
width: 100%;
padding-left: 6px;
padding-right: 6px;
padding-top: 3px;
border-left: 1px solid rgba(0,0,0,0.05);
}
.directory tr.even {
padding-left: 6px;
background-color: #F7F8FB;
}
.directory img {
vertical-align: -30%;
}
.directory .levels {
white-space: nowrap;
width: 100%;
text-align: right;
font-size: 9pt;
}
.directory .levels span {
cursor: pointer;
padding-left: 2px;
padding-right: 2px;
color: #3D578C;
}
.arrow {
color: #9CAFD4;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: pointer;
font-size: 80%;
display: inline-block;
width: 16px;
height: 22px;
}
.icon {
font-family: Arial, Helvetica;
font-weight: bold;
font-size: 12px;
height: 14px;
width: 16px;
display: inline-block;
background-color: #728DC1;
color: white;
text-align: center;
border-radius: 4px;
margin-left: 2px;
margin-right: 2px;
}
.icona {
width: 24px;
height: 22px;
display: inline-block;
}
.iconfopen {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('folderopen.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
.iconfclosed {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('folderclosed.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
.icondoc {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('doc.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
table.directory {
font: 400 14px Roboto,sans-serif;
}
/* @end */
div.dynheader {
margin-top: 8px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
address {
font-style: normal;
color: #2A3D61;
}
table.doxtable caption {
caption-side: top;
}
table.doxtable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.doxtable td, table.doxtable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.doxtable th {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
table.fieldtable {
/*width: 100%;*/
margin-bottom: 10px;
border: 1px solid #A8B8D9;
border-spacing: 0px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
}
.fieldtable td, .fieldtable th {
padding: 3px 7px 2px;
}
.fieldtable td.fieldtype, .fieldtable td.fieldname {
white-space: nowrap;
border-right: 1px solid #A8B8D9;
border-bottom: 1px solid #A8B8D9;
vertical-align: top;
}
.fieldtable td.fieldname {
padding-top: 3px;
}
.fieldtable td.fielddoc {
border-bottom: 1px solid #A8B8D9;
/*width: 100%;*/
}
.fieldtable td.fielddoc p:first-child {
margin-top: 0px;
}
.fieldtable td.fielddoc p:last-child {
margin-bottom: 2px;
}
.fieldtable tr:last-child td {
border-bottom: none;
}
.fieldtable th {
background-image:url('nav_f.png');
background-repeat:repeat-x;
background-color: #E2E8F2;
font-size: 90%;
color: #253555;
padding-bottom: 4px;
padding-top: 5px;
text-align:left;
font-weight: 400;
-moz-border-radius-topleft: 4px;
-moz-border-radius-topright: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom: 1px solid #A8B8D9;
}
.tabsearch {
top: 0px;
left: 10px;
height: 36px;
background-image: url('tab_b.png');
z-index: 101;
overflow: hidden;
font-size: 13px;
}
.navpath ul
{
font-size: 11px;
background-image:url('tab_b.png');
background-repeat:repeat-x;
background-position: 0 -5px;
height:30px;
line-height:30px;
color:#8AA0CC;
border:solid 1px #C2CDE4;
overflow:hidden;
margin:0px;
padding:0px;
}
.navpath li
{
list-style-type:none;
float:left;
padding-left:10px;
padding-right:15px;
background-image:url('bc_s.png');
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
}
.navpath li.navelem a
{
height:32px;
display:block;
text-decoration: none;
outline: none;
color: #283A5D;
font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
text-decoration: none;
}
.navpath li.navelem a:hover
{
color:#6884BD;
}
.navpath li.footer
{
list-style-type:none;
float:right;
padding-left:10px;
padding-right:15px;
background-image:none;
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
font-size: 8pt;
}
div.summary
{
float: right;
font-size: 8pt;
padding-right: 5px;
width: 50%;
text-align: right;
}
div.summary a
{
white-space: nowrap;
}
table.classindex
{
margin: 10px;
white-space: nowrap;
margin-left: 3%;
margin-right: 3%;
width: 94%;
border: 0;
border-spacing: 0;
padding: 0;
}
div.ingroups
{
font-size: 8pt;
width: 50%;
text-align: left;
}
div.ingroups a
{
white-space: nowrap;
}
div.header
{
background-image:url('nav_h.png');
background-repeat:repeat-x;
background-color: #F9FAFC;
margin: 0px;
border-bottom: 1px solid #C4CFE5;
}
div.headertitle
{
padding: 5px 5px 5px 10px;
}
dl
{
padding: 0 0 0 10px;
}
/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
dl.section
{
margin-left: 0px;
padding-left: 0px;
}
dl.note
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #D0C000;
}
dl.warning, dl.attention
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #FF0000;
}
dl.pre, dl.post, dl.invariant
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #00D000;
}
dl.deprecated
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #505050;
}
dl.todo
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #00C0E0;
}
dl.test
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #3030E0;
}
dl.bug
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #C08050;
}
dl.section dd {
margin-bottom: 6px;
}
#projectlogo
{
text-align: center;
vertical-align: bottom;
border-collapse: separate;
}
#projectlogo img
{
border: 0px none;
}
#projectalign
{
vertical-align: middle;
}
#projectname
{
font: 300% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 2px 0px;
}
#projectbrief
{
font: 120% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#projectnumber
{
font: 50% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#titlearea
{
padding: 0px;
margin: 0px;
width: 100%;
border-bottom: 1px solid #5373B4;
}
.image
{
text-align: center;
}
.dotgraph
{
text-align: center;
}
.mscgraph
{
text-align: center;
}
.plantumlgraph
{
text-align: center;
}
.diagraph
{
text-align: center;
}
.caption
{
font-weight: bold;
}
div.zoom
{
border: 1px solid #90A5CE;
}
dl.citelist {
margin-bottom:50px;
}
dl.citelist dt {
color:#334975;
float:left;
font-weight:bold;
margin-right:10px;
padding:5px;
}
dl.citelist dd {
margin:2px 0;
padding:5px 0;
}
div.toc {
padding: 14px 25px;
background-color: #F4F6FA;
border: 1px solid #D8DFEE;
border-radius: 7px 7px 7px 7px;
float: right;
height: auto;
margin: 0 8px 10px 10px;
width: 200px;
}
div.toc li {
background: url("bdwn.png") no-repeat scroll 0 5px transparent;
font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
margin-top: 5px;
padding-left: 10px;
padding-top: 2px;
}
div.toc h3 {
font: bold 12px/1.2 Arial,FreeSans,sans-serif;
color: #4665A2;
border-bottom: 0 none;
margin: 0;
}
div.toc ul {
list-style: none outside none;
border: medium none;
padding: 0px;
}
div.toc li.level1 {
margin-left: 0px;
}
div.toc li.level2 {
margin-left: 15px;
}
div.toc li.level3 {
margin-left: 30px;
}
div.toc li.level4 {
margin-left: 45px;
}
.inherit_header {
font-weight: bold;
color: gray;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.inherit_header td {
padding: 6px 0px 2px 5px;
}
.inherit {
display: none;
}
tr.heading h2 {
margin-top: 12px;
margin-bottom: 4px;
}
/* tooltip related style info */
.ttc {
position: absolute;
display: none;
}
#powerTip {
cursor: default;
white-space: nowrap;
background-color: white;
border: 1px solid gray;
border-radius: 4px 4px 4px 4px;
box-shadow: 1px 1px 7px gray;
display: none;
font-size: smaller;
max-width: 80%;
opacity: 0.9;
padding: 1ex 1em 1em;
position: absolute;
z-index: 2147483647;
}
#powerTip div.ttdoc {
color: grey;
font-style: italic;
}
#powerTip div.ttname a {
font-weight: bold;
}
#powerTip div.ttname {
font-weight: bold;
}
#powerTip div.ttdeci {
color: #006318;
}
#powerTip div {
margin: 0px;
padding: 0px;
font: 12px/16px Roboto,sans-serif;
}
#powerTip:before, #powerTip:after {
content: "";
position: absolute;
margin: 0px;
}
#powerTip.n:after, #powerTip.n:before,
#powerTip.s:after, #powerTip.s:before,
#powerTip.w:after, #powerTip.w:before,
#powerTip.e:after, #powerTip.e:before,
#powerTip.ne:after, #powerTip.ne:before,
#powerTip.se:after, #powerTip.se:before,
#powerTip.nw:after, #powerTip.nw:before,
#powerTip.sw:after, #powerTip.sw:before {
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
}
#powerTip.n:after, #powerTip.s:after,
#powerTip.w:after, #powerTip.e:after,
#powerTip.nw:after, #powerTip.ne:after,
#powerTip.sw:after, #powerTip.se:after {
border-color: rgba(255, 255, 255, 0);
}
#powerTip.n:before, #powerTip.s:before,
#powerTip.w:before, #powerTip.e:before,
#powerTip.nw:before, #powerTip.ne:before,
#powerTip.sw:before, #powerTip.se:before {
border-color: rgba(128, 128, 128, 0);
}
#powerTip.n:after, #powerTip.n:before,
#powerTip.ne:after, #powerTip.ne:before,
#powerTip.nw:after, #powerTip.nw:before {
top: 100%;
}
#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
border-top-color: #ffffff;
border-width: 10px;
margin: 0px -10px;
}
#powerTip.n:before {
border-top-color: #808080;
border-width: 11px;
margin: 0px -11px;
}
#powerTip.n:after, #powerTip.n:before {
left: 50%;
}
#powerTip.nw:after, #powerTip.nw:before {
right: 14px;
}
#powerTip.ne:after, #powerTip.ne:before {
left: 14px;
}
#powerTip.s:after, #powerTip.s:before,
#powerTip.se:after, #powerTip.se:before,
#powerTip.sw:after, #powerTip.sw:before {
bottom: 100%;
}
#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
border-bottom-color: #ffffff;
border-width: 10px;
margin: 0px -10px;
}
#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
border-bottom-color: #808080;
border-width: 11px;
margin: 0px -11px;
}
#powerTip.s:after, #powerTip.s:before {
left: 50%;
}
#powerTip.sw:after, #powerTip.sw:before {
right: 14px;
}
#powerTip.se:after, #powerTip.se:before {
left: 14px;
}
#powerTip.e:after, #powerTip.e:before {
left: 100%;
}
#powerTip.e:after {
border-left-color: #ffffff;
border-width: 10px;
top: 50%;
margin-top: -10px;
}
#powerTip.e:before {
border-left-color: #808080;
border-width: 11px;
top: 50%;
margin-top: -11px;
}
#powerTip.w:after, #powerTip.w:before {
right: 100%;
}
#powerTip.w:after {
border-right-color: #ffffff;
border-width: 10px;
top: 50%;
margin-top: -10px;
}
#powerTip.w:before {
border-right-color: #808080;
border-width: 11px;
top: 50%;
margin-top: -11px;
}
@media print
{
#top { display: none; }
#side-nav { display: none; }
#nav-path { display: none; }
body { overflow:visible; }
h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
.summary { display: none; }
.memitem { page-break-inside: avoid; }
#doc-content
{
margin-left:0 !important;
height:auto !important;
width:auto !important;
overflow:inherit;
display:inline;
}
}
/* @group Markdown */
/*
table.markdownTable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.markdownTable td, table.markdownTable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.markdownTableHead tr {
}
table.markdownTableBodyLeft td, table.markdownTable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
th.markdownTableHeadLeft {
text-align: left
}
th.markdownTableHeadRight {
text-align: right
}
th.markdownTableHeadCenter {
text-align: center
}
*/
table.markdownTable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.markdownTable td, table.markdownTable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.markdownTable tr {
}
th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
th.markdownTableHeadLeft, td.markdownTableBodyLeft {
text-align: left
}
th.markdownTableHeadRight, td.markdownTableBodyRight {
text-align: right
}
th.markdownTableHeadCenter, td.markdownTableBodyCenter {
text-align: center
}
/* @end */
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div>
<h3><a id="index_a"></a>- a -</h3><ul>
<li>addUser()
: <a class="el" href="classDatabase.html#aba056b29124441dedd4663df22d9d5e7">Database</a>
</li>
<li>applyDelta()
: <a class="el" href="classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36">Sync</a>
</li>
</ul>
<h3><a id="index_c"></a>- c -</h3><ul>
<li>checkLogin()
: <a class="el" href="classDatabase.html#af7388b47545fe298ea7219d308e3e3c5">Database</a>
, <a class="el" href="classMainThread.html#acc9c240699d7df8d25c81f261e2c9604">MainThread</a>
</li>
<li>close()
: <a class="el" href="classConnection.html#a5c52903d0c5d5529892af3bed85ca13f">Connection</a>
</li>
<li>Connection()
: <a class="el" href="classConnection.html#adc308009f2f493dda9e69a45a579edef">Connection</a>
</li>
<li>createAIOFile()
: <a class="el" href="classFileOps.html#a01465191b85c90ff878bbde8406200be">FileOps</a>
</li>
<li>createFolderFromAIOFile()
: <a class="el" href="classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c">FileOps</a>
</li>
</ul>
<h3><a id="index_d"></a>- d -</h3><ul>
<li>Database()
: <a class="el" href="classDatabase.html#ae164fd695758d409242898f63f7e28b9">Database</a>
</li>
<li>deleteDir()
: <a class="el" href="classFileOps.html#a3d6960fa284423a1b015da0558c96113">FileOps</a>
</li>
</ul>
<h3><a id="index_g"></a>- g -</h3><ul>
<li>generateDeltaFile()
: <a class="el" href="classSync.html#a14cc1491aaa96c88a88389d86691bdc5">Sync</a>
</li>
<li>generateSigFile()
: <a class="el" href="classSync.html#a13b140ebee4ce707cb19b748ea12b217">Sync</a>
</li>
<li>getDataInputStream()
: <a class="el" href="classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e">Msg</a>
</li>
<li>getDataOutputStream()
: <a class="el" href="classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1">Msg</a>
</li>
<li>getHash()
: <a class="el" href="classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29">RollingHash</a>
</li>
<li>getPort()
: <a class="el" href="classListeningSocket.html#a8cccb422e17de624db0952b616f83376">ListeningSocket</a>
</li>
<li>getSocketAddr()
: <a class="el" href="classListeningSocket.html#ab84a6dd4f9555e5f16752042aeaec9e8">ListeningSocket</a>
</li>
</ul>
<h3><a id="index_h"></a>- h -</h3><ul>
<li>handleIncomingMsg()
: <a class="el" href="classClient.html#ad5f5700afdbd0ce56e5023dee309b4ab">Client</a>
</li>
<li>handleLogin()
: <a class="el" href="classMainThread.html#a02b10b098a47dd28fc55ae97d18050d2">MainThread</a>
</li>
<li>handleLoginReply()
: <a class="el" href="classClient.html#a400a22946d872d802bd6e9591477982a">Client</a>
</li>
<li>handleSignup()
: <a class="el" href="classMainThread.html#affe1cbd87d540ab1650feb358ecc42e7">MainThread</a>
</li>
<li>handleSignupReply()
: <a class="el" href="classClient.html#a68f7a00015444e2ab2b42ec9bf8bef84">Client</a>
</li>
<li>handleSyncDownReq()
: <a class="el" href="classSyncThread.html#aa25c537fde786f3663e7a28732dcaccd">SyncThread</a>
</li>
<li>handleSyncDownReqDenied()
: <a class="el" href="classClient.html#a94262af4acc81129f8eac71abac189f1">Client</a>
</li>
<li>handleSyncUpReq()
: <a class="el" href="classSyncThread.html#adcd9c7f9699d3520ddf103dc97a091a8">SyncThread</a>
</li>
<li>handleSyncUpReqDenied()
: <a class="el" href="classClient.html#a125c5d10357458dcd17b053e8b421b1f">Client</a>
</li>
</ul>
<h3><a id="index_i"></a>- i -</h3><ul>
<li>initiateSyncdown()
: <a class="el" href="classClient.html#a9f7f543fd16e253e80ab4f3a814cfc25">Client</a>
</li>
<li>initiateSyncup()
: <a class="el" href="classClient.html#a19f23cc8387bc794a950fe11971c5c48">Client</a>
</li>
</ul>
<h3><a id="index_l"></a>- l -</h3><ul>
<li>ListeningSocket()
: <a class="el" href="classListeningSocket.html#a7553b5ab4c0b2d817038ecfab7c13963">ListeningSocket</a>
</li>
<li>loadSigFile()
: <a class="el" href="classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a">Sync</a>
</li>
</ul>
<h3><a id="index_m"></a>- m -</h3><ul>
<li>MainThread()
: <a class="el" href="classMainThread.html#aa16763cb2b5f289a0d443b5a1df8eb64">MainThread</a>
</li>
<li>Msg()
: <a class="el" href="classMsg.html#a1350206b00860e9f672a52986beba1e4">Msg</a>
</li>
</ul>
<h3><a id="index_p"></a>- p -</h3><ul>
<li>performSyncDown()
: <a class="el" href="classClient.html#a7ae00d9a9515ede5f609a12db8c197c1">Client</a>
</li>
<li>prepare()
: <a class="el" href="classMsg.html#ae6d18cf6a15045107103de719bc59964">Msg</a>
</li>
<li>processDeltaFile()
: <a class="el" href="classClient.html#af85d7f80493c4736f4a343c83a546aa7">Client</a>
, <a class="el" href="classSyncThread.html#ac9c2068cc13bc92cd105c32d4b4444da">SyncThread</a>
</li>
<li>processSigFile()
: <a class="el" href="classClient.html#a159cb4c810266496101380bb3f97a404">Client</a>
, <a class="el" href="classSyncThread.html#a360f04de98c8a06ea9853d6b2a017b2b">SyncThread</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>readConfig()
: <a class="el" href="classClient.html#a37480e8b43dab360f9a7b6b761eb56b6">Client</a>
, <a class="el" href="classMainThread.html#a8b6c064abc4d75fcecb94cb432dd543c">MainThread</a>
</li>
<li>reset()
: <a class="el" href="classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4">RollingHash</a>
</li>
<li>resetDataInputStream()
: <a class="el" href="classMsg.html#a8e64149c518f7fc14fe154f3851861b5">Msg</a>
</li>
<li>RollingHash()
: <a class="el" href="classRollingHash.html#abc955cf95e6aec64f808ef776fe43266">RollingHash</a>
</li>
</ul>
<h3><a id="index_s"></a>- s -</h3><ul>
<li>send()
: <a class="el" href="classConnection.html#a339605e1bd2344ecc6079f7a26cead17">Connection</a>
</li>
<li>sendFile()
: <a class="el" href="classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3">Connection</a>
</li>
<li>signup()
: <a class="el" href="classMainThread.html#a8c60f0ba141e2b76766adb77c6fd177f">MainThread</a>
</li>
<li>start()
: <a class="el" href="classClient.html#a28549389b6f3c38126d03a6015ea5a76">Client</a>
, <a class="el" href="classListeningSocket.html#a88951dfeb85a42f083980aa8e0d10406">ListeningSocket</a>
, <a class="el" href="classMainThread.html#ace7c99c112360940b0facec17874692d">MainThread</a>
, <a class="el" href="classSyncThread.html#a27d72f6ba2ad8eee0248aee1b2646e5e">SyncThread</a>
</li>
<li>startRecSendThreads()
: <a class="el" href="classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f">Connection</a>
</li>
<li>SyncThread()
: <a class="el" href="classSyncThread.html#aa850affc9978714a72acffe1233f5aa2">SyncThread</a>
</li>
</ul>
<h3><a id="index_t"></a>- t -</h3><ul>
<li>tryToLogin()
: <a class="el" href="classClient.html#aa871ac5c9cf88b5714bc2ffc93463c16">Client</a>
</li>
<li>tryToSignup()
: <a class="el" href="classClient.html#a27ff78bc046c2e1369e94401adcee56d">Client</a>
</li>
</ul>
<h3><a id="index_u"></a>- u -</h3><ul>
<li>update()
: <a class="el" href="classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f">RollingHash</a>
</li>
<li>updateAutoSyncStatus()
: <a class="el" href="classMainFrame.html#ac74abf01d0a5c95cc97d22ac53394a60">MainFrame</a>
</li>
<li>updateOutput()
: <a class="el" href="classLoginFrame.html#aa86ab7ad8d64bfe04cdbb612150ca7c5">LoginFrame</a>
, <a class="el" href="classMainFrame.html#a3a0ea249d05e0ad786c8663727fedf05">MainFrame</a>
, <a class="el" href="classSignupFrame.html#a1d28ba01c42c4e007ec0214adc175484">SignupFrame</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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Class Members - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="contents">
&#160;
<h3><a id="index_a"></a>- a -</h3><ul>
<li>addUser()
: <a class="el" href="classDatabase.html#aba056b29124441dedd4663df22d9d5e7">Database</a>
</li>
<li>applyDelta()
: <a class="el" href="classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36">Sync</a>
</li>
</ul>
<h3><a id="index_c"></a>- c -</h3><ul>
<li>checkLogin()
: <a class="el" href="classDatabase.html#af7388b47545fe298ea7219d308e3e3c5">Database</a>
, <a class="el" href="classMainThread.html#acc9c240699d7df8d25c81f261e2c9604">MainThread</a>
</li>
<li>close()
: <a class="el" href="classConnection.html#a5c52903d0c5d5529892af3bed85ca13f">Connection</a>
</li>
<li>Connection()
: <a class="el" href="classConnection.html#adc308009f2f493dda9e69a45a579edef">Connection</a>
</li>
<li>createAIOFile()
: <a class="el" href="classFileOps.html#a01465191b85c90ff878bbde8406200be">FileOps</a>
</li>
<li>createFolderFromAIOFile()
: <a class="el" href="classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c">FileOps</a>
</li>
</ul>
<h3><a id="index_d"></a>- d -</h3><ul>
<li>Database()
: <a class="el" href="classDatabase.html#ae164fd695758d409242898f63f7e28b9">Database</a>
</li>
<li>deleteDir()
: <a class="el" href="classFileOps.html#a3d6960fa284423a1b015da0558c96113">FileOps</a>
</li>
</ul>
<h3><a id="index_g"></a>- g -</h3><ul>
<li>generateDeltaFile()
: <a class="el" href="classSync.html#a14cc1491aaa96c88a88389d86691bdc5">Sync</a>
</li>
<li>generateSigFile()
: <a class="el" href="classSync.html#a13b140ebee4ce707cb19b748ea12b217">Sync</a>
</li>
<li>getDataInputStream()
: <a class="el" href="classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e">Msg</a>
</li>
<li>getDataOutputStream()
: <a class="el" href="classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1">Msg</a>
</li>
<li>getHash()
: <a class="el" href="classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29">RollingHash</a>
</li>
<li>getPort()
: <a class="el" href="classListeningSocket.html#a8cccb422e17de624db0952b616f83376">ListeningSocket</a>
</li>
<li>getSocketAddr()
: <a class="el" href="classListeningSocket.html#ab84a6dd4f9555e5f16752042aeaec9e8">ListeningSocket</a>
</li>
</ul>
<h3><a id="index_h"></a>- h -</h3><ul>
<li>handleIncomingMsg()
: <a class="el" href="classClient.html#ad5f5700afdbd0ce56e5023dee309b4ab">Client</a>
</li>
<li>handleLogin()
: <a class="el" href="classMainThread.html#a02b10b098a47dd28fc55ae97d18050d2">MainThread</a>
</li>
<li>handleLoginReply()
: <a class="el" href="classClient.html#a400a22946d872d802bd6e9591477982a">Client</a>
</li>
<li>handleSignup()
: <a class="el" href="classMainThread.html#affe1cbd87d540ab1650feb358ecc42e7">MainThread</a>
</li>
<li>handleSignupReply()
: <a class="el" href="classClient.html#a68f7a00015444e2ab2b42ec9bf8bef84">Client</a>
</li>
<li>handleSyncDownReq()
: <a class="el" href="classSyncThread.html#aa25c537fde786f3663e7a28732dcaccd">SyncThread</a>
</li>
<li>handleSyncDownReqDenied()
: <a class="el" href="classClient.html#a94262af4acc81129f8eac71abac189f1">Client</a>
</li>
<li>handleSyncUpReq()
: <a class="el" href="classSyncThread.html#adcd9c7f9699d3520ddf103dc97a091a8">SyncThread</a>
</li>
<li>handleSyncUpReqDenied()
: <a class="el" href="classClient.html#a125c5d10357458dcd17b053e8b421b1f">Client</a>
</li>
</ul>
<h3><a id="index_i"></a>- i -</h3><ul>
<li>initiateSyncdown()
: <a class="el" href="classClient.html#a9f7f543fd16e253e80ab4f3a814cfc25">Client</a>
</li>
<li>initiateSyncup()
: <a class="el" href="classClient.html#a19f23cc8387bc794a950fe11971c5c48">Client</a>
</li>
</ul>
<h3><a id="index_l"></a>- l -</h3><ul>
<li>ListeningSocket()
: <a class="el" href="classListeningSocket.html#a7553b5ab4c0b2d817038ecfab7c13963">ListeningSocket</a>
</li>
<li>loadSigFile()
: <a class="el" href="classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a">Sync</a>
</li>
</ul>
<h3><a id="index_m"></a>- m -</h3><ul>
<li>MainThread()
: <a class="el" href="classMainThread.html#aa16763cb2b5f289a0d443b5a1df8eb64">MainThread</a>
</li>
<li>Msg()
: <a class="el" href="classMsg.html#a1350206b00860e9f672a52986beba1e4">Msg</a>
</li>
</ul>
<h3><a id="index_p"></a>- p -</h3><ul>
<li>performSyncDown()
: <a class="el" href="classClient.html#a7ae00d9a9515ede5f609a12db8c197c1">Client</a>
</li>
<li>prepare()
: <a class="el" href="classMsg.html#ae6d18cf6a15045107103de719bc59964">Msg</a>
</li>
<li>processDeltaFile()
: <a class="el" href="classClient.html#af85d7f80493c4736f4a343c83a546aa7">Client</a>
, <a class="el" href="classSyncThread.html#ac9c2068cc13bc92cd105c32d4b4444da">SyncThread</a>
</li>
<li>processSigFile()
: <a class="el" href="classClient.html#a159cb4c810266496101380bb3f97a404">Client</a>
, <a class="el" href="classSyncThread.html#a360f04de98c8a06ea9853d6b2a017b2b">SyncThread</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>readConfig()
: <a class="el" href="classClient.html#a37480e8b43dab360f9a7b6b761eb56b6">Client</a>
, <a class="el" href="classMainThread.html#a8b6c064abc4d75fcecb94cb432dd543c">MainThread</a>
</li>
<li>reset()
: <a class="el" href="classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4">RollingHash</a>
</li>
<li>resetDataInputStream()
: <a class="el" href="classMsg.html#a8e64149c518f7fc14fe154f3851861b5">Msg</a>
</li>
<li>RollingHash()
: <a class="el" href="classRollingHash.html#abc955cf95e6aec64f808ef776fe43266">RollingHash</a>
</li>
</ul>
<h3><a id="index_s"></a>- s -</h3><ul>
<li>send()
: <a class="el" href="classConnection.html#a339605e1bd2344ecc6079f7a26cead17">Connection</a>
</li>
<li>sendFile()
: <a class="el" href="classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3">Connection</a>
</li>
<li>signup()
: <a class="el" href="classMainThread.html#a8c60f0ba141e2b76766adb77c6fd177f">MainThread</a>
</li>
<li>start()
: <a class="el" href="classClient.html#a28549389b6f3c38126d03a6015ea5a76">Client</a>
, <a class="el" href="classListeningSocket.html#a88951dfeb85a42f083980aa8e0d10406">ListeningSocket</a>
, <a class="el" href="classMainThread.html#ace7c99c112360940b0facec17874692d">MainThread</a>
, <a class="el" href="classSyncThread.html#a27d72f6ba2ad8eee0248aee1b2646e5e">SyncThread</a>
</li>
<li>startRecSendThreads()
: <a class="el" href="classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f">Connection</a>
</li>
<li>SyncThread()
: <a class="el" href="classSyncThread.html#aa850affc9978714a72acffe1233f5aa2">SyncThread</a>
</li>
</ul>
<h3><a id="index_t"></a>- t -</h3><ul>
<li>tryToLogin()
: <a class="el" href="classClient.html#aa871ac5c9cf88b5714bc2ffc93463c16">Client</a>
</li>
<li>tryToSignup()
: <a class="el" href="classClient.html#a27ff78bc046c2e1369e94401adcee56d">Client</a>
</li>
</ul>
<h3><a id="index_u"></a>- u -</h3><ul>
<li>update()
: <a class="el" href="classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f">RollingHash</a>
</li>
<li>updateAutoSyncStatus()
: <a class="el" href="classMainFrame.html#ac74abf01d0a5c95cc97d22ac53394a60">MainFrame</a>
</li>
<li>updateOutput()
: <a class="el" href="classLoginFrame.html#aa86ab7ad8d64bfe04cdbb612150ca7c5">LoginFrame</a>
, <a class="el" href="classMainFrame.html#a3a0ea249d05e0ad786c8663727fedf05">MainFrame</a>
, <a class="el" href="classSignupFrame.html#a1d28ba01c42c4e007ec0214adc175484">SignupFrame</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.13
</small></address>
</body>
</html>
digraph "Graph Legend"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node9 [shape="box",label="Inherited",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",fillcolor="grey75",style="filled" fontcolor="black"];
Node10 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [shape="box",label="PublicBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPublicBase.html"];
Node11 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [shape="box",label="Truncated",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="red",URL="$classTruncated.html"];
Node13 -> Node9 [dir="back",color="darkgreen",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [shape="box",label="ProtectedBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classProtectedBase.html"];
Node14 -> Node9 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [shape="box",label="PrivateBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPrivateBase.html"];
Node15 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [shape="box",label="Undocumented",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="grey75"];
Node16 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 [shape="box",label="Templ< int >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"];
Node17 -> Node16 [dir="back",color="orange",fontsize="10",style="dashed",label="< int >",fontname="Helvetica"];
Node17 [shape="box",label="Templ< T >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"];
Node18 -> Node9 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label="m_usedClass",fontname="Helvetica"];
Node18 [shape="box",label="Used",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classUsed.html"];
}
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Graph Legend</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">Graph Legend</div> </div>
</div><!--header-->
<div class="contents">
<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
<p>Consider the following example: </p><div class="fragment"><div class="line">/*! Invisible class because of truncation */</div><div class="line">class Invisible { };</div><div class="line"></div><div class="line">/*! Truncated class, inheritance relation is hidden */</div><div class="line">class Truncated : public Invisible { };</div><div class="line"></div><div class="line">/* Class not documented with doxygen comments */</div><div class="line">class Undocumented { };</div><div class="line"></div><div class="line">/*! Class that is inherited using public inheritance */</div><div class="line">class PublicBase : public Truncated { };</div><div class="line"></div><div class="line">/*! A template class */</div><div class="line">template&lt;class T&gt; class Templ { };</div><div class="line"></div><div class="line">/*! Class that is inherited using protected inheritance */</div><div class="line">class ProtectedBase { };</div><div class="line"></div><div class="line">/*! Class that is inherited using private inheritance */</div><div class="line">class PrivateBase { };</div><div class="line"></div><div class="line">/*! Class that is used by the Inherited class */</div><div class="line">class Used { };</div><div class="line"></div><div class="line">/*! Super class that inherits a number of other classes */</div><div class="line">class Inherited : public PublicBase,</div><div class="line"> protected ProtectedBase,</div><div class="line"> private PrivateBase,</div><div class="line"> public Undocumented,</div><div class="line"> public Templ&lt;int&gt;</div><div class="line">{</div><div class="line"> private:</div><div class="line"> Used *m_usedClass;</div><div class="line">};</div></div><!-- fragment --><p> This will result in the following graph:</p>
<center><div class="image">
<img src="graph_legend.png"/>
</div>
</center><p>The boxes in the above graph have the following meaning: </p>
<ul>
<li>
A filled gray box represents the struct or class for which the graph is generated. </li>
<li>
A box with a black border denotes a documented struct or class. </li>
<li>
A box with a gray border denotes an undocumented struct or class. </li>
<li>
A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
</ul>
<p>The arrows have the following meaning: </p>
<ul>
<li>
A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
<li>
A dark green arrow is used for protected inheritance. </li>
<li>
A dark red arrow is used for private inheritance. </li>
<li>
A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible. </li>
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance. </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.13
</small></address>
</body>
</html>
387ff8eb65306fa251338d3c9bd7bfff
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Class Hierarchy</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">Class Hierarchy</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">
<p><a href="inherits.html">Go to the graphical class hierarchy</a></p>
This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classBlockSig.html" target="_self">BlockSig</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classClient.html" target="_self">Client</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classConnection.html" target="_self">Connection</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDatabase.html" target="_self">Database</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classFileOps.html" target="_self">FileOps</a></td><td class="desc"></td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classListeningSocket.html" target="_self">ListeningSocket</a></td><td class="desc"></td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classMainThread.html" target="_self">MainThread</a></td><td class="desc"></td></tr>
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classMsg.html" target="_self">Msg</a></td><td class="desc"></td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classRollingHash.html" target="_self">RollingHash</a></td><td class="desc"></td></tr>
<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classServer.html" target="_self">Server</a></td><td class="desc"></td></tr>
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSync.html" target="_self">Sync</a></td><td class="desc"></td></tr>
<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSyncThread.html" target="_self">SyncThread</a></td><td class="desc"></td></tr>
<tr id="row_12_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_12_" class="arrow" onclick="toggleFolder('12_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>JFrame</b></td><td class="desc"></td></tr>
<tr id="row_12_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classLoginFrame.html" target="_self">LoginFrame</a></td><td class="desc"></td></tr>
<tr id="row_12_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classMainFrame.html" target="_self">MainFrame</a></td><td class="desc"></td></tr>
<tr id="row_12_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSetIntervalFrame.html" target="_self">SetIntervalFrame</a></td><td class="desc"></td></tr>
<tr id="row_12_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSignupFrame.html" target="_self">SignupFrame</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</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.13
</small></address>
</body>
</html>
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">FSync Documentation</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Introduction :</p>
<p>FSync is an easy to use tool to sync files between multiple machines efficiently. It is especially useful for syncing large files which only have small differences between them. It syncs two files by first calculating in what parts the files are different and in what parts they are same. Then it sends only the parts where the files differ over the network to sync the files. So the data transferred over the network is proportional to differences in the files rather than the size of the file. So if you have a set of files that you want to be replicated between multiple machines and want any change made to these files to be reflected on all the other machines then FSync is a very handy tool for that. You can either sync up (upload local files to the server and other machines) or sync down (download files from the server to the local machine). Other than these manual sync functions you can also turn on the auto sync feature which will sync up the files to the server and other machines after every N seconds (application will ask the value of N when turning on auto sync).</p>
<p>Motivation :</p>
<p>In this day and age such situations are fairly common where a single user works on a single project from multiple machines and any work done from any one machine needs to be reflected in other machines. This calls for a mechanism to sync the files on multiple machines. One straightforward way to do it is to upload the complete contents of one machine to all other machines. While this syncs the files between machines and works, it is not the optimal way to do it or even impractical in cases where files to be synced are very large and small changes are frequent. The optimal way to do it is to only send the parts of the files which have changed between the machines to minimize the data transferred over the network. This is exactly what we tried to do with our file syncing application. We also felt the need to provide a way to automatically sync the files after a given time interval. A use case for this is as follows. Suppose a server is running and appending the logs to a log file (log file is growing with time) and a developer wants to analyse the log file every day by downloading it his/her own computer. In this case he/she can setup the FSync application between server and his/her own computer and set the server side FSync to auto sync every 24 hours. So every day the log file will be synced to local machine and will be ready for analysis.</p>
<p>Getting the code : <br />
cd into directory where you want to store the code. <br />
run : git clone <a href="https://shivamdixit@git.cse.iitb.ac.in/shivamdixit/CS699_FSync.git">https://shivamdixit@git.cse.iitb.ac.in/shivamdixit/CS699_FSync.git</a></p>
<p>Dependencies : <br />
You need to ensure the installation of Java (jdk1.7 or above). For this you can just visit the website: <a href="https://www.java.com/en/download/manual.jsp">https://www.java.com/en/download/manual.jsp</a> for details of different versions of Java and their installation procedures.</p>
<p>Building and running server : <br />
Go to 'source/Server' directory.<br />
run : chmod 777 build.sh<br />
run : ./build.sh<br />
This will create 'Server.jar' and 'RunServer.sh' files.<br />
<a class="el" href="classServer.html">Server</a> needs a config file. A sample config file is given, you can edit it according to your setup.<br />
<a class="el" href="classServer.html">Server</a> config file has two fields :<br />
PORT:port number<br />
OPERATION_DIR:working directory for server<br />
Trailing '/' in OPERATION_DIR is must.<br />
For example : OPERATION_DIR:/path/to/dir is wrong.<br />
OPERATION_DIR:/path/to/dir/ is right.<br />
To run the server:<br />
./RunServer.sh configFilePath<br />
Example :<br />
./RunServer.sh dir/config.txt<br />
</p>
<p>Building and running client : <br />
Go to 'source/Client' directory.<br />
run : chmod 777 build.sh<br />
run : ./build.sh<br />
This will create 'Client.jar' and 'RunClient.sh' files.<br />
<a class="el" href="classClient.html">Client</a> needs a config file. A sample config file is given, you can edit it according to your setup.<br />
<a class="el" href="classClient.html">Client</a> config file has three fields :<br />
SERVER_ADDR:server ip address<br />
SERVER_PORT:server port<br />
OPERATION_DIR:working directory for client<br />
Trailing '/' in OPERATION_DIR is must.<br />
For example : OPERATION_DIR:/path/to/dir is wrong.<br />
OPERATION_DIR:/path/to/dir/ is right.<br />
To run the client:<br />
./RunClient.sh configFilePath<br />
Example :<br />
./RunClient.sh dir/config.txt<br />
</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="BlockSig",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classBlockSig.html"];
}
ae8e0e3a2c82a6d293bacc0f86341532
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="Client",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classClient.html"];
}
b0bce557c00431f42e3b7b816e9e551d
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="Server",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classServer.html"];
}
ebab233e839b74079f2463338c08294c
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="Sync",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classSync.html"];
}
dbb2e6a3ca3de5ccdf1afe64540d0e59
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="SyncThread",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classSyncThread.html"];
}
cfee17c5c2a6ccf51513f4c56d0f9ba8
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
}
059cb84dbc7238f87141c4b1a5e378c6
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="Database",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classDatabase.html"];
}
43a18cc5eaa3b1210b41c161a6d0dca2
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="FileOps",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classFileOps.html"];
}
52fe60c5b827cc8225677c497ec651c1
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="ListeningSocket",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classListeningSocket.html"];
}
a68bf266fb1a556bc0b551cc5c557720
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node12 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node12 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node0 [label="LoginFrame",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classLoginFrame.html"];
Node12 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="MainFrame",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classMainFrame.html"];
Node12 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [label="SetIntervalFrame",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classSetIntervalFrame.html"];
Node12 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 [label="SignupFrame",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classSignupFrame.html"];
}
41583fb8bbfe5d14b471d5455f492a52
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="MainThread",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classMainThread.html"];
}
5ba1f401b2234c4ff792b75e456382bb
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="Msg",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classMsg.html"];
}
3f47a8bac75ebd114e082e0f032f362b
\ No newline at end of file
digraph "Graphical Class Hierarchy"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node0 [label="RollingHash",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classRollingHash.html"];
}
be4855dec7c84d9422b501a34710cbf9
\ No newline at end of file
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FSync: Class Hierarchy</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FSync
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">Class Hierarchy</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">
<p><a href="hierarchy.html">Go to the textual class hierarchy</a></p>
</div><table border="0" cellspacing="10" cellpadding="0">
<tr><td><img src="inherit_graph_0.png" border="0" alt="" usemap="#BlockSig"/>
<!-- MAP 0 -->
</td></tr>
<tr><td><img src="inherit_graph_1.png" border="0" alt="" usemap="#Client"/>
<!-- MAP 1 -->
</td></tr>
<tr><td><img src="inherit_graph_2.png" border="0" alt="" usemap="#Connection"/>
<!-- MAP 2 -->
</td></tr>
<tr><td><img src="inherit_graph_3.png" border="0" alt="" usemap="#Database"/>
<!-- MAP 3 -->
</td></tr>
<tr><td><img src="inherit_graph_4.png" border="0" alt="" usemap="#FileOps"/>
<!-- MAP 4 -->
</td></tr>
<tr><td><img src="inherit_graph_5.png" border="0" alt="" usemap="#ListeningSocket"/>
<!-- MAP 5 -->
</td></tr>
<tr><td><img src="inherit_graph_6.png" border="0" alt="" usemap="#LoginFrame"/>
<!-- MAP 6 -->
</td></tr>
<tr><td><img src="inherit_graph_7.png" border="0" alt="" usemap="#MainThread"/>
<!-- MAP 7 -->
</td></tr>
<tr><td><img src="inherit_graph_8.png" border="0" alt="" usemap="#Msg"/>
<!-- MAP 8 -->
</td></tr>
<tr><td><img src="inherit_graph_9.png" border="0" alt="" usemap="#RollingHash"/>
<!-- MAP 9 -->
</td></tr>
<tr><td><img src="inherit_graph_10.png" border="0" alt="" usemap="#Server"/>
<!-- MAP 10 -->
</td></tr>
<tr><td><img src="inherit_graph_11.png" border="0" alt="" usemap="#Sync"/>
<!-- MAP 11 -->
</td></tr>
<tr><td><img src="inherit_graph_12.png" border="0" alt="" usemap="#SyncThread"/>
<!-- MAP 12 -->
</td></tr>
</table>
</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.13
</small></address>
</body>
</html>
This source diff could not be displayed because it is too large. You can view the blob instead.
function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
function makeTree(data,relPath) {
var result='';
if ('children' in data) {
result+='<ul>';
for (var i in data.children) {
result+='<li><a href="'+relPath+data.children[i].url+'">'+
data.children[i].text+'</a>'+
makeTree(data.children[i],relPath)+'</li>';
}
result+='</ul>';
}
return result;
}
$('#main-nav').append(makeTree(menudata,relPath));
$('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
if (searchEnabled) {
if (serverSide) {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.png" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
} else {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'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="'+relPath+'search/close.png" alt=""/></a></span></div></li>');
}
}
$('#main-menu').smartmenus();
}
var menudata={children:[
{text:"Main Page",url:"index.html"},
{text:"Classes",url:"annotated.html",children:[
{text:"Class List",url:"annotated.html"},
{text:"Class Index",url:"classes.html"},
{text:"Class Hierarchy",url:"inherits.html"},
{text:"Class Members",url:"functions.html",children:[
{text:"All",url:"functions.html",children:[
{text:"a",url:"functions.html#index_a"},
{text:"c",url:"functions.html#index_c"},
{text:"d",url:"functions.html#index_d"},
{text:"g",url:"functions.html#index_g"},
{text:"h",url:"functions.html#index_h"},
{text:"i",url:"functions.html#index_i"},
{text:"l",url:"functions.html#index_l"},
{text:"m",url:"functions.html#index_m"},
{text:"p",url:"functions.html#index_p"},
{text:"r",url:"functions.html#index_r"},
{text:"s",url:"functions.html#index_s"},
{text:"t",url:"functions.html#index_t"},
{text:"u",url:"functions.html#index_u"}]},
{text:"Functions",url:"functions_func.html",children:[
{text:"a",url:"functions_func.html#index_a"},
{text:"c",url:"functions_func.html#index_c"},
{text:"d",url:"functions_func.html#index_d"},
{text:"g",url:"functions_func.html#index_g"},
{text:"h",url:"functions_func.html#index_h"},
{text:"i",url:"functions_func.html#index_i"},
{text:"l",url:"functions_func.html#index_l"},
{text:"m",url:"functions_func.html#index_m"},
{text:"p",url:"functions_func.html#index_p"},
{text:"r",url:"functions_func.html#index_r"},
{text:"s",url:"functions_func.html#index_s"},
{text:"t",url:"functions_func.html#index_t"},
{text:"u",url:"functions_func.html#index_u"}]}]}]}]}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['adduser',['addUser',['../classDatabase.html#aba056b29124441dedd4663df22d9d5e7',1,'Database']]],
['applydelta',['applyDelta',['../classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36',1,'Sync.applyDelta(File baseFile, File deltaFile, File targetFile)'],['../classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36',1,'Sync.applyDelta(File baseFile, File deltaFile, File targetFile)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['blocksig',['BlockSig',['../classBlockSig.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['checklogin',['checkLogin',['../classDatabase.html#af7388b47545fe298ea7219d308e3e3c5',1,'Database.checkLogin()'],['../classMainThread.html#acc9c240699d7df8d25c81f261e2c9604',1,'MainThread.checkLogin()']]],
['client',['Client',['../classClient.html',1,'']]],
['close',['close',['../classConnection.html#a5c52903d0c5d5529892af3bed85ca13f',1,'Connection.close()'],['../classConnection.html#a5c52903d0c5d5529892af3bed85ca13f',1,'Connection.close()']]],
['connection',['Connection',['../classConnection.html',1,'Connection'],['../classConnection.html#adc308009f2f493dda9e69a45a579edef',1,'Connection.Connection(Socket socket, LinkedBlockingQueue&lt; Msg &gt; inQueue)'],['../classConnection.html#adc308009f2f493dda9e69a45a579edef',1,'Connection.Connection(Socket socket, LinkedBlockingQueue&lt; Msg &gt; inQueue)']]],
['createaiofile',['createAIOFile',['../classFileOps.html#a01465191b85c90ff878bbde8406200be',1,'FileOps.createAIOFile(File srcDir, File aio)'],['../classFileOps.html#a01465191b85c90ff878bbde8406200be',1,'FileOps.createAIOFile(File srcDir, File aio)']]],
['createfolderfromaiofile',['createFolderFromAIOFile',['../classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c',1,'FileOps.createFolderFromAIOFile(File aio, String parentDir)'],['../classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c',1,'FileOps.createFolderFromAIOFile(File aio, String parentDir)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['database',['Database',['../classDatabase.html',1,'Database'],['../classDatabase.html#ae164fd695758d409242898f63f7e28b9',1,'Database.Database()']]],
['deletedir',['deleteDir',['../classFileOps.html#a3d6960fa284423a1b015da0558c96113',1,'FileOps.deleteDir(File dir)'],['../classFileOps.html#a3d6960fa284423a1b015da0558c96113',1,'FileOps.deleteDir(File dir)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['fileops',['FileOps',['../classFileOps.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['generatedeltafile',['generateDeltaFile',['../classSync.html#a14cc1491aaa96c88a88389d86691bdc5',1,'Sync.generateDeltaFile(File source, File sigFile, File deltaFile)'],['../classSync.html#a14cc1491aaa96c88a88389d86691bdc5',1,'Sync.generateDeltaFile(File source, File sigFile, File deltaFile)']]],
['generatesigfile',['generateSigFile',['../classSync.html#a13b140ebee4ce707cb19b748ea12b217',1,'Sync.generateSigFile(File source, File sigFile)'],['../classSync.html#a13b140ebee4ce707cb19b748ea12b217',1,'Sync.generateSigFile(File source, File sigFile)']]],
['getdatainputstream',['getDataInputStream',['../classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e',1,'Msg.getDataInputStream()'],['../classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e',1,'Msg.getDataInputStream()']]],
['getdataoutputstream',['getDataOutputStream',['../classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1',1,'Msg.getDataOutputStream()'],['../classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1',1,'Msg.getDataOutputStream()']]],
['gethash',['getHash',['../classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29',1,'RollingHash.getHash()'],['../classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29',1,'RollingHash.getHash()']]],
['getport',['getPort',['../classListeningSocket.html#a8cccb422e17de624db0952b616f83376',1,'ListeningSocket']]],
['getsocketaddr',['getSocketAddr',['../classListeningSocket.html#ab84a6dd4f9555e5f16752042aeaec9e8',1,'ListeningSocket']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['handleincomingmsg',['handleIncomingMsg',['../classClient.html#ad5f5700afdbd0ce56e5023dee309b4ab',1,'Client']]],
['handlelogin',['handleLogin',['../classMainThread.html#a02b10b098a47dd28fc55ae97d18050d2',1,'MainThread']]],
['handleloginreply',['handleLoginReply',['../classClient.html#a400a22946d872d802bd6e9591477982a',1,'Client']]],
['handlesignup',['handleSignup',['../classMainThread.html#affe1cbd87d540ab1650feb358ecc42e7',1,'MainThread']]],
['handlesignupreply',['handleSignupReply',['../classClient.html#a68f7a00015444e2ab2b42ec9bf8bef84',1,'Client']]],
['handlesyncdownreq',['handleSyncDownReq',['../classSyncThread.html#aa25c537fde786f3663e7a28732dcaccd',1,'SyncThread']]],
['handlesyncdownreqdenied',['handleSyncDownReqDenied',['../classClient.html#a94262af4acc81129f8eac71abac189f1',1,'Client']]],
['handlesyncupreq',['handleSyncUpReq',['../classSyncThread.html#adcd9c7f9699d3520ddf103dc97a091a8',1,'SyncThread']]],
['handlesyncupreqdenied',['handleSyncUpReqDenied',['../classClient.html#a125c5d10357458dcd17b053e8b421b1f',1,'Client']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_7.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['initiatesyncdown',['initiateSyncdown',['../classClient.html#a9f7f543fd16e253e80ab4f3a814cfc25',1,'Client']]],
['initiatesyncup',['initiateSyncup',['../classClient.html#a19f23cc8387bc794a950fe11971c5c48',1,'Client']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_8.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['listeningsocket',['ListeningSocket',['../classListeningSocket.html',1,'ListeningSocket'],['../classListeningSocket.html#a7553b5ab4c0b2d817038ecfab7c13963',1,'ListeningSocket.ListeningSocket(LinkedBlockingQueue&lt; Msg &gt; inbox)'],['../classListeningSocket.html#a6c691efcc63a2aa34b01132a0641f9d2',1,'ListeningSocket.ListeningSocket(int port, LinkedBlockingQueue&lt; Msg &gt; inbox)']]],
['loadsigfile',['loadSigFile',['../classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a',1,'Sync.loadSigFile(File sigFile)'],['../classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a',1,'Sync.loadSigFile(File sigFile)']]],
['loginframe',['LoginFrame',['../classLoginFrame.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_9.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['mainframe',['MainFrame',['../classMainFrame.html',1,'']]],
['mainthread',['MainThread',['../classMainThread.html',1,'MainThread'],['../classMainThread.html#aa16763cb2b5f289a0d443b5a1df8eb64',1,'MainThread.MainThread()']]],
['msg',['Msg',['../classMsg.html',1,'Msg'],['../classMsg.html#a8cc3de09d885bfeff9e41a534c0c09e3',1,'Msg.Msg(int type, byte msg[], Connection connection)'],['../classMsg.html#a1350206b00860e9f672a52986beba1e4',1,'Msg.Msg(int type, Object userData)'],['../classMsg.html#a8cc3de09d885bfeff9e41a534c0c09e3',1,'Msg.Msg(int type, byte msg[], Connection connection)'],['../classMsg.html#a1350206b00860e9f672a52986beba1e4',1,'Msg.Msg(int type, Object userData)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_a.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['performsyncdown',['performSyncDown',['../classClient.html#a7ae00d9a9515ede5f609a12db8c197c1',1,'Client']]],
['prepare',['prepare',['../classMsg.html#ae6d18cf6a15045107103de719bc59964',1,'Msg.prepare()'],['../classMsg.html#ae6d18cf6a15045107103de719bc59964',1,'Msg.prepare()']]],
['processdeltafile',['processDeltaFile',['../classSyncThread.html#ac9c2068cc13bc92cd105c32d4b4444da',1,'SyncThread.processDeltaFile()'],['../classClient.html#af85d7f80493c4736f4a343c83a546aa7',1,'Client.processDeltaFile()']]],
['processsigfile',['processSigFile',['../classSyncThread.html#a360f04de98c8a06ea9853d6b2a017b2b',1,'SyncThread.processSigFile()'],['../classClient.html#a159cb4c810266496101380bb3f97a404',1,'Client.processSigFile()']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_b.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['readconfig',['readConfig',['../classMainThread.html#a8b6c064abc4d75fcecb94cb432dd543c',1,'MainThread.readConfig()'],['../classClient.html#a37480e8b43dab360f9a7b6b761eb56b6',1,'Client.readConfig()']]],
['reset',['reset',['../classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4',1,'RollingHash.reset()'],['../classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4',1,'RollingHash.reset()']]],
['resetdatainputstream',['resetDataInputStream',['../classMsg.html#a8e64149c518f7fc14fe154f3851861b5',1,'Msg.resetDataInputStream()'],['../classMsg.html#a8e64149c518f7fc14fe154f3851861b5',1,'Msg.resetDataInputStream()']]],
['rollinghash',['RollingHash',['../classRollingHash.html',1,'RollingHash'],['../classRollingHash.html#abc955cf95e6aec64f808ef776fe43266',1,'RollingHash.RollingHash(int blockSize)'],['../classRollingHash.html#abc955cf95e6aec64f808ef776fe43266',1,'RollingHash.RollingHash(int blockSize)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_c.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['send',['send',['../classConnection.html#a339605e1bd2344ecc6079f7a26cead17',1,'Connection.send(Msg msg)'],['../classConnection.html#a339605e1bd2344ecc6079f7a26cead17',1,'Connection.send(Msg msg)']]],
['sendfile',['sendFile',['../classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3',1,'Connection.sendFile(File f, int fileType)'],['../classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3',1,'Connection.sendFile(File f, int fileType)']]],
['server',['Server',['../classServer.html',1,'']]],
['setintervalframe',['SetIntervalFrame',['../classSetIntervalFrame.html',1,'']]],
['signup',['signup',['../classMainThread.html#a8c60f0ba141e2b76766adb77c6fd177f',1,'MainThread']]],
['signupframe',['SignupFrame',['../classSignupFrame.html',1,'']]],
['start',['start',['../classListeningSocket.html#a88951dfeb85a42f083980aa8e0d10406',1,'ListeningSocket.start()'],['../classMainThread.html#ace7c99c112360940b0facec17874692d',1,'MainThread.start()'],['../classSyncThread.html#a27d72f6ba2ad8eee0248aee1b2646e5e',1,'SyncThread.start()'],['../classClient.html#a28549389b6f3c38126d03a6015ea5a76',1,'Client.start()']]],
['startrecsendthreads',['startRecSendThreads',['../classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f',1,'Connection.startRecSendThreads()'],['../classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f',1,'Connection.startRecSendThreads()']]],
['sync',['Sync',['../classSync.html',1,'']]],
['syncthread',['SyncThread',['../classSyncThread.html',1,'SyncThread'],['../classSyncThread.html#aa850affc9978714a72acffe1233f5aa2',1,'SyncThread.SyncThread()']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_d.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['trytologin',['tryToLogin',['../classClient.html#aa871ac5c9cf88b5714bc2ffc93463c16',1,'Client']]],
['trytosignup',['tryToSignup',['../classClient.html#a27ff78bc046c2e1369e94401adcee56d',1,'Client']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_e.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['update',['update',['../classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f',1,'RollingHash.update(byte b)'],['../classRollingHash.html#af25915532b88a26522320f5d18c55dde',1,'RollingHash.update(byte inByte, byte outByte)'],['../classRollingHash.html#a364014385c2a6b5ecc2a9d772a697ee1',1,'RollingHash.update(byte[] arr, int offset, int len)'],['../classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f',1,'RollingHash.update(byte b)'],['../classRollingHash.html#af25915532b88a26522320f5d18c55dde',1,'RollingHash.update(byte inByte, byte outByte)'],['../classRollingHash.html#a364014385c2a6b5ecc2a9d772a697ee1',1,'RollingHash.update(byte[] arr, int offset, int len)']]],
['updateautosyncstatus',['updateAutoSyncStatus',['../classMainFrame.html#ac74abf01d0a5c95cc97d22ac53394a60',1,'MainFrame']]],
['updateoutput',['updateOutput',['../classLoginFrame.html#aa86ab7ad8d64bfe04cdbb612150ca7c5',1,'LoginFrame.updateOutput()'],['../classMainFrame.html#a3a0ea249d05e0ad786c8663727fedf05',1,'MainFrame.updateOutput()'],['../classSignupFrame.html#a1d28ba01c42c4e007ec0214adc175484',1,'SignupFrame.updateOutput()']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['blocksig',['BlockSig',['../classBlockSig.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['client',['Client',['../classClient.html',1,'']]],
['connection',['Connection',['../classConnection.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['database',['Database',['../classDatabase.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['fileops',['FileOps',['../classFileOps.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['listeningsocket',['ListeningSocket',['../classListeningSocket.html',1,'']]],
['loginframe',['LoginFrame',['../classLoginFrame.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['mainframe',['MainFrame',['../classMainFrame.html',1,'']]],
['mainthread',['MainThread',['../classMainThread.html',1,'']]],
['msg',['Msg',['../classMsg.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['rollinghash',['RollingHash',['../classRollingHash.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_7.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['server',['Server',['../classServer.html',1,'']]],
['setintervalframe',['SetIntervalFrame',['../classSetIntervalFrame.html',1,'']]],
['signupframe',['SignupFrame',['../classSignupFrame.html',1,'']]],
['sync',['Sync',['../classSync.html',1,'']]],
['syncthread',['SyncThread',['../classSyncThread.html',1,'']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['adduser',['addUser',['../classDatabase.html#aba056b29124441dedd4663df22d9d5e7',1,'Database']]],
['applydelta',['applyDelta',['../classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36',1,'Sync.applyDelta(File baseFile, File deltaFile, File targetFile)'],['../classSync.html#ae8cd24ed7648c85b21fdc31c9ee19c36',1,'Sync.applyDelta(File baseFile, File deltaFile, File targetFile)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['checklogin',['checkLogin',['../classDatabase.html#af7388b47545fe298ea7219d308e3e3c5',1,'Database.checkLogin()'],['../classMainThread.html#acc9c240699d7df8d25c81f261e2c9604',1,'MainThread.checkLogin()']]],
['close',['close',['../classConnection.html#a5c52903d0c5d5529892af3bed85ca13f',1,'Connection.close()'],['../classConnection.html#a5c52903d0c5d5529892af3bed85ca13f',1,'Connection.close()']]],
['connection',['Connection',['../classConnection.html#adc308009f2f493dda9e69a45a579edef',1,'Connection.Connection(Socket socket, LinkedBlockingQueue&lt; Msg &gt; inQueue)'],['../classConnection.html#adc308009f2f493dda9e69a45a579edef',1,'Connection.Connection(Socket socket, LinkedBlockingQueue&lt; Msg &gt; inQueue)']]],
['createaiofile',['createAIOFile',['../classFileOps.html#a01465191b85c90ff878bbde8406200be',1,'FileOps.createAIOFile(File srcDir, File aio)'],['../classFileOps.html#a01465191b85c90ff878bbde8406200be',1,'FileOps.createAIOFile(File srcDir, File aio)']]],
['createfolderfromaiofile',['createFolderFromAIOFile',['../classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c',1,'FileOps.createFolderFromAIOFile(File aio, String parentDir)'],['../classFileOps.html#abcbaa79b342798fb73b95ab0d9a5f35c',1,'FileOps.createFolderFromAIOFile(File aio, String parentDir)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['database',['Database',['../classDatabase.html#ae164fd695758d409242898f63f7e28b9',1,'Database']]],
['deletedir',['deleteDir',['../classFileOps.html#a3d6960fa284423a1b015da0558c96113',1,'FileOps.deleteDir(File dir)'],['../classFileOps.html#a3d6960fa284423a1b015da0558c96113',1,'FileOps.deleteDir(File dir)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['generatedeltafile',['generateDeltaFile',['../classSync.html#a14cc1491aaa96c88a88389d86691bdc5',1,'Sync.generateDeltaFile(File source, File sigFile, File deltaFile)'],['../classSync.html#a14cc1491aaa96c88a88389d86691bdc5',1,'Sync.generateDeltaFile(File source, File sigFile, File deltaFile)']]],
['generatesigfile',['generateSigFile',['../classSync.html#a13b140ebee4ce707cb19b748ea12b217',1,'Sync.generateSigFile(File source, File sigFile)'],['../classSync.html#a13b140ebee4ce707cb19b748ea12b217',1,'Sync.generateSigFile(File source, File sigFile)']]],
['getdatainputstream',['getDataInputStream',['../classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e',1,'Msg.getDataInputStream()'],['../classMsg.html#a1d7d8181a9490b9b14eebb7c5ce4016e',1,'Msg.getDataInputStream()']]],
['getdataoutputstream',['getDataOutputStream',['../classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1',1,'Msg.getDataOutputStream()'],['../classMsg.html#a10fc1e0ebd649614f7b573c6b5820fe1',1,'Msg.getDataOutputStream()']]],
['gethash',['getHash',['../classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29',1,'RollingHash.getHash()'],['../classRollingHash.html#ae1c0c44cc72f3c0d91a4a3b1eb754a29',1,'RollingHash.getHash()']]],
['getport',['getPort',['../classListeningSocket.html#a8cccb422e17de624db0952b616f83376',1,'ListeningSocket']]],
['getsocketaddr',['getSocketAddr',['../classListeningSocket.html#ab84a6dd4f9555e5f16752042aeaec9e8',1,'ListeningSocket']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['handleincomingmsg',['handleIncomingMsg',['../classClient.html#ad5f5700afdbd0ce56e5023dee309b4ab',1,'Client']]],
['handlelogin',['handleLogin',['../classMainThread.html#a02b10b098a47dd28fc55ae97d18050d2',1,'MainThread']]],
['handleloginreply',['handleLoginReply',['../classClient.html#a400a22946d872d802bd6e9591477982a',1,'Client']]],
['handlesignup',['handleSignup',['../classMainThread.html#affe1cbd87d540ab1650feb358ecc42e7',1,'MainThread']]],
['handlesignupreply',['handleSignupReply',['../classClient.html#a68f7a00015444e2ab2b42ec9bf8bef84',1,'Client']]],
['handlesyncdownreq',['handleSyncDownReq',['../classSyncThread.html#aa25c537fde786f3663e7a28732dcaccd',1,'SyncThread']]],
['handlesyncdownreqdenied',['handleSyncDownReqDenied',['../classClient.html#a94262af4acc81129f8eac71abac189f1',1,'Client']]],
['handlesyncupreq',['handleSyncUpReq',['../classSyncThread.html#adcd9c7f9699d3520ddf103dc97a091a8',1,'SyncThread']]],
['handlesyncupreqdenied',['handleSyncUpReqDenied',['../classClient.html#a125c5d10357458dcd17b053e8b421b1f',1,'Client']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['initiatesyncdown',['initiateSyncdown',['../classClient.html#a9f7f543fd16e253e80ab4f3a814cfc25',1,'Client']]],
['initiatesyncup',['initiateSyncup',['../classClient.html#a19f23cc8387bc794a950fe11971c5c48',1,'Client']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['listeningsocket',['ListeningSocket',['../classListeningSocket.html#a7553b5ab4c0b2d817038ecfab7c13963',1,'ListeningSocket.ListeningSocket(LinkedBlockingQueue&lt; Msg &gt; inbox)'],['../classListeningSocket.html#a6c691efcc63a2aa34b01132a0641f9d2',1,'ListeningSocket.ListeningSocket(int port, LinkedBlockingQueue&lt; Msg &gt; inbox)']]],
['loadsigfile',['loadSigFile',['../classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a',1,'Sync.loadSigFile(File sigFile)'],['../classSync.html#a1ce0c0e5115c2eadf6934945c7ee326a',1,'Sync.loadSigFile(File sigFile)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_7.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['mainthread',['MainThread',['../classMainThread.html#aa16763cb2b5f289a0d443b5a1df8eb64',1,'MainThread']]],
['msg',['Msg',['../classMsg.html#a8cc3de09d885bfeff9e41a534c0c09e3',1,'Msg.Msg(int type, byte msg[], Connection connection)'],['../classMsg.html#a1350206b00860e9f672a52986beba1e4',1,'Msg.Msg(int type, Object userData)'],['../classMsg.html#a8cc3de09d885bfeff9e41a534c0c09e3',1,'Msg.Msg(int type, byte msg[], Connection connection)'],['../classMsg.html#a1350206b00860e9f672a52986beba1e4',1,'Msg.Msg(int type, Object userData)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_8.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['performsyncdown',['performSyncDown',['../classClient.html#a7ae00d9a9515ede5f609a12db8c197c1',1,'Client']]],
['prepare',['prepare',['../classMsg.html#ae6d18cf6a15045107103de719bc59964',1,'Msg.prepare()'],['../classMsg.html#ae6d18cf6a15045107103de719bc59964',1,'Msg.prepare()']]],
['processdeltafile',['processDeltaFile',['../classSyncThread.html#ac9c2068cc13bc92cd105c32d4b4444da',1,'SyncThread.processDeltaFile()'],['../classClient.html#af85d7f80493c4736f4a343c83a546aa7',1,'Client.processDeltaFile()']]],
['processsigfile',['processSigFile',['../classSyncThread.html#a360f04de98c8a06ea9853d6b2a017b2b',1,'SyncThread.processSigFile()'],['../classClient.html#a159cb4c810266496101380bb3f97a404',1,'Client.processSigFile()']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_9.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['readconfig',['readConfig',['../classMainThread.html#a8b6c064abc4d75fcecb94cb432dd543c',1,'MainThread.readConfig()'],['../classClient.html#a37480e8b43dab360f9a7b6b761eb56b6',1,'Client.readConfig()']]],
['reset',['reset',['../classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4',1,'RollingHash.reset()'],['../classRollingHash.html#a08f1b2a90304c01777bc193cbfc12fb4',1,'RollingHash.reset()']]],
['resetdatainputstream',['resetDataInputStream',['../classMsg.html#a8e64149c518f7fc14fe154f3851861b5',1,'Msg.resetDataInputStream()'],['../classMsg.html#a8e64149c518f7fc14fe154f3851861b5',1,'Msg.resetDataInputStream()']]],
['rollinghash',['RollingHash',['../classRollingHash.html#abc955cf95e6aec64f808ef776fe43266',1,'RollingHash.RollingHash(int blockSize)'],['../classRollingHash.html#abc955cf95e6aec64f808ef776fe43266',1,'RollingHash.RollingHash(int blockSize)']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_a.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['send',['send',['../classConnection.html#a339605e1bd2344ecc6079f7a26cead17',1,'Connection.send(Msg msg)'],['../classConnection.html#a339605e1bd2344ecc6079f7a26cead17',1,'Connection.send(Msg msg)']]],
['sendfile',['sendFile',['../classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3',1,'Connection.sendFile(File f, int fileType)'],['../classConnection.html#ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3',1,'Connection.sendFile(File f, int fileType)']]],
['signup',['signup',['../classMainThread.html#a8c60f0ba141e2b76766adb77c6fd177f',1,'MainThread']]],
['start',['start',['../classListeningSocket.html#a88951dfeb85a42f083980aa8e0d10406',1,'ListeningSocket.start()'],['../classMainThread.html#ace7c99c112360940b0facec17874692d',1,'MainThread.start()'],['../classSyncThread.html#a27d72f6ba2ad8eee0248aee1b2646e5e',1,'SyncThread.start()'],['../classClient.html#a28549389b6f3c38126d03a6015ea5a76',1,'Client.start()']]],
['startrecsendthreads',['startRecSendThreads',['../classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f',1,'Connection.startRecSendThreads()'],['../classConnection.html#a46315dd5e68a4ea009c9ac8faa95fe5f',1,'Connection.startRecSendThreads()']]],
['syncthread',['SyncThread',['../classSyncThread.html#aa850affc9978714a72acffe1233f5aa2',1,'SyncThread']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_b.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['trytologin',['tryToLogin',['../classClient.html#aa871ac5c9cf88b5714bc2ffc93463c16',1,'Client']]],
['trytosignup',['tryToSignup',['../classClient.html#a27ff78bc046c2e1369e94401adcee56d',1,'Client']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_c.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
var searchData=
[
['update',['update',['../classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f',1,'RollingHash.update(byte b)'],['../classRollingHash.html#af25915532b88a26522320f5d18c55dde',1,'RollingHash.update(byte inByte, byte outByte)'],['../classRollingHash.html#a364014385c2a6b5ecc2a9d772a697ee1',1,'RollingHash.update(byte[] arr, int offset, int len)'],['../classRollingHash.html#acccfdc00e40ba84faab1f89454acdb5f',1,'RollingHash.update(byte b)'],['../classRollingHash.html#af25915532b88a26522320f5d18c55dde',1,'RollingHash.update(byte inByte, byte outByte)'],['../classRollingHash.html#a364014385c2a6b5ecc2a9d772a697ee1',1,'RollingHash.update(byte[] arr, int offset, int len)']]],
['updateautosyncstatus',['updateAutoSyncStatus',['../classMainFrame.html#ac74abf01d0a5c95cc97d22ac53394a60',1,'MainFrame']]],
['updateoutput',['updateOutput',['../classLoginFrame.html#aa86ab7ad8d64bfe04cdbb612150ca7c5',1,'LoginFrame.updateOutput()'],['../classMainFrame.html#a3a0ea249d05e0ad786c8663727fedf05',1,'MainFrame.updateOutput()'],['../classSignupFrame.html#a1d28ba01c42c4e007ec0214adc175484',1,'SignupFrame.updateOutput()']]]
];
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</body>
</html>
/*---------------- Search Box */
#FSearchBox {
float: left;
}
#MSearchBox {
white-space : nowrap;
float: none;
margin-top: 8px;
right: 0px;
width: 170px;
height: 24px;
z-index: 102;
}
#MSearchBox .left
{
display:block;
position:absolute;
left:10px;
width:20px;
height:19px;
background:url('search_l.png') no-repeat;
background-position:right;
}
#MSearchSelect {
display:block;
position:absolute;
width:20px;
height:19px;
}
.left #MSearchSelect {
left:4px;
}
.right #MSearchSelect {
right:5px;
}
#MSearchField {
display:block;
position:absolute;
height:19px;
background:url('search_m.png') repeat-x;
border:none;
width:115px;
margin-left:20px;
padding-left:4px;
color: #909090;
outline: none;
font: 9pt Arial, Verdana, sans-serif;
-webkit-border-radius: 0px;
}
#FSearchBox #MSearchField {
margin-left:15px;
}
#MSearchBox .right {
display:block;
position:absolute;
right:10px;
top:8px;
width:20px;
height:19px;
background:url('search_r.png') no-repeat;
background-position:left;
}
#MSearchClose {
display: none;
position: absolute;
top: 4px;
background : none;
border: none;
margin: 0px 4px 0px 0px;
padding: 0px 0px;
outline: none;
}
.left #MSearchClose {
left: 6px;
}
.right #MSearchClose {
right: 2px;
}
.MSearchBoxActive #MSearchField {
color: #000000;
}
/*---------------- Search filter selection */
#MSearchSelectWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #90A5CE;
background-color: #F9FAFC;
z-index: 10001;
padding-top: 4px;
padding-bottom: 4px;
-moz-border-radius: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
.SelectItem {
font: 8pt Arial, Verdana, sans-serif;
padding-left: 2px;
padding-right: 12px;
border: 0px;
}
span.SelectionMark {
margin-right: 4px;
font-family: monospace;
outline-style: none;
text-decoration: none;
}
a.SelectItem {
display: block;
outline-style: none;
color: #000000;
text-decoration: none;
padding-left: 6px;
padding-right: 12px;
}
a.SelectItem:focus,
a.SelectItem:active {
color: #000000;
outline-style: none;
text-decoration: none;
}
a.SelectItem:hover {
color: #FFFFFF;
background-color: #3D578C;
outline-style: none;
text-decoration: none;
cursor: pointer;
display: block;
}
/*---------------- Search results window */
iframe#MSearchResults {
width: 60ex;
height: 15em;
}
#MSearchResultsWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #000;
background-color: #EEF1F7;
z-index:10000;
}
/* ----------------------------------- */
#SRIndex {
clear:both;
padding-bottom: 15px;
}
.SREntry {
font-size: 10pt;
padding-left: 1ex;
}
.SRPage .SREntry {
font-size: 8pt;
padding: 1px 5px;
}
body.SRPage {
margin: 5px 2px;
}
.SRChildren {
padding-left: 3ex; padding-bottom: .5em
}
.SRPage .SRChildren {
display: none;
}
.SRSymbol {
font-weight: bold;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRScope {
display: block;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRSymbol:focus, a.SRSymbol:active,
a.SRScope:focus, a.SRScope:active {
text-decoration: underline;
}
span.SRScope {
padding-left: 4px;
}
.SRPage .SRStatus {
padding: 2px 5px;
font-size: 8pt;
font-style: italic;
}
.SRResult {
display: none;
}
DIV.searchresults {
margin-left: 10px;
margin-right: 10px;
}
/*---------------- External search page results */
.searchresult {
background-color: #F0F3F8;
}
.pages b {
color: white;
padding: 5px 5px 3px 5px;
background-image: url("../tab_a.png");
background-repeat: repeat-x;
text-shadow: 0 1px 1px #000000;
}
.pages {
line-height: 17px;
margin-left: 4px;
text-decoration: none;
}
.hl {
font-weight: bold;
}
#searchresults {
margin-bottom: 20px;
}
.searchpages {
margin-top: 10px;
}
function convertToId(search)
{
var result = '';
for (i=0;i<search.length;i++)
{
var c = search.charAt(i);
var cn = c.charCodeAt(0);
if (c.match(/[a-z0-9\u0080-\uFFFF]/))
{
result+=c;
}
else if (cn<16)
{
result+="_0"+cn.toString(16);
}
else
{
result+="_"+cn.toString(16);
}
}
return result;
}
function getXPos(item)
{
var x = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
x += item.offsetLeft;
item = item.offsetParent;
}
}
return x;
}
function getYPos(item)
{
var y = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
y += item.offsetTop;
item = item.offsetParent;
}
}
return y;
}
/* A class handling everything associated with the search panel.
Parameters:
name - The name of the global variable that will be
storing this instance. Is needed to be able to set timeouts.
resultPath - path to use for external files
*/
function SearchBox(name, resultsPath, inFrame, label)
{
if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
// ---------- Instance variables
this.name = name;
this.resultsPath = resultsPath;
this.keyTimeout = 0;
this.keyTimeoutLength = 500;
this.closeSelectionTimeout = 300;
this.lastSearchValue = "";
this.lastResultsPage = "";
this.hideTimeout = 0;
this.searchIndex = 0;
this.searchActive = false;
this.insideFrame = inFrame;
this.searchLabel = label;
// ----------- DOM Elements
this.DOMSearchField = function()
{ return document.getElementById("MSearchField"); }
this.DOMSearchSelect = function()
{ return document.getElementById("MSearchSelect"); }
this.DOMSearchSelectWindow = function()
{ return document.getElementById("MSearchSelectWindow"); }
this.DOMPopupSearchResults = function()
{ return document.getElementById("MSearchResults"); }
this.DOMPopupSearchResultsWindow = function()
{ return document.getElementById("MSearchResultsWindow"); }
this.DOMSearchClose = function()
{ return document.getElementById("MSearchClose"); }
this.DOMSearchBox = function()
{ return document.getElementById("MSearchBox"); }
// ------------ Event Handlers
// Called when focus is added or removed from the search field.
this.OnSearchFieldFocus = function(isActive)
{
this.Activate(isActive);
}
this.OnSearchSelectShow = function()
{
var searchSelectWindow = this.DOMSearchSelectWindow();
var searchField = this.DOMSearchSelect();
if (this.insideFrame)
{
var left = getXPos(searchField);
var top = getYPos(searchField);
left += searchField.offsetWidth + 6;
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
left -= searchSelectWindow.offsetWidth;
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
else
{
var left = getXPos(searchField);
var top = getYPos(searchField);
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
// stop selection hide timer
if (this.hideTimeout)
{
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
return false; // to avoid "image drag" default event
}
this.OnSearchSelectHide = function()
{
this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
this.closeSelectionTimeout);
}
// Called when the content of the search field is changed.
this.OnSearchFieldChange = function(evt)
{
if (this.keyTimeout) // kill running timer
{
clearTimeout(this.keyTimeout);
this.keyTimeout = 0;
}
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 || e.keyCode==13)
{
if (e.shiftKey==1)
{
this.OnSearchSelectShow();
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
child.focus();
return;
}
}
return;
}
else if (window.frames.MSearchResults.searchResults)
{
var elem = window.frames.MSearchResults.searchResults.NavNext(0);
if (elem) elem.focus();
}
}
else if (e.keyCode==27) // Escape out of the search field
{
this.DOMSearchField().blur();
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
this.Activate(false);
return;
}
// strip whitespaces
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue != this.lastSearchValue) // search value has changed
{
if (searchValue != "") // non-empty search
{
// set timer for search update
this.keyTimeout = setTimeout(this.name + '.Search()',
this.keyTimeoutLength);
}
else // empty search field
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
}
}
}
this.SelectItemCount = function(id)
{
var count=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
count++;
}
}
return count;
}
this.SelectItemSet = function(id)
{
var i,j=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
var node = child.firstChild;
if (j==id)
{
node.innerHTML='&#8226;';
}
else
{
node.innerHTML='&#160;';
}
j++;
}
}
}
// Called when an search filter selection is made.
// set item with index id as the active item
this.OnSelectItem = function(id)
{
this.searchIndex = id;
this.SelectItemSet(id);
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue!="" && this.searchActive) // something was found -> do a search
{
this.Search();
}
}
this.OnSearchSelectKey = function(evt)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
{
this.searchIndex++;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==38 && this.searchIndex>0) // Up
{
this.searchIndex--;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==13 || e.keyCode==27)
{
this.OnSelectItem(this.searchIndex);
this.CloseSelectionWindow();
this.DOMSearchField().focus();
}
return false;
}
// --------- Actions
// Closes the results window.
this.CloseResultsWindow = function()
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.Activate(false);
}
this.CloseSelectionWindow = function()
{
this.DOMSearchSelectWindow().style.display = 'none';
}
// Performs a search.
this.Search = function()
{
this.keyTimeout = 0;
// strip leading whitespace
var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
var code = searchValue.toLowerCase().charCodeAt(0);
var idxChar = searchValue.substr(0, 1).toLowerCase();
if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
{
idxChar = searchValue.substr(0, 2);
}
var resultsPage;
var resultsPageWithSearch;
var hasResultsPage;
var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
if (idx!=-1)
{
var hexCode=idx.toString(16);
resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
hasResultsPage = true;
}
else // nothing available for this search term
{
resultsPage = this.resultsPath + '/nomatches.html';
resultsPageWithSearch = resultsPage;
hasResultsPage = false;
}
window.frames.MSearchResults.location = resultsPageWithSearch;
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
if (domPopupSearchResultsWindow.style.display!='block')
{
var domSearchBox = this.DOMSearchBox();
this.DOMSearchClose().style.display = 'inline';
if (this.insideFrame)
{
var domPopupSearchResults = this.DOMPopupSearchResults();
domPopupSearchResultsWindow.style.position = 'relative';
domPopupSearchResultsWindow.style.display = 'block';
var width = document.body.clientWidth - 8; // the -8 is for IE :-(
domPopupSearchResultsWindow.style.width = width + 'px';
domPopupSearchResults.style.width = width + 'px';
}
else
{
var domPopupSearchResults = this.DOMPopupSearchResults();
var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
domPopupSearchResultsWindow.style.display = 'block';
left -= domPopupSearchResults.offsetWidth;
domPopupSearchResultsWindow.style.top = top + 'px';
domPopupSearchResultsWindow.style.left = left + 'px';
}
}
this.lastSearchValue = searchValue;
this.lastResultsPage = resultsPage;
}
// -------- Activation Functions
// Activates or deactivates the search panel, resetting things to
// their default values if necessary.
this.Activate = function(isActive)
{
if (isActive || // open it
this.DOMPopupSearchResultsWindow().style.display == 'block'
)
{
this.DOMSearchBox().className = 'MSearchBoxActive';
var searchField = this.DOMSearchField();
if (searchField.value == this.searchLabel) // clear "Search" term upon entry
{
searchField.value = '';
this.searchActive = true;
}
}
else if (!isActive) // directly remove the panel
{
this.DOMSearchBox().className = 'MSearchBoxInactive';
this.DOMSearchField().value = this.searchLabel;
this.searchActive = false;
this.lastSearchValue = ''
this.lastResultsPage = '';
}
}
}
// -----------------------------------------------------------------------
// The class that handles everything on the search results page.
function SearchResults(name)
{
// The number of matches from the last run of <Search()>.
this.lastMatchCount = 0;
this.lastKey = 0;
this.repeatOn = false;
// Toggles the visibility of the passed element ID.
this.FindChildElement = function(id)
{
var parentElement = document.getElementById(id);
var element = parentElement.firstChild;
while (element && element!=parentElement)
{
if (element.nodeName == 'DIV' && element.className == 'SRChildren')
{
return element;
}
if (element.nodeName == 'DIV' && element.hasChildNodes())
{
element = element.firstChild;
}
else if (element.nextSibling)
{
element = element.nextSibling;
}
else
{
do
{
element = element.parentNode;
}
while (element && element!=parentElement && !element.nextSibling);
if (element && element!=parentElement)
{
element = element.nextSibling;
}
}
}
}
this.Toggle = function(id)
{
var element = this.FindChildElement(id);
if (element)
{
if (element.style.display == 'block')
{
element.style.display = 'none';
}
else
{
element.style.display = 'block';
}
}
}
// Searches for the passed string. If there is no parameter,
// it takes it from the URL query.
//
// Always returns true, since other documents may try to call it
// and that may or may not be possible.
this.Search = function(search)
{
if (!search) // get search word from URL
{
search = window.location.search;
search = search.substring(1); // Remove the leading '?'
search = unescape(search);
}
search = search.replace(/^ +/, ""); // strip leading spaces
search = search.replace(/ +$/, ""); // strip trailing spaces
search = search.toLowerCase();
search = convertToId(search);
var resultRows = document.getElementsByTagName("div");
var matches = 0;
var i = 0;
while (i < resultRows.length)
{
var row = resultRows.item(i);
if (row.className == "SRResult")
{
var rowMatchName = row.id.toLowerCase();
rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
if (search.length<=rowMatchName.length &&
rowMatchName.substr(0, search.length)==search)
{
row.style.display = 'block';
matches++;
}
else
{
row.style.display = 'none';
}
}
i++;
}
document.getElementById("Searching").style.display='none';
if (matches == 0) // no results
{
document.getElementById("NoMatches").style.display='block';
}
else // at least one result
{
document.getElementById("NoMatches").style.display='none';
}
this.lastMatchCount = matches;
return true;
}
// return the first item with index index or higher that is visible
this.NavNext = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index++;
}
return focusItem;
}
this.NavPrev = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index--;
}
return focusItem;
}
this.ProcessKeys = function(e)
{
if (e.type == "keydown")
{
this.repeatOn = false;
this.lastKey = e.keyCode;
}
else if (e.type == "keypress")
{
if (!this.repeatOn)
{
if (this.lastKey) this.repeatOn = true;
return false; // ignore first keypress after keydown
}
}
else if (e.type == "keyup")
{
this.lastKey = 0;
this.repeatOn = false;
}
return this.lastKey!=0;
}
this.Nav = function(evt,itemIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
var newIndex = itemIndex-1;
var focusItem = this.NavPrev(newIndex);
if (focusItem)
{
var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
if (child && child.style.display == 'block') // children visible
{
var n=0;
var tmpElem;
while (1) // search for last child
{
tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
if (tmpElem)
{
focusItem = tmpElem;
}
else // found it!
{
break;
}
n++;
}
}
}
if (focusItem)
{
focusItem.focus();
}
else // return focus to search field
{
parent.document.getElementById("MSearchField").focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = itemIndex+1;
var focusItem;
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem && elem.style.display == 'block') // children visible
{
focusItem = document.getElementById('Item'+itemIndex+'_c0');
}
if (!focusItem) focusItem = this.NavNext(newIndex);
if (focusItem) focusItem.focus();
}
else if (this.lastKey==39) // Right
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'block';
}
else if (this.lastKey==37) // Left
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'none';
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
this.NavChild = function(evt,itemIndex,childIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
if (childIndex>0)
{
var newIndex = childIndex-1;
document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
}
else // already at first child, jump to parent
{
document.getElementById('Item'+itemIndex).focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = childIndex+1;
var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
if (!elem) // last child, jump to parent next parent
{
elem = this.NavNext(itemIndex+1);
}
if (elem)
{
elem.focus();
}
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
}
function setKeyActions(elem,action)
{
elem.setAttribute('onkeydown',action);
elem.setAttribute('onkeypress',action);
elem.setAttribute('onkeyup',action);
}
function setClassAttr(elem,attr)
{
elem.setAttribute('class',attr);
elem.setAttribute('className',attr);
}
function createResults()
{
var results = document.getElementById("SRResults");
for (var e=0; e<searchData.length; e++)
{
var id = searchData[e][0];
var srResult = document.createElement('div');
srResult.setAttribute('id','SR_'+id);
setClassAttr(srResult,'SRResult');
var srEntry = document.createElement('div');
setClassAttr(srEntry,'SREntry');
var srLink = document.createElement('a');
srLink.setAttribute('id','Item'+e);
setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
setClassAttr(srLink,'SRSymbol');
srLink.innerHTML = searchData[e][1][0];
srEntry.appendChild(srLink);
if (searchData[e][1].length==2) // single result
{
srLink.setAttribute('href',searchData[e][1][1][0]);
if (searchData[e][1][1][1])
{
srLink.setAttribute('target','_parent');
}
var srScope = document.createElement('span');
setClassAttr(srScope,'SRScope');
srScope.innerHTML = searchData[e][1][1][2];
srEntry.appendChild(srScope);
}
else // multiple results
{
srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
var srChildren = document.createElement('div');
setClassAttr(srChildren,'SRChildren');
for (var c=0; c<searchData[e][1].length-1; c++)
{
var srChild = document.createElement('a');
srChild.setAttribute('id','Item'+e+'_c'+c);
setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
setClassAttr(srChild,'SRScope');
srChild.setAttribute('href',searchData[e][1][c+1][0]);
if (searchData[e][1][c+1][1])
{
srChild.setAttribute('target','_parent');
}
srChild.innerHTML = searchData[e][1][c+1][2];
srChildren.appendChild(srChild);
}
srEntry.appendChild(srChildren);
}
srResult.appendChild(srEntry);
results.appendChild(srResult);
}
}
function init_search()
{
var results = document.getElementById("MSearchSelectWindow");
for (var key in indexSectionLabels)
{
var link = document.createElement('a');
link.setAttribute('class','SelectItem');
link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
link.href='javascript:void(0)';
link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
results.appendChild(link);
}
searchBox.OnSelectItem(0);
}
var indexSectionsWithContent =
{
0: "abcdfghilmprstu",
1: "bcdflmrs",
2: "acdghilmprstu"
};
var indexSectionNames =
{
0: "all",
1: "classes",
2: "functions"
};
var indexSectionLabels =
{
0: "All",
1: "Classes",
2: "Functions"
};
.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:transparent}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
all: refman.pdf
pdf: refman.pdf
refman.pdf: clean refman.tex
pdflatex refman
makeindex refman.idx
pdflatex refman
latex_count=8 ; \
while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
do \
echo "Rerunning latex...." ;\
pdflatex refman ;\
latex_count=`expr $$latex_count - 1` ;\
done
makeindex refman.idx
pdflatex refman
clean:
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf
\section{Class List}
Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList}
\item\contentsline{section}{\hyperlink{classBlockSig}{Block\+Sig} }{\pageref{classBlockSig}}{}
\item\contentsline{section}{\hyperlink{classClient}{Client} }{\pageref{classClient}}{}
\item\contentsline{section}{\hyperlink{classConnection}{Connection} }{\pageref{classConnection}}{}
\item\contentsline{section}{\hyperlink{classDatabase}{Database} }{\pageref{classDatabase}}{}
\item\contentsline{section}{\hyperlink{classFileOps}{File\+Ops} }{\pageref{classFileOps}}{}
\item\contentsline{section}{\hyperlink{classListeningSocket}{Listening\+Socket} }{\pageref{classListeningSocket}}{}
\item\contentsline{section}{\hyperlink{classLoginFrame}{Login\+Frame} }{\pageref{classLoginFrame}}{}
\item\contentsline{section}{\hyperlink{classMainFrame}{Main\+Frame} }{\pageref{classMainFrame}}{}
\item\contentsline{section}{\hyperlink{classMainThread}{Main\+Thread} }{\pageref{classMainThread}}{}
\item\contentsline{section}{\hyperlink{classMsg}{Msg} }{\pageref{classMsg}}{}
\item\contentsline{section}{\hyperlink{classRollingHash}{Rolling\+Hash} }{\pageref{classRollingHash}}{}
\item\contentsline{section}{\hyperlink{classServer}{Server} }{\pageref{classServer}}{}
\item\contentsline{section}{\hyperlink{classSetIntervalFrame}{Set\+Interval\+Frame} }{\pageref{classSetIntervalFrame}}{}
\item\contentsline{section}{\hyperlink{classSignupFrame}{Signup\+Frame} }{\pageref{classSignupFrame}}{}
\item\contentsline{section}{\hyperlink{classSync}{Sync} }{\pageref{classSync}}{}
\item\contentsline{section}{\hyperlink{classSyncThread}{Sync\+Thread} }{\pageref{classSyncThread}}{}
\end{DoxyCompactList}
\hypertarget{classBlockSig}{}\section{Block\+Sig Class Reference}
\label{classBlockSig}\index{Block\+Sig@{Block\+Sig}}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\Hypertarget{classBlockSig_a83d07b349bb9fcf6a73ed07a33c53b36}\label{classBlockSig_a83d07b349bb9fcf6a73ed07a33c53b36}}
{\bfseries Block\+Sig} (int id, int hash, byte md5\mbox{[}$\,$\mbox{]})
\item
\mbox{\Hypertarget{classBlockSig_a810347f5447586f17f6fcd88b943ef38}\label{classBlockSig_a810347f5447586f17f6fcd88b943ef38}}
boolean {\bfseries equals} (Object obj)
\item
\mbox{\Hypertarget{classBlockSig_a80b7468305ab0f6b80c519ab5d665345}\label{classBlockSig_a80b7468305ab0f6b80c519ab5d665345}}
int {\bfseries hash\+Code} ()
\item
\mbox{\Hypertarget{classBlockSig_a83d07b349bb9fcf6a73ed07a33c53b36}\label{classBlockSig_a83d07b349bb9fcf6a73ed07a33c53b36}}
{\bfseries Block\+Sig} (int id, int hash, byte md5\mbox{[}$\,$\mbox{]})
\item
\mbox{\Hypertarget{classBlockSig_a810347f5447586f17f6fcd88b943ef38}\label{classBlockSig_a810347f5447586f17f6fcd88b943ef38}}
boolean {\bfseries equals} (Object obj)
\item
\mbox{\Hypertarget{classBlockSig_a80b7468305ab0f6b80c519ab5d665345}\label{classBlockSig_a80b7468305ab0f6b80c519ab5d665345}}
int {\bfseries hash\+Code} ()
\end{DoxyCompactItemize}
\subsection{Detailed Description}
Contains block id, weak hash and strong hash of the block.
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Block\+Sig.\+java\end{DoxyCompactItemize}
\hypertarget{classClient}{}\section{Client Class Reference}
\label{classClient}\index{Client@{Client}}
Collaboration diagram for Client\+:
\hypertarget{classClient}{}\section{Client Class Reference}
\label{classClient}\index{Client@{Client}}
Collaboration diagram for Client\+:
% FIG 0
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
void \hyperlink{classClient_a37480e8b43dab360f9a7b6b761eb56b6}{read\+Config} () throws I\+O\+Exception
\item
void \hyperlink{classClient_aa871ac5c9cf88b5714bc2ffc93463c16}{try\+To\+Login} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classClient_a400a22946d872d802bd6e9591477982a}{handle\+Login\+Reply} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classClient_a27ff78bc046c2e1369e94401adcee56d}{try\+To\+Signup} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classClient_a68f7a00015444e2ab2b42ec9bf8bef84}{handle\+Signup\+Reply} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classClient_a19f23cc8387bc794a950fe11971c5c48}{initiate\+Syncup} () throws I\+O\+Exception
\item
void \hyperlink{classClient_a9f7f543fd16e253e80ab4f3a814cfc25}{initiate\+Syncdown} () throws I\+O\+Exception
\item
void \hyperlink{classClient_a125c5d10357458dcd17b053e8b421b1f}{handle\+Sync\+Up\+Req\+Denied} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classClient_a94262af4acc81129f8eac71abac189f1}{handle\+Sync\+Down\+Req\+Denied} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classClient_a7ae00d9a9515ede5f609a12db8c197c1}{perform\+Sync\+Down} () throws I\+O\+Exception, Digest\+Exception
\item
void \hyperlink{classClient_a159cb4c810266496101380bb3f97a404}{process\+Sig\+File} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception, Invalid\+Signature\+File
\item
void \hyperlink{classClient_af85d7f80493c4736f4a343c83a546aa7}{process\+Delta\+File} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception, Invalid\+Signature\+File
\item
void \hyperlink{classClient_ad5f5700afdbd0ce56e5023dee309b4ab}{handle\+Incoming\+Msg} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception, Digest\+Exception, Invalid\+Signature\+File
\item
void \hyperlink{classClient_a28549389b6f3c38126d03a6015ea5a76}{start} () throws I\+O\+Exception
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\Hypertarget{classClient_ab9b892ebe4b84667bfe6da7181385481}\label{classClient_ab9b892ebe4b84667bfe6da7181385481}}
static void {\bfseries main} (String\mbox{[}$\,$\mbox{]} args) throws Interrupted\+Exception
\end{DoxyCompactItemize}
\subsection{Detailed Description}
This class implements all the client side functionality.
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classClient_ad5f5700afdbd0ce56e5023dee309b4ab}\label{classClient_ad5f5700afdbd0ce56e5023dee309b4ab}}
\index{Client@{Client}!handle\+Incoming\+Msg@{handle\+Incoming\+Msg}}
\index{handle\+Incoming\+Msg@{handle\+Incoming\+Msg}!Client@{Client}}
\subsubsection{\texorpdfstring{handle\+Incoming\+Msg()}{handleIncomingMsg()}}
{\footnotesize\ttfamily void Client.\+handle\+Incoming\+Msg (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception, Digest\+Exception, Invalid\+Signature\+File\hspace{0.3cm}{\ttfamily [inline]}}
Reads the message name of the incoming message and calls the appropriate handler.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: incoming message \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Digest\+Exception} & \\
\hline
{\em Invalid\+Signature\+File} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a400a22946d872d802bd6e9591477982a}\label{classClient_a400a22946d872d802bd6e9591477982a}}
\index{Client@{Client}!handle\+Login\+Reply@{handle\+Login\+Reply}}
\index{handle\+Login\+Reply@{handle\+Login\+Reply}!Client@{Client}}
\subsubsection{\texorpdfstring{handle\+Login\+Reply()}{handleLoginReply()}}
{\footnotesize\ttfamily void Client.\+handle\+Login\+Reply (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Processes login request result from the server.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: server\textquotesingle{}s reply \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a68f7a00015444e2ab2b42ec9bf8bef84}\label{classClient_a68f7a00015444e2ab2b42ec9bf8bef84}}
\index{Client@{Client}!handle\+Signup\+Reply@{handle\+Signup\+Reply}}
\index{handle\+Signup\+Reply@{handle\+Signup\+Reply}!Client@{Client}}
\subsubsection{\texorpdfstring{handle\+Signup\+Reply()}{handleSignupReply()}}
{\footnotesize\ttfamily void Client.\+handle\+Signup\+Reply (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Processes signup request result from the server.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: server\textquotesingle{}s reply \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a94262af4acc81129f8eac71abac189f1}\label{classClient_a94262af4acc81129f8eac71abac189f1}}
\index{Client@{Client}!handle\+Sync\+Down\+Req\+Denied@{handle\+Sync\+Down\+Req\+Denied}}
\index{handle\+Sync\+Down\+Req\+Denied@{handle\+Sync\+Down\+Req\+Denied}!Client@{Client}}
\subsubsection{\texorpdfstring{handle\+Sync\+Down\+Req\+Denied()}{handleSyncDownReqDenied()}}
{\footnotesize\ttfamily void Client.\+handle\+Sync\+Down\+Req\+Denied (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
This is called when the sync down request is denied.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: server\textquotesingle{}s reply \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a125c5d10357458dcd17b053e8b421b1f}\label{classClient_a125c5d10357458dcd17b053e8b421b1f}}
\index{Client@{Client}!handle\+Sync\+Up\+Req\+Denied@{handle\+Sync\+Up\+Req\+Denied}}
\index{handle\+Sync\+Up\+Req\+Denied@{handle\+Sync\+Up\+Req\+Denied}!Client@{Client}}
\subsubsection{\texorpdfstring{handle\+Sync\+Up\+Req\+Denied()}{handleSyncUpReqDenied()}}
{\footnotesize\ttfamily void Client.\+handle\+Sync\+Up\+Req\+Denied (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
This is called when the sync up request is denied.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: server\textquotesingle{}s reply \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a9f7f543fd16e253e80ab4f3a814cfc25}\label{classClient_a9f7f543fd16e253e80ab4f3a814cfc25}}
\index{Client@{Client}!initiate\+Syncdown@{initiate\+Syncdown}}
\index{initiate\+Syncdown@{initiate\+Syncdown}!Client@{Client}}
\subsubsection{\texorpdfstring{initiate\+Syncdown()}{initiateSyncdown()}}
{\footnotesize\ttfamily void Client.\+initiate\+Syncdown (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Send the sync down request to the server.
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a19f23cc8387bc794a950fe11971c5c48}\label{classClient_a19f23cc8387bc794a950fe11971c5c48}}
\index{Client@{Client}!initiate\+Syncup@{initiate\+Syncup}}
\index{initiate\+Syncup@{initiate\+Syncup}!Client@{Client}}
\subsubsection{\texorpdfstring{initiate\+Syncup()}{initiateSyncup()}}
{\footnotesize\ttfamily void Client.\+initiate\+Syncup (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Send the sync up request to the server.
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a7ae00d9a9515ede5f609a12db8c197c1}\label{classClient_a7ae00d9a9515ede5f609a12db8c197c1}}
\index{Client@{Client}!perform\+Sync\+Down@{perform\+Sync\+Down}}
\index{perform\+Sync\+Down@{perform\+Sync\+Down}!Client@{Client}}
\subsubsection{\texorpdfstring{perform\+Sync\+Down()}{performSyncDown()}}
{\footnotesize\ttfamily void Client.\+perform\+Sync\+Down (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception, Digest\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Starts the sync down process. This is called when the client gets an approval for sync down request or an instruction to perform sync down from server.
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Digest\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_af85d7f80493c4736f4a343c83a546aa7}\label{classClient_af85d7f80493c4736f4a343c83a546aa7}}
\index{Client@{Client}!process\+Delta\+File@{process\+Delta\+File}}
\index{process\+Delta\+File@{process\+Delta\+File}!Client@{Client}}
\subsubsection{\texorpdfstring{process\+Delta\+File()}{processDeltaFile()}}
{\footnotesize\ttfamily void Client.\+process\+Delta\+File (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception, Invalid\+Signature\+File\hspace{0.3cm}{\ttfamily [inline]}}
This is called when client receives a part of the delta file.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: contains a part of the delta file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Invalid\+Signature\+File} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a159cb4c810266496101380bb3f97a404}\label{classClient_a159cb4c810266496101380bb3f97a404}}
\index{Client@{Client}!process\+Sig\+File@{process\+Sig\+File}}
\index{process\+Sig\+File@{process\+Sig\+File}!Client@{Client}}
\subsubsection{\texorpdfstring{process\+Sig\+File()}{processSigFile()}}
{\footnotesize\ttfamily void Client.\+process\+Sig\+File (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception, Invalid\+Signature\+File\hspace{0.3cm}{\ttfamily [inline]}}
This is called when client receives a part of the signature file.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: contains a part of the signature file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Invalid\+Signature\+File} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a37480e8b43dab360f9a7b6b761eb56b6}\label{classClient_a37480e8b43dab360f9a7b6b761eb56b6}}
\index{Client@{Client}!read\+Config@{read\+Config}}
\index{read\+Config@{read\+Config}!Client@{Client}}
\subsubsection{\texorpdfstring{read\+Config()}{readConfig()}}
{\footnotesize\ttfamily void Client.\+read\+Config (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Reads the configuration file and sets the server address, port and working directory. \mbox{\Hypertarget{classClient_a28549389b6f3c38126d03a6015ea5a76}\label{classClient_a28549389b6f3c38126d03a6015ea5a76}}
\index{Client@{Client}!start@{start}}
\index{start@{start}!Client@{Client}}
\subsubsection{\texorpdfstring{start()}{start()}}
{\footnotesize\ttfamily void Client.\+start (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Reads config file, connects to the server and creates the client side G\+UI.
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_aa871ac5c9cf88b5714bc2ffc93463c16}\label{classClient_aa871ac5c9cf88b5714bc2ffc93463c16}}
\index{Client@{Client}!try\+To\+Login@{try\+To\+Login}}
\index{try\+To\+Login@{try\+To\+Login}!Client@{Client}}
\subsubsection{\texorpdfstring{try\+To\+Login()}{tryToLogin()}}
{\footnotesize\ttfamily void Client.\+try\+To\+Login (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Sends login request.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: this contains the username and password \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classClient_a27ff78bc046c2e1369e94401adcee56d}\label{classClient_a27ff78bc046c2e1369e94401adcee56d}}
\index{Client@{Client}!try\+To\+Signup@{try\+To\+Signup}}
\index{try\+To\+Signup@{try\+To\+Signup}!Client@{Client}}
\subsubsection{\texorpdfstring{try\+To\+Signup()}{tryToSignup()}}
{\footnotesize\ttfamily void Client.\+try\+To\+Signup (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Send signup request.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: this contains username and password \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Client/Client.\+java\end{DoxyCompactItemize}
digraph "Client"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="Client",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node2 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" gui" ];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndeltaFileOut" ];
Node4 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ];
Node5 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" autoSyncThread" ];
Node6 [label="AutoSyncThread",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node2 -> Node6 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node7 -> Node6 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" mf" ];
Node7 [label="MainFrame",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classMainFrame.html"];
Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid"];
Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncDown\nsyncUp\nautoSyncButton" ];
Node8 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node9 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" output" ];
Node9 [label="JTextArea",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node2 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node10 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ];
Node10 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node11 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" autoSyncLabel1\nautoSyncLabel2\nuserNamelabel" ];
Node11 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node12 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" connection" ];
Node12 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node13 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ];
Node13 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node2 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ];
Node4 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ];
Node5 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ];
Node14 -> Node12 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ];
Node14 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
f58b652bc96dc9c71182b9b2aebddcfc
\ No newline at end of file
\hypertarget{classConnection}{}\section{Connection Class Reference}
\label{classConnection}\index{Connection@{Connection}}
Collaboration diagram for Connection\+:
% FIG 0
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\hyperlink{classConnection_adc308009f2f493dda9e69a45a579edef}{Connection} (Socket socket, Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$ in\+Queue) throws I\+O\+Exception
\item
void \hyperlink{classConnection_a339605e1bd2344ecc6079f7a26cead17}{send} (\hyperlink{classMsg}{Msg} msg)
\item
void \hyperlink{classConnection_ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3}{send\+File} (File f, int file\+Type) throws I\+O\+Exception
\item
void \hyperlink{classConnection_a46315dd5e68a4ea009c9ac8faa95fe5f}{start\+Rec\+Send\+Threads} ()
\item
void \hyperlink{classConnection_a5c52903d0c5d5529892af3bed85ca13f}{close} ()
\item
\hyperlink{classConnection_adc308009f2f493dda9e69a45a579edef}{Connection} (Socket socket, Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$ in\+Queue) throws I\+O\+Exception
\item
void \hyperlink{classConnection_a339605e1bd2344ecc6079f7a26cead17}{send} (\hyperlink{classMsg}{Msg} msg)
\item
void \hyperlink{classConnection_ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3}{send\+File} (File f, int file\+Type) throws I\+O\+Exception
\item
void \hyperlink{classConnection_a46315dd5e68a4ea009c9ac8faa95fe5f}{start\+Rec\+Send\+Threads} ()
\item
void \hyperlink{classConnection_a5c52903d0c5d5529892af3bed85ca13f}{close} ()
\end{DoxyCompactItemize}
\subsection{Detailed Description}
Represents a network connection.
\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classConnection_adc308009f2f493dda9e69a45a579edef}\label{classConnection_adc308009f2f493dda9e69a45a579edef}}
\index{Connection@{Connection}!Connection@{Connection}}
\index{Connection@{Connection}!Connection@{Connection}}
\subsubsection{\texorpdfstring{Connection()}{Connection()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Connection.\+Connection (\begin{DoxyParamCaption}\item[{Socket}]{socket, }\item[{Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$}]{in\+Queue }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em socket} & \+: network socket for this connection \\
\hline
{\em in\+Queue} & \+: main thread\textquotesingle{}s inbox, all incoming messages will be put in this queue \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classConnection_adc308009f2f493dda9e69a45a579edef}\label{classConnection_adc308009f2f493dda9e69a45a579edef}}
\index{Connection@{Connection}!Connection@{Connection}}
\index{Connection@{Connection}!Connection@{Connection}}
\subsubsection{\texorpdfstring{Connection()}{Connection()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily Connection.\+Connection (\begin{DoxyParamCaption}\item[{Socket}]{socket, }\item[{Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$}]{in\+Queue }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em socket} & \+: network socket for this connection \\
\hline
{\em in\+Queue} & \+: main thread\textquotesingle{}s inbox, all incoming messages will be put in this queue \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classConnection_a5c52903d0c5d5529892af3bed85ca13f}\label{classConnection_a5c52903d0c5d5529892af3bed85ca13f}}
\index{Connection@{Connection}!close@{close}}
\index{close@{close}!Connection@{Connection}}
\subsubsection{\texorpdfstring{close()}{close()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Connection.\+close (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Closes the connection\textquotesingle{}s socket and stops the send and receive threads. \mbox{\Hypertarget{classConnection_a5c52903d0c5d5529892af3bed85ca13f}\label{classConnection_a5c52903d0c5d5529892af3bed85ca13f}}
\index{Connection@{Connection}!close@{close}}
\index{close@{close}!Connection@{Connection}}
\subsubsection{\texorpdfstring{close()}{close()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Connection.\+close (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Closes the connection\textquotesingle{}s socket and stops the send and receive threads. \mbox{\Hypertarget{classConnection_a339605e1bd2344ecc6079f7a26cead17}\label{classConnection_a339605e1bd2344ecc6079f7a26cead17}}
\index{Connection@{Connection}!send@{send}}
\index{send@{send}!Connection@{Connection}}
\subsubsection{\texorpdfstring{send()}{send()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Connection.\+send (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Adds the given message to the send queue.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: message to be sent \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classConnection_a339605e1bd2344ecc6079f7a26cead17}\label{classConnection_a339605e1bd2344ecc6079f7a26cead17}}
\index{Connection@{Connection}!send@{send}}
\index{send@{send}!Connection@{Connection}}
\subsubsection{\texorpdfstring{send()}{send()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Connection.\+send (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Adds the given message to the send queue.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: message to be sent \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classConnection_ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3}\label{classConnection_ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3}}
\index{Connection@{Connection}!send\+File@{send\+File}}
\index{send\+File@{send\+File}!Connection@{Connection}}
\subsubsection{\texorpdfstring{send\+File()}{sendFile()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Connection.\+send\+File (\begin{DoxyParamCaption}\item[{File}]{f, }\item[{int}]{file\+Type }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Send the whole file through this connection.
\begin{DoxyParams}{Parameters}
{\em f} & \+: file to be sent \\
\hline
{\em file\+Type} & \+: either S\+I\+G\+F\+I\+LE or D\+E\+L\+T\+A\+F\+I\+LE \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classConnection_ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3}\label{classConnection_ad2a8ca45f2acfa0d47fa4f7c2a8f6dc3}}
\index{Connection@{Connection}!send\+File@{send\+File}}
\index{send\+File@{send\+File}!Connection@{Connection}}
\subsubsection{\texorpdfstring{send\+File()}{sendFile()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Connection.\+send\+File (\begin{DoxyParamCaption}\item[{File}]{f, }\item[{int}]{file\+Type }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Send the whole file through this connection.
\begin{DoxyParams}{Parameters}
{\em f} & \+: file to be sent \\
\hline
{\em file\+Type} & \+: either S\+I\+G\+F\+I\+LE or D\+E\+L\+T\+A\+F\+I\+LE \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classConnection_a46315dd5e68a4ea009c9ac8faa95fe5f}\label{classConnection_a46315dd5e68a4ea009c9ac8faa95fe5f}}
\index{Connection@{Connection}!start\+Rec\+Send\+Threads@{start\+Rec\+Send\+Threads}}
\index{start\+Rec\+Send\+Threads@{start\+Rec\+Send\+Threads}!Connection@{Connection}}
\subsubsection{\texorpdfstring{start\+Rec\+Send\+Threads()}{startRecSendThreads()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Connection.\+start\+Rec\+Send\+Threads (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Creates send and receive threads. Send thread sends all the messages that it receives from other parts of the program through this connection. Receive thread receives all the messages from this connection and passes them on to main thread. \mbox{\Hypertarget{classConnection_a46315dd5e68a4ea009c9ac8faa95fe5f}\label{classConnection_a46315dd5e68a4ea009c9ac8faa95fe5f}}
\index{Connection@{Connection}!start\+Rec\+Send\+Threads@{start\+Rec\+Send\+Threads}}
\index{start\+Rec\+Send\+Threads@{start\+Rec\+Send\+Threads}!Connection@{Connection}}
\subsubsection{\texorpdfstring{start\+Rec\+Send\+Threads()}{startRecSendThreads()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Connection.\+start\+Rec\+Send\+Threads (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Creates send and receive threads. Send thread sends all the messages that it receives from other parts of the program through this connection. Receive thread receives all the messages from this connection and passes them on to main thread.
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Connection.\+java\end{DoxyCompactItemize}
digraph "Connection"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ];
Node2 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ];
Node3 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ];
Node4 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ];
Node5 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ];
Node6 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
f815d83cb7896337695a3d4812a28e48
\ No newline at end of file
\hypertarget{classDatabase}{}\section{Database Class Reference}
\label{classDatabase}\index{Database@{Database}}
Collaboration diagram for Database\+:
% FIG 0
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\hyperlink{classDatabase_ae164fd695758d409242898f63f7e28b9}{Database} (String db\+File)
\item
boolean \hyperlink{classDatabase_aba056b29124441dedd4663df22d9d5e7}{add\+User} (String uname, String pass)
\item
boolean \hyperlink{classDatabase_af7388b47545fe298ea7219d308e3e3c5}{check\+Login} (String uname, String pass)
\end{DoxyCompactItemize}
\subsection{Detailed Description}
Represents a sqlite database used to store client login information.
\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classDatabase_ae164fd695758d409242898f63f7e28b9}\label{classDatabase_ae164fd695758d409242898f63f7e28b9}}
\index{Database@{Database}!Database@{Database}}
\index{Database@{Database}!Database@{Database}}
\subsubsection{\texorpdfstring{Database()}{Database()}}
{\footnotesize\ttfamily Database.\+Database (\begin{DoxyParamCaption}\item[{String}]{db\+File }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em db\+File} & \+: \hyperlink{classDatabase}{Database} file to be used. If the file does not exist it will be created. \\
\hline
\end{DoxyParams}
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classDatabase_aba056b29124441dedd4663df22d9d5e7}\label{classDatabase_aba056b29124441dedd4663df22d9d5e7}}
\index{Database@{Database}!add\+User@{add\+User}}
\index{add\+User@{add\+User}!Database@{Database}}
\subsubsection{\texorpdfstring{add\+User()}{addUser()}}
{\footnotesize\ttfamily boolean Database.\+add\+User (\begin{DoxyParamCaption}\item[{String}]{uname, }\item[{String}]{pass }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Add a new user to the database.
\begin{DoxyParams}{Parameters}
{\em uname} & \+: username \\
\hline
{\em pass} & \+: password \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\+: true if user was added false otherwise
\end{DoxyReturn}
\mbox{\Hypertarget{classDatabase_af7388b47545fe298ea7219d308e3e3c5}\label{classDatabase_af7388b47545fe298ea7219d308e3e3c5}}
\index{Database@{Database}!check\+Login@{check\+Login}}
\index{check\+Login@{check\+Login}!Database@{Database}}
\subsubsection{\texorpdfstring{check\+Login()}{checkLogin()}}
{\footnotesize\ttfamily boolean Database.\+check\+Login (\begin{DoxyParamCaption}\item[{String}]{uname, }\item[{String}]{pass }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Check if the given username and password is valid.
\begin{DoxyParams}{Parameters}
{\em uname} & \+: username \\
\hline
{\em pass} & \+: password \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\+: true if login is valid false otherwise
\end{DoxyReturn}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Database.\+java\end{DoxyCompactItemize}
digraph "Database"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="Database",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dbConnection" ];
Node2 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ];
Node3 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ];
Node4 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ];
Node5 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ];
Node6 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ];
Node7 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
340dc5fc658f655ce263a984492e0d20
\ No newline at end of file
\hypertarget{classFileOps}{}\section{File\+Ops Class Reference}
\label{classFileOps}\index{File\+Ops@{File\+Ops}}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item
static void \hyperlink{classFileOps_a3d6960fa284423a1b015da0558c96113}{delete\+Dir} (File dir)
\item
static void \hyperlink{classFileOps_abcbaa79b342798fb73b95ab0d9a5f35c}{create\+Folder\+From\+A\+I\+O\+File} (File aio, String parent\+Dir) throws I\+O\+Exception
\item
static void \hyperlink{classFileOps_a01465191b85c90ff878bbde8406200be}{create\+A\+I\+O\+File} (File src\+Dir, File aio) throws I\+O\+Exception
\item
static void \hyperlink{classFileOps_a3d6960fa284423a1b015da0558c96113}{delete\+Dir} (File dir)
\item
static void \hyperlink{classFileOps_abcbaa79b342798fb73b95ab0d9a5f35c}{create\+Folder\+From\+A\+I\+O\+File} (File aio, String parent\+Dir) throws I\+O\+Exception
\item
static void \hyperlink{classFileOps_a01465191b85c90ff878bbde8406200be}{create\+A\+I\+O\+File} (File src\+Dir, File aio) throws I\+O\+Exception
\end{DoxyCompactItemize}
\subsection{Detailed Description}
This class provides support for handling A\+IO files.
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classFileOps_a01465191b85c90ff878bbde8406200be}\label{classFileOps_a01465191b85c90ff878bbde8406200be}}
\index{File\+Ops@{File\+Ops}!create\+A\+I\+O\+File@{create\+A\+I\+O\+File}}
\index{create\+A\+I\+O\+File@{create\+A\+I\+O\+File}!File\+Ops@{File\+Ops}}
\subsubsection{\texorpdfstring{create\+A\+I\+O\+File()}{createAIOFile()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily static void File\+Ops.\+create\+A\+I\+O\+File (\begin{DoxyParamCaption}\item[{File}]{src\+Dir, }\item[{File}]{aio }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
Creates A\+IO file from the given folder.
\begin{DoxyParams}{Parameters}
{\em src\+Dir} & \+: folder from which to create A\+IO file \\
\hline
{\em aio} & \+: output A\+IO file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classFileOps_a01465191b85c90ff878bbde8406200be}\label{classFileOps_a01465191b85c90ff878bbde8406200be}}
\index{File\+Ops@{File\+Ops}!create\+A\+I\+O\+File@{create\+A\+I\+O\+File}}
\index{create\+A\+I\+O\+File@{create\+A\+I\+O\+File}!File\+Ops@{File\+Ops}}
\subsubsection{\texorpdfstring{create\+A\+I\+O\+File()}{createAIOFile()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily static void File\+Ops.\+create\+A\+I\+O\+File (\begin{DoxyParamCaption}\item[{File}]{src\+Dir, }\item[{File}]{aio }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
Creates A\+IO file from the given folder.
\begin{DoxyParams}{Parameters}
{\em src\+Dir} & \+: folder from which to create A\+IO file \\
\hline
{\em aio} & \+: output A\+IO file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classFileOps_abcbaa79b342798fb73b95ab0d9a5f35c}\label{classFileOps_abcbaa79b342798fb73b95ab0d9a5f35c}}
\index{File\+Ops@{File\+Ops}!create\+Folder\+From\+A\+I\+O\+File@{create\+Folder\+From\+A\+I\+O\+File}}
\index{create\+Folder\+From\+A\+I\+O\+File@{create\+Folder\+From\+A\+I\+O\+File}!File\+Ops@{File\+Ops}}
\subsubsection{\texorpdfstring{create\+Folder\+From\+A\+I\+O\+File()}{createFolderFromAIOFile()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily static void File\+Ops.\+create\+Folder\+From\+A\+I\+O\+File (\begin{DoxyParamCaption}\item[{File}]{aio, }\item[{String}]{parent\+Dir }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
Create the whole folder with all the files inside from the given A\+IO file.
\begin{DoxyParams}{Parameters}
{\em aio} & \+: A\+IO file to create the folder from \\
\hline
{\em parent\+Dir} & \+: create folder at this location \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classFileOps_abcbaa79b342798fb73b95ab0d9a5f35c}\label{classFileOps_abcbaa79b342798fb73b95ab0d9a5f35c}}
\index{File\+Ops@{File\+Ops}!create\+Folder\+From\+A\+I\+O\+File@{create\+Folder\+From\+A\+I\+O\+File}}
\index{create\+Folder\+From\+A\+I\+O\+File@{create\+Folder\+From\+A\+I\+O\+File}!File\+Ops@{File\+Ops}}
\subsubsection{\texorpdfstring{create\+Folder\+From\+A\+I\+O\+File()}{createFolderFromAIOFile()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily static void File\+Ops.\+create\+Folder\+From\+A\+I\+O\+File (\begin{DoxyParamCaption}\item[{File}]{aio, }\item[{String}]{parent\+Dir }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
Create the whole folder with all the files inside from the given A\+IO file.
\begin{DoxyParams}{Parameters}
{\em aio} & \+: A\+IO file to create the folder from \\
\hline
{\em parent\+Dir} & \+: create folder at this location \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classFileOps_a3d6960fa284423a1b015da0558c96113}\label{classFileOps_a3d6960fa284423a1b015da0558c96113}}
\index{File\+Ops@{File\+Ops}!delete\+Dir@{delete\+Dir}}
\index{delete\+Dir@{delete\+Dir}!File\+Ops@{File\+Ops}}
\subsubsection{\texorpdfstring{delete\+Dir()}{deleteDir()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily static void File\+Ops.\+delete\+Dir (\begin{DoxyParamCaption}\item[{File}]{dir }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
Deletes the given directory.
\begin{DoxyParams}{Parameters}
{\em dir} & \+: directory to delete \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classFileOps_a3d6960fa284423a1b015da0558c96113}\label{classFileOps_a3d6960fa284423a1b015da0558c96113}}
\index{File\+Ops@{File\+Ops}!delete\+Dir@{delete\+Dir}}
\index{delete\+Dir@{delete\+Dir}!File\+Ops@{File\+Ops}}
\subsubsection{\texorpdfstring{delete\+Dir()}{deleteDir()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily static void File\+Ops.\+delete\+Dir (\begin{DoxyParamCaption}\item[{File}]{dir }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
Deletes the given directory.
\begin{DoxyParams}{Parameters}
{\em dir} & \+: directory to delete \\
\hline
\end{DoxyParams}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/File\+Ops.\+java\end{DoxyCompactItemize}
\hypertarget{classListeningSocket}{}\section{Listening\+Socket Class Reference}
\label{classListeningSocket}\index{Listening\+Socket@{Listening\+Socket}}
Collaboration diagram for Listening\+Socket\+:
% FIG 0
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\hyperlink{classListeningSocket_a7553b5ab4c0b2d817038ecfab7c13963}{Listening\+Socket} (Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$ inbox)
\item
\hyperlink{classListeningSocket_a6c691efcc63a2aa34b01132a0641f9d2}{Listening\+Socket} (int port, Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$ inbox)
\item
void \hyperlink{classListeningSocket_a88951dfeb85a42f083980aa8e0d10406}{start} () throws I\+O\+Exception
\item
int \hyperlink{classListeningSocket_a8cccb422e17de624db0952b616f83376}{get\+Port} ()
\item
String \hyperlink{classListeningSocket_ab84a6dd4f9555e5f16752042aeaec9e8}{get\+Socket\+Addr} ()
\end{DoxyCompactItemize}
\subsection{Detailed Description}
Represents the server socket used to accept client connections.
\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classListeningSocket_a7553b5ab4c0b2d817038ecfab7c13963}\label{classListeningSocket_a7553b5ab4c0b2d817038ecfab7c13963}}
\index{Listening\+Socket@{Listening\+Socket}!Listening\+Socket@{Listening\+Socket}}
\index{Listening\+Socket@{Listening\+Socket}!Listening\+Socket@{Listening\+Socket}}
\subsubsection{\texorpdfstring{Listening\+Socket()}{ListeningSocket()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Listening\+Socket.\+Listening\+Socket (\begin{DoxyParamCaption}\item[{Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$}]{inbox }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em inbox} & \+: inbox of main thread \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classListeningSocket_a6c691efcc63a2aa34b01132a0641f9d2}\label{classListeningSocket_a6c691efcc63a2aa34b01132a0641f9d2}}
\index{Listening\+Socket@{Listening\+Socket}!Listening\+Socket@{Listening\+Socket}}
\index{Listening\+Socket@{Listening\+Socket}!Listening\+Socket@{Listening\+Socket}}
\subsubsection{\texorpdfstring{Listening\+Socket()}{ListeningSocket()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily Listening\+Socket.\+Listening\+Socket (\begin{DoxyParamCaption}\item[{int}]{port, }\item[{Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$}]{inbox }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em port} & \+: port number on which to listen for new connections \\
\hline
{\em inbox} & \+: inbox of main thread \\
\hline
\end{DoxyParams}
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classListeningSocket_a8cccb422e17de624db0952b616f83376}\label{classListeningSocket_a8cccb422e17de624db0952b616f83376}}
\index{Listening\+Socket@{Listening\+Socket}!get\+Port@{get\+Port}}
\index{get\+Port@{get\+Port}!Listening\+Socket@{Listening\+Socket}}
\subsubsection{\texorpdfstring{get\+Port()}{getPort()}}
{\footnotesize\ttfamily int Listening\+Socket.\+get\+Port (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyReturn}{Returns}
port number on which socket is running or 0 if the socket is not running
\end{DoxyReturn}
\mbox{\Hypertarget{classListeningSocket_ab84a6dd4f9555e5f16752042aeaec9e8}\label{classListeningSocket_ab84a6dd4f9555e5f16752042aeaec9e8}}
\index{Listening\+Socket@{Listening\+Socket}!get\+Socket\+Addr@{get\+Socket\+Addr}}
\index{get\+Socket\+Addr@{get\+Socket\+Addr}!Listening\+Socket@{Listening\+Socket}}
\subsubsection{\texorpdfstring{get\+Socket\+Addr()}{getSocketAddr()}}
{\footnotesize\ttfamily String Listening\+Socket.\+get\+Socket\+Addr (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyReturn}{Returns}
local address of the socket
\end{DoxyReturn}
\mbox{\Hypertarget{classListeningSocket_a88951dfeb85a42f083980aa8e0d10406}\label{classListeningSocket_a88951dfeb85a42f083980aa8e0d10406}}
\index{Listening\+Socket@{Listening\+Socket}!start@{start}}
\index{start@{start}!Listening\+Socket@{Listening\+Socket}}
\subsubsection{\texorpdfstring{start()}{start()}}
{\footnotesize\ttfamily void Listening\+Socket.\+start (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Creates a server socket and starts a new thread to accept the incoming connections.
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Listening\+Socket.\+java\end{DoxyCompactItemize}
digraph "ListeningSocket"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="ListeningSocket",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" serverSocket" ];
Node2 [label="ServerSocket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node3 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
4ca00064eaa488abc27eb61b4202d333
\ No newline at end of file
\hypertarget{classLoginFrame}{}\section{Login\+Frame Class Reference}
\label{classLoginFrame}\index{Login\+Frame@{Login\+Frame}}
Inheritance diagram for Login\+Frame\+:
% FIG 0
Collaboration diagram for Login\+Frame\+:
% FIG 1
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
void \hyperlink{classLoginFrame_aa86ab7ad8d64bfe04cdbb612150ca7c5}{update\+Output} (String msg)
\end{DoxyCompactItemize}
\subsection{Detailed Description}
G\+UI for the login form.
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classLoginFrame_aa86ab7ad8d64bfe04cdbb612150ca7c5}\label{classLoginFrame_aa86ab7ad8d64bfe04cdbb612150ca7c5}}
\index{Login\+Frame@{Login\+Frame}!update\+Output@{update\+Output}}
\index{update\+Output@{update\+Output}!Login\+Frame@{Login\+Frame}}
\subsubsection{\texorpdfstring{update\+Output()}{updateOutput()}}
{\footnotesize\ttfamily void Login\+Frame.\+update\+Output (\begin{DoxyParamCaption}\item[{String}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Update the output text.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: new output text \\
\hline
\end{DoxyParams}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Client/Login\+Frame.\+java\end{DoxyCompactItemize}
digraph "LoginFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node2 [label="LoginFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid"];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" login\ngotoSignup" ];
Node4 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" output" ];
Node5 [label="JTextArea",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" username" ];
Node6 [label="JTextField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node7 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" password" ];
Node8 [label="JPasswordField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node9 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ];
Node9 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node10 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" usernameLabel\npasswordLabel" ];
Node10 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
a622adcb1ff753b61e1e460fd275bbe3
\ No newline at end of file
digraph "LoginFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node0 [label="LoginFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid"];
Node1 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
185703882abee69568a4f2fe2c32d814
\ No newline at end of file
\hypertarget{classMainFrame}{}\section{Main\+Frame Class Reference}
\label{classMainFrame}\index{Main\+Frame@{Main\+Frame}}
Inheritance diagram for Main\+Frame\+:
% FIG 0
Collaboration diagram for Main\+Frame\+:
% FIG 1
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
synchronized void \hyperlink{classMainFrame_a3a0ea249d05e0ad786c8663727fedf05}{update\+Output} (String m1, String m2)
\item
synchronized void \hyperlink{classMainFrame_ac74abf01d0a5c95cc97d22ac53394a60}{update\+Auto\+Sync\+Status} (boolean is\+On, int interval)
\end{DoxyCompactItemize}
\subsection{Detailed Description}
G\+UI for when client is logged in.
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classMainFrame_ac74abf01d0a5c95cc97d22ac53394a60}\label{classMainFrame_ac74abf01d0a5c95cc97d22ac53394a60}}
\index{Main\+Frame@{Main\+Frame}!update\+Auto\+Sync\+Status@{update\+Auto\+Sync\+Status}}
\index{update\+Auto\+Sync\+Status@{update\+Auto\+Sync\+Status}!Main\+Frame@{Main\+Frame}}
\subsubsection{\texorpdfstring{update\+Auto\+Sync\+Status()}{updateAutoSyncStatus()}}
{\footnotesize\ttfamily synchronized void Main\+Frame.\+update\+Auto\+Sync\+Status (\begin{DoxyParamCaption}\item[{boolean}]{is\+On, }\item[{int}]{interval }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Update the auto sync status.
\begin{DoxyParams}{Parameters}
{\em is\+On} & \+: is auto sync on. \\
\hline
{\em interval} & \+: auto sync time interval \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classMainFrame_a3a0ea249d05e0ad786c8663727fedf05}\label{classMainFrame_a3a0ea249d05e0ad786c8663727fedf05}}
\index{Main\+Frame@{Main\+Frame}!update\+Output@{update\+Output}}
\index{update\+Output@{update\+Output}!Main\+Frame@{Main\+Frame}}
\subsubsection{\texorpdfstring{update\+Output()}{updateOutput()}}
{\footnotesize\ttfamily synchronized void Main\+Frame.\+update\+Output (\begin{DoxyParamCaption}\item[{String}]{m1, }\item[{String}]{m2 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Update the output text.
\begin{DoxyParams}{Parameters}
{\em m1} & \+: line1 text, if null then line1 text is unchanged. \\
\hline
{\em m2} & \+: line2 text, if null then line2 text is unchanged. \\
\hline
\end{DoxyParams}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Client/Main\+Frame.\+java\end{DoxyCompactItemize}
digraph "MainFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node2 [label="MainFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid"];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncDown\nsyncUp\nautoSyncButton" ];
Node4 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" output" ];
Node5 [label="JTextArea",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node6 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ];
Node7 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" autoSyncLabel1\nautoSyncLabel2\nuserNamelabel" ];
Node8 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
048d4c5591a1a90ca1ad9c131df2847a
\ No newline at end of file
digraph "MainFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node0 [label="MainFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid"];
Node1 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
d5926da397d7e0b756fac9dbca87b748
\ No newline at end of file
\hypertarget{classMainThread}{}\section{Main\+Thread Class Reference}
\label{classMainThread}\index{Main\+Thread@{Main\+Thread}}
Collaboration diagram for Main\+Thread\+:
% FIG 0
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\hyperlink{classMainThread_aa16763cb2b5f289a0d443b5a1df8eb64}{Main\+Thread} (String cfn)
\item
void \hyperlink{classMainThread_a8b6c064abc4d75fcecb94cb432dd543c}{read\+Config} () throws I\+O\+Exception
\item
String \hyperlink{classMainThread_acc9c240699d7df8d25c81f261e2c9604}{check\+Login} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
String \hyperlink{classMainThread_a8c60f0ba141e2b76766adb77c6fd177f}{signup} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classMainThread_a02b10b098a47dd28fc55ae97d18050d2}{handle\+Login} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classMainThread_affe1cbd87d540ab1650feb358ecc42e7}{handle\+Signup} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classMainThread_ace7c99c112360940b0facec17874692d}{start} () throws I\+O\+Exception
\end{DoxyCompactItemize}
\subsection{Detailed Description}
Represents the main thread server thread. It receives all the messages from clients and forwards them to appropriate Sync\+Threads.
\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classMainThread_aa16763cb2b5f289a0d443b5a1df8eb64}\label{classMainThread_aa16763cb2b5f289a0d443b5a1df8eb64}}
\index{Main\+Thread@{Main\+Thread}!Main\+Thread@{Main\+Thread}}
\index{Main\+Thread@{Main\+Thread}!Main\+Thread@{Main\+Thread}}
\subsubsection{\texorpdfstring{Main\+Thread()}{MainThread()}}
{\footnotesize\ttfamily Main\+Thread.\+Main\+Thread (\begin{DoxyParamCaption}\item[{String}]{cfn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em cfn} & \+: config file name \\
\hline
\end{DoxyParams}
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classMainThread_acc9c240699d7df8d25c81f261e2c9604}\label{classMainThread_acc9c240699d7df8d25c81f261e2c9604}}
\index{Main\+Thread@{Main\+Thread}!check\+Login@{check\+Login}}
\index{check\+Login@{check\+Login}!Main\+Thread@{Main\+Thread}}
\subsubsection{\texorpdfstring{check\+Login()}{checkLogin()}}
{\footnotesize\ttfamily String Main\+Thread.\+check\+Login (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Processes login request from client and replies accordingly.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: contains login request \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\+: username if valid login else null
\end{DoxyReturn}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classMainThread_a02b10b098a47dd28fc55ae97d18050d2}\label{classMainThread_a02b10b098a47dd28fc55ae97d18050d2}}
\index{Main\+Thread@{Main\+Thread}!handle\+Login@{handle\+Login}}
\index{handle\+Login@{handle\+Login}!Main\+Thread@{Main\+Thread}}
\subsubsection{\texorpdfstring{handle\+Login()}{handleLogin()}}
{\footnotesize\ttfamily void Main\+Thread.\+handle\+Login (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Calls check\+Login and adds the client to appropriate sync thread if valid login. If sync thread for the client is not running start a new sync thread for the client.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: contains login request \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classMainThread_affe1cbd87d540ab1650feb358ecc42e7}\label{classMainThread_affe1cbd87d540ab1650feb358ecc42e7}}
\index{Main\+Thread@{Main\+Thread}!handle\+Signup@{handle\+Signup}}
\index{handle\+Signup@{handle\+Signup}!Main\+Thread@{Main\+Thread}}
\subsubsection{\texorpdfstring{handle\+Signup()}{handleSignup()}}
{\footnotesize\ttfamily void Main\+Thread.\+handle\+Signup (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Calls signup and creates appropriate directories for the new user if signup is successful.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: contains signup request \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classMainThread_a8b6c064abc4d75fcecb94cb432dd543c}\label{classMainThread_a8b6c064abc4d75fcecb94cb432dd543c}}
\index{Main\+Thread@{Main\+Thread}!read\+Config@{read\+Config}}
\index{read\+Config@{read\+Config}!Main\+Thread@{Main\+Thread}}
\subsubsection{\texorpdfstring{read\+Config()}{readConfig()}}
{\footnotesize\ttfamily void Main\+Thread.\+read\+Config (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Reads the config file and sets port and working directory.
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classMainThread_a8c60f0ba141e2b76766adb77c6fd177f}\label{classMainThread_a8c60f0ba141e2b76766adb77c6fd177f}}
\index{Main\+Thread@{Main\+Thread}!signup@{signup}}
\index{signup@{signup}!Main\+Thread@{Main\+Thread}}
\subsubsection{\texorpdfstring{signup()}{signup()}}
{\footnotesize\ttfamily String Main\+Thread.\+signup (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Processes signup request from client and replies accordingly.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: contains signup request \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\+: username if signup successful else null
\end{DoxyReturn}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classMainThread_ace7c99c112360940b0facec17874692d}\label{classMainThread_ace7c99c112360940b0facec17874692d}}
\index{Main\+Thread@{Main\+Thread}!start@{start}}
\index{start@{start}!Main\+Thread@{Main\+Thread}}
\subsubsection{\texorpdfstring{start()}{start()}}
{\footnotesize\ttfamily void Main\+Thread.\+start (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Reads config file, initializes database, starts listening socket and waits for the incoming messages.
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Main\+Thread.\+java\end{DoxyCompactItemize}
digraph "MainThread"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="MainThread",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncThreadMap" ];
Node2 [label="Map\< String, SyncThread \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node3 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" listeningSocket" ];
Node4 [label="ListeningSocket",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classListeningSocket.html"];
Node5 -> Node4 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" serverSocket" ];
Node5 [label="ServerSocket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node4 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node6 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" database" ];
Node6 [label="Database",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classDatabase.html"];
Node7 -> Node6 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dbConnection" ];
Node7 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ];
Node8 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ];
Node9 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ];
Node9 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node10 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ];
Node10 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node11 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ];
Node11 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
b3b9fcff524c487614182171c4f19a8d
\ No newline at end of file
\hypertarget{classMsg}{}\section{Msg Class Reference}
\label{classMsg}\index{Msg@{Msg}}
Collaboration diagram for Msg\+:
% FIG 0
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\hyperlink{classMsg_a8cc3de09d885bfeff9e41a534c0c09e3}{Msg} (int type, byte msg\mbox{[}$\,$\mbox{]}, \hyperlink{classConnection}{Connection} connection)
\item
\hyperlink{classMsg_a1350206b00860e9f672a52986beba1e4}{Msg} (int type, Object user\+Data)
\item
void \hyperlink{classMsg_a8e64149c518f7fc14fe154f3851861b5}{reset\+Data\+Input\+Stream} ()
\item
Data\+Input\+Stream \hyperlink{classMsg_a1d7d8181a9490b9b14eebb7c5ce4016e}{get\+Data\+Input\+Stream} ()
\item
Data\+Output\+Stream \hyperlink{classMsg_a10fc1e0ebd649614f7b573c6b5820fe1}{get\+Data\+Output\+Stream} ()
\item
void \hyperlink{classMsg_ae6d18cf6a15045107103de719bc59964}{prepare} () throws I\+O\+Exception
\item
\hyperlink{classMsg_a8cc3de09d885bfeff9e41a534c0c09e3}{Msg} (int type, byte msg\mbox{[}$\,$\mbox{]}, \hyperlink{classConnection}{Connection} connection)
\item
\hyperlink{classMsg_a1350206b00860e9f672a52986beba1e4}{Msg} (int type, Object user\+Data)
\item
void \hyperlink{classMsg_a8e64149c518f7fc14fe154f3851861b5}{reset\+Data\+Input\+Stream} ()
\item
Data\+Input\+Stream \hyperlink{classMsg_a1d7d8181a9490b9b14eebb7c5ce4016e}{get\+Data\+Input\+Stream} ()
\item
Data\+Output\+Stream \hyperlink{classMsg_a10fc1e0ebd649614f7b573c6b5820fe1}{get\+Data\+Output\+Stream} ()
\item
void \hyperlink{classMsg_ae6d18cf6a15045107103de719bc59964}{prepare} () throws I\+O\+Exception
\end{DoxyCompactItemize}
\subsection{Detailed Description}
Represents a message sent either over the network or internally. Defines all the message types and message names.
\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classMsg_a8cc3de09d885bfeff9e41a534c0c09e3}\label{classMsg_a8cc3de09d885bfeff9e41a534c0c09e3}}
\index{Msg@{Msg}!Msg@{Msg}}
\index{Msg@{Msg}!Msg@{Msg}}
\subsubsection{\texorpdfstring{Msg()}{Msg()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}}
{\footnotesize\ttfamily Msg.\+Msg (\begin{DoxyParamCaption}\item[{int}]{type, }\item[{byte}]{msg\mbox{[}$\,$\mbox{]}, }\item[{\hyperlink{classConnection}{Connection}}]{connection }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em type} & \+: Message type \\
\hline
{\em msg} & \+: Message content \\
\hline
{\em connection} & \+: network connection associated with the message \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classMsg_a1350206b00860e9f672a52986beba1e4}\label{classMsg_a1350206b00860e9f672a52986beba1e4}}
\index{Msg@{Msg}!Msg@{Msg}}
\index{Msg@{Msg}!Msg@{Msg}}
\subsubsection{\texorpdfstring{Msg()}{Msg()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}}
{\footnotesize\ttfamily Msg.\+Msg (\begin{DoxyParamCaption}\item[{int}]{type, }\item[{Object}]{user\+Data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em type} & \+: Message type \\
\hline
{\em user\+Data} & \+: Any arbitrary data to be associated with message \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classMsg_a8cc3de09d885bfeff9e41a534c0c09e3}\label{classMsg_a8cc3de09d885bfeff9e41a534c0c09e3}}
\index{Msg@{Msg}!Msg@{Msg}}
\index{Msg@{Msg}!Msg@{Msg}}
\subsubsection{\texorpdfstring{Msg()}{Msg()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}}
{\footnotesize\ttfamily Msg.\+Msg (\begin{DoxyParamCaption}\item[{int}]{type, }\item[{byte}]{msg\mbox{[}$\,$\mbox{]}, }\item[{\hyperlink{classConnection}{Connection}}]{connection }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em type} & \+: Message type \\
\hline
{\em msg} & \+: Message content \\
\hline
{\em connection} & \+: network connection associated with the message \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classMsg_a1350206b00860e9f672a52986beba1e4}\label{classMsg_a1350206b00860e9f672a52986beba1e4}}
\index{Msg@{Msg}!Msg@{Msg}}
\index{Msg@{Msg}!Msg@{Msg}}
\subsubsection{\texorpdfstring{Msg()}{Msg()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}}
{\footnotesize\ttfamily Msg.\+Msg (\begin{DoxyParamCaption}\item[{int}]{type, }\item[{Object}]{user\+Data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em type} & \+: Message type \\
\hline
{\em user\+Data} & \+: Any arbitrary data to be associated with message \\
\hline
\end{DoxyParams}
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classMsg_a1d7d8181a9490b9b14eebb7c5ce4016e}\label{classMsg_a1d7d8181a9490b9b14eebb7c5ce4016e}}
\index{Msg@{Msg}!get\+Data\+Input\+Stream@{get\+Data\+Input\+Stream}}
\index{get\+Data\+Input\+Stream@{get\+Data\+Input\+Stream}!Msg@{Msg}}
\subsubsection{\texorpdfstring{get\+Data\+Input\+Stream()}{getDataInputStream()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Data\+Input\+Stream Msg.\+get\+Data\+Input\+Stream (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Get the input stream to read the message content.
\begin{DoxyReturn}{Returns}
Input stream of content of the message
\end{DoxyReturn}
\mbox{\Hypertarget{classMsg_a1d7d8181a9490b9b14eebb7c5ce4016e}\label{classMsg_a1d7d8181a9490b9b14eebb7c5ce4016e}}
\index{Msg@{Msg}!get\+Data\+Input\+Stream@{get\+Data\+Input\+Stream}}
\index{get\+Data\+Input\+Stream@{get\+Data\+Input\+Stream}!Msg@{Msg}}
\subsubsection{\texorpdfstring{get\+Data\+Input\+Stream()}{getDataInputStream()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily Data\+Input\+Stream Msg.\+get\+Data\+Input\+Stream (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Get the input stream to read the message content.
\begin{DoxyReturn}{Returns}
Input stream of content of the message
\end{DoxyReturn}
\mbox{\Hypertarget{classMsg_a10fc1e0ebd649614f7b573c6b5820fe1}\label{classMsg_a10fc1e0ebd649614f7b573c6b5820fe1}}
\index{Msg@{Msg}!get\+Data\+Output\+Stream@{get\+Data\+Output\+Stream}}
\index{get\+Data\+Output\+Stream@{get\+Data\+Output\+Stream}!Msg@{Msg}}
\subsubsection{\texorpdfstring{get\+Data\+Output\+Stream()}{getDataOutputStream()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Data\+Output\+Stream Msg.\+get\+Data\+Output\+Stream (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Get the output stream to write the message content.
\begin{DoxyReturn}{Returns}
Output stream for content of the message
\end{DoxyReturn}
\mbox{\Hypertarget{classMsg_a10fc1e0ebd649614f7b573c6b5820fe1}\label{classMsg_a10fc1e0ebd649614f7b573c6b5820fe1}}
\index{Msg@{Msg}!get\+Data\+Output\+Stream@{get\+Data\+Output\+Stream}}
\index{get\+Data\+Output\+Stream@{get\+Data\+Output\+Stream}!Msg@{Msg}}
\subsubsection{\texorpdfstring{get\+Data\+Output\+Stream()}{getDataOutputStream()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily Data\+Output\+Stream Msg.\+get\+Data\+Output\+Stream (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Get the output stream to write the message content.
\begin{DoxyReturn}{Returns}
Output stream for content of the message
\end{DoxyReturn}
\mbox{\Hypertarget{classMsg_ae6d18cf6a15045107103de719bc59964}\label{classMsg_ae6d18cf6a15045107103de719bc59964}}
\index{Msg@{Msg}!prepare@{prepare}}
\index{prepare@{prepare}!Msg@{Msg}}
\subsubsection{\texorpdfstring{prepare()}{prepare()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Msg.\+prepare (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Call this method when done writing to the output stream of the message to prepare the message to be sent out.
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classMsg_ae6d18cf6a15045107103de719bc59964}\label{classMsg_ae6d18cf6a15045107103de719bc59964}}
\index{Msg@{Msg}!prepare@{prepare}}
\index{prepare@{prepare}!Msg@{Msg}}
\subsubsection{\texorpdfstring{prepare()}{prepare()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Msg.\+prepare (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Call this method when done writing to the output stream of the message to prepare the message to be sent out.
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classMsg_a8e64149c518f7fc14fe154f3851861b5}\label{classMsg_a8e64149c518f7fc14fe154f3851861b5}}
\index{Msg@{Msg}!reset\+Data\+Input\+Stream@{reset\+Data\+Input\+Stream}}
\index{reset\+Data\+Input\+Stream@{reset\+Data\+Input\+Stream}!Msg@{Msg}}
\subsubsection{\texorpdfstring{reset\+Data\+Input\+Stream()}{resetDataInputStream()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Msg.\+reset\+Data\+Input\+Stream (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Resets the input stream of the message \mbox{\Hypertarget{classMsg_a8e64149c518f7fc14fe154f3851861b5}\label{classMsg_a8e64149c518f7fc14fe154f3851861b5}}
\index{Msg@{Msg}!reset\+Data\+Input\+Stream@{reset\+Data\+Input\+Stream}}
\index{reset\+Data\+Input\+Stream@{reset\+Data\+Input\+Stream}!Msg@{Msg}}
\subsubsection{\texorpdfstring{reset\+Data\+Input\+Stream()}{resetDataInputStream()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Msg.\+reset\+Data\+Input\+Stream (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Resets the input stream of the message
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Msg.\+java\end{DoxyCompactItemize}
digraph "Msg"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="Msg",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" connection" ];
Node2 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ];
Node3 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ];
Node4 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ];
Node5 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ];
Node6 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ];
Node7 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
f1469215a0da2a84087d28f2db630c80
\ No newline at end of file
\hypertarget{classRollingHash}{}\section{Rolling\+Hash Class Reference}
\label{classRollingHash}\index{Rolling\+Hash@{Rolling\+Hash}}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\hyperlink{classRollingHash_abc955cf95e6aec64f808ef776fe43266}{Rolling\+Hash} (int block\+Size)
\item
int \hyperlink{classRollingHash_ae1c0c44cc72f3c0d91a4a3b1eb754a29}{get\+Hash} ()
\item
void \hyperlink{classRollingHash_a08f1b2a90304c01777bc193cbfc12fb4}{reset} ()
\item
void \hyperlink{classRollingHash_acccfdc00e40ba84faab1f89454acdb5f}{update} (byte b)
\item
void \hyperlink{classRollingHash_af25915532b88a26522320f5d18c55dde}{update} (byte in\+Byte, byte out\+Byte)
\item
void \hyperlink{classRollingHash_a364014385c2a6b5ecc2a9d772a697ee1}{update} (byte\mbox{[}$\,$\mbox{]} arr, int offset, int len)
\item
\hyperlink{classRollingHash_abc955cf95e6aec64f808ef776fe43266}{Rolling\+Hash} (int block\+Size)
\item
int \hyperlink{classRollingHash_ae1c0c44cc72f3c0d91a4a3b1eb754a29}{get\+Hash} ()
\item
void \hyperlink{classRollingHash_a08f1b2a90304c01777bc193cbfc12fb4}{reset} ()
\item
void \hyperlink{classRollingHash_acccfdc00e40ba84faab1f89454acdb5f}{update} (byte b)
\item
void \hyperlink{classRollingHash_af25915532b88a26522320f5d18c55dde}{update} (byte in\+Byte, byte out\+Byte)
\item
void \hyperlink{classRollingHash_a364014385c2a6b5ecc2a9d772a697ee1}{update} (byte\mbox{[}$\,$\mbox{]} arr, int offset, int len)
\end{DoxyCompactItemize}
\subsection{Detailed Description}
Contains the rolling hash of a sequence of bytes.
\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classRollingHash_abc955cf95e6aec64f808ef776fe43266}\label{classRollingHash_abc955cf95e6aec64f808ef776fe43266}}
\index{Rolling\+Hash@{Rolling\+Hash}!Rolling\+Hash@{Rolling\+Hash}}
\index{Rolling\+Hash@{Rolling\+Hash}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{Rolling\+Hash()}{RollingHash()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Rolling\+Hash.\+Rolling\+Hash (\begin{DoxyParamCaption}\item[{int}]{block\+Size }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em block\+Size} & \+: size of byte sequence \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classRollingHash_abc955cf95e6aec64f808ef776fe43266}\label{classRollingHash_abc955cf95e6aec64f808ef776fe43266}}
\index{Rolling\+Hash@{Rolling\+Hash}!Rolling\+Hash@{Rolling\+Hash}}
\index{Rolling\+Hash@{Rolling\+Hash}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{Rolling\+Hash()}{RollingHash()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily Rolling\+Hash.\+Rolling\+Hash (\begin{DoxyParamCaption}\item[{int}]{block\+Size }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em block\+Size} & \+: size of byte sequence \\
\hline
\end{DoxyParams}
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classRollingHash_ae1c0c44cc72f3c0d91a4a3b1eb754a29}\label{classRollingHash_ae1c0c44cc72f3c0d91a4a3b1eb754a29}}
\index{Rolling\+Hash@{Rolling\+Hash}!get\+Hash@{get\+Hash}}
\index{get\+Hash@{get\+Hash}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{get\+Hash()}{getHash()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily int Rolling\+Hash.\+get\+Hash (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyReturn}{Returns}
\+: current value of hash
\end{DoxyReturn}
\mbox{\Hypertarget{classRollingHash_ae1c0c44cc72f3c0d91a4a3b1eb754a29}\label{classRollingHash_ae1c0c44cc72f3c0d91a4a3b1eb754a29}}
\index{Rolling\+Hash@{Rolling\+Hash}!get\+Hash@{get\+Hash}}
\index{get\+Hash@{get\+Hash}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{get\+Hash()}{getHash()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily int Rolling\+Hash.\+get\+Hash (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyReturn}{Returns}
\+: current value of hash
\end{DoxyReturn}
\mbox{\Hypertarget{classRollingHash_a08f1b2a90304c01777bc193cbfc12fb4}\label{classRollingHash_a08f1b2a90304c01777bc193cbfc12fb4}}
\index{Rolling\+Hash@{Rolling\+Hash}!reset@{reset}}
\index{reset@{reset}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{reset()}{reset()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Rolling\+Hash.\+reset (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Resets the hash value to 0. \mbox{\Hypertarget{classRollingHash_a08f1b2a90304c01777bc193cbfc12fb4}\label{classRollingHash_a08f1b2a90304c01777bc193cbfc12fb4}}
\index{Rolling\+Hash@{Rolling\+Hash}!reset@{reset}}
\index{reset@{reset}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{reset()}{reset()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Rolling\+Hash.\+reset (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Resets the hash value to 0. \mbox{\Hypertarget{classRollingHash_acccfdc00e40ba84faab1f89454acdb5f}\label{classRollingHash_acccfdc00e40ba84faab1f89454acdb5f}}
\index{Rolling\+Hash@{Rolling\+Hash}!update@{update}}
\index{update@{update}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{update()}{update()}\hspace{0.1cm}{\footnotesize\ttfamily [1/6]}}
{\footnotesize\ttfamily void Rolling\+Hash.\+update (\begin{DoxyParamCaption}\item[{byte}]{b }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Add the given byte to the sequence and update the hash.
\begin{DoxyParams}{Parameters}
{\em b} & \+: byte to be added \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classRollingHash_acccfdc00e40ba84faab1f89454acdb5f}\label{classRollingHash_acccfdc00e40ba84faab1f89454acdb5f}}
\index{Rolling\+Hash@{Rolling\+Hash}!update@{update}}
\index{update@{update}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{update()}{update()}\hspace{0.1cm}{\footnotesize\ttfamily [2/6]}}
{\footnotesize\ttfamily void Rolling\+Hash.\+update (\begin{DoxyParamCaption}\item[{byte}]{b }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Add the given byte to the sequence and update the hash.
\begin{DoxyParams}{Parameters}
{\em b} & \+: byte to be added \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classRollingHash_af25915532b88a26522320f5d18c55dde}\label{classRollingHash_af25915532b88a26522320f5d18c55dde}}
\index{Rolling\+Hash@{Rolling\+Hash}!update@{update}}
\index{update@{update}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{update()}{update()}\hspace{0.1cm}{\footnotesize\ttfamily [3/6]}}
{\footnotesize\ttfamily void Rolling\+Hash.\+update (\begin{DoxyParamCaption}\item[{byte}]{in\+Byte, }\item[{byte}]{out\+Byte }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Add one byte and delete another from the sequence and update the hash.
\begin{DoxyParams}{Parameters}
{\em in\+Byte} & \+: byte to be added \\
\hline
{\em out\+Byte} & \+: byte to be deleted \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classRollingHash_af25915532b88a26522320f5d18c55dde}\label{classRollingHash_af25915532b88a26522320f5d18c55dde}}
\index{Rolling\+Hash@{Rolling\+Hash}!update@{update}}
\index{update@{update}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{update()}{update()}\hspace{0.1cm}{\footnotesize\ttfamily [4/6]}}
{\footnotesize\ttfamily void Rolling\+Hash.\+update (\begin{DoxyParamCaption}\item[{byte}]{in\+Byte, }\item[{byte}]{out\+Byte }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Add one byte and delete another from the sequence and update the hash.
\begin{DoxyParams}{Parameters}
{\em in\+Byte} & \+: byte to be added \\
\hline
{\em out\+Byte} & \+: byte to be deleted \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classRollingHash_a364014385c2a6b5ecc2a9d772a697ee1}\label{classRollingHash_a364014385c2a6b5ecc2a9d772a697ee1}}
\index{Rolling\+Hash@{Rolling\+Hash}!update@{update}}
\index{update@{update}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{update()}{update()}\hspace{0.1cm}{\footnotesize\ttfamily [5/6]}}
{\footnotesize\ttfamily void Rolling\+Hash.\+update (\begin{DoxyParamCaption}\item[{byte \mbox{[}$\,$\mbox{]}}]{arr, }\item[{int}]{offset, }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Add len number of bytes from arr starting from offset to the sequence and update the hash.
\begin{DoxyParams}{Parameters}
{\em arr} & \+: array containing bytes \\
\hline
{\em offset} & \+: starting position \\
\hline
{\em len} & \+: number of bytes to add \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classRollingHash_a364014385c2a6b5ecc2a9d772a697ee1}\label{classRollingHash_a364014385c2a6b5ecc2a9d772a697ee1}}
\index{Rolling\+Hash@{Rolling\+Hash}!update@{update}}
\index{update@{update}!Rolling\+Hash@{Rolling\+Hash}}
\subsubsection{\texorpdfstring{update()}{update()}\hspace{0.1cm}{\footnotesize\ttfamily [6/6]}}
{\footnotesize\ttfamily void Rolling\+Hash.\+update (\begin{DoxyParamCaption}\item[{byte \mbox{[}$\,$\mbox{]}}]{arr, }\item[{int}]{offset, }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Add len number of bytes from arr starting from offset to the sequence and update the hash.
\begin{DoxyParams}{Parameters}
{\em arr} & \+: array containing bytes \\
\hline
{\em offset} & \+: starting position \\
\hline
{\em len} & \+: number of bytes to add \\
\hline
\end{DoxyParams}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Rolling\+Hash.\+java\end{DoxyCompactItemize}
\hypertarget{classServer}{}\section{Server Class Reference}
\label{classServer}\index{Server@{Server}}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\Hypertarget{classServer_aa3fbc6151e35b67da9fc169408539cf6}\label{classServer_aa3fbc6151e35b67da9fc169408539cf6}}
static void {\bfseries main} (String\mbox{[}$\,$\mbox{]} args) throws I\+O\+Exception
\end{DoxyCompactItemize}
\subsection{Detailed Description}
Contains the main method which creates and starts \hyperlink{classMainThread}{Main\+Thread} of the server.
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Server.\+java\end{DoxyCompactItemize}
\hypertarget{classSetIntervalFrame}{}\section{Set\+Interval\+Frame Class Reference}
\label{classSetIntervalFrame}\index{Set\+Interval\+Frame@{Set\+Interval\+Frame}}
Inheritance diagram for Set\+Interval\+Frame\+:
% FIG 0
Collaboration diagram for Set\+Interval\+Frame\+:
% FIG 1
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\Hypertarget{classSetIntervalFrame_a7fa0e676d4d4c6aa8a2a846d268cf33f}\label{classSetIntervalFrame_a7fa0e676d4d4c6aa8a2a846d268cf33f}}
{\bfseries Set\+Interval\+Frame} (Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$ inbox)
\end{DoxyCompactItemize}
\subsection{Detailed Description}
G\+UI for setting auto sync interval
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Client/Set\+Interval\+Frame.\+java\end{DoxyCompactItemize}
digraph "SetIntervalFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node2 [label="SetIntervalFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid"];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" ok" ];
Node4 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" interval" ];
Node5 [label="JTextField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node6 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ];
Node7 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" label" ];
Node8 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
c75e63df72ef03efba592b38b81db37f
\ No newline at end of file
digraph "SetIntervalFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node0 [label="SetIntervalFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid"];
Node1 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
148f2aa99e060297102366abab2f6cfe
\ No newline at end of file
\hypertarget{classSignupFrame}{}\section{Signup\+Frame Class Reference}
\label{classSignupFrame}\index{Signup\+Frame@{Signup\+Frame}}
Inheritance diagram for Signup\+Frame\+:
% FIG 0
Collaboration diagram for Signup\+Frame\+:
% FIG 1
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
void \hyperlink{classSignupFrame_a1d28ba01c42c4e007ec0214adc175484}{update\+Output} (String msg)
\end{DoxyCompactItemize}
\subsection{Detailed Description}
G\+UI for the signup form.
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classSignupFrame_a1d28ba01c42c4e007ec0214adc175484}\label{classSignupFrame_a1d28ba01c42c4e007ec0214adc175484}}
\index{Signup\+Frame@{Signup\+Frame}!update\+Output@{update\+Output}}
\index{update\+Output@{update\+Output}!Signup\+Frame@{Signup\+Frame}}
\subsubsection{\texorpdfstring{update\+Output()}{updateOutput()}}
{\footnotesize\ttfamily void Signup\+Frame.\+update\+Output (\begin{DoxyParamCaption}\item[{String}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Update the output text.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: new output text \\
\hline
\end{DoxyParams}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Client/Signup\+Frame.\+java\end{DoxyCompactItemize}
digraph "SignupFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node2 [label="SignupFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid"];
Node3 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" signup\ngotoLogin" ];
Node4 [label="JButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" output" ];
Node5 [label="JTextArea",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" username" ];
Node6 [label="JTextField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox" ];
Node7 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" password" ];
Node8 [label="JPasswordField",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node9 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" container" ];
Node9 [label="Container",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node10 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" usernameLabel\npasswordLabel" ];
Node10 [label="JLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
d20b0154e391d470d1f13d6f103b94ee
\ No newline at end of file
digraph "SignupFrame"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node0 [label="SignupFrame",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid"];
Node1 [label="JFrame",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
36115dd10b3e58da51cdcca0e5628403
\ No newline at end of file
\hypertarget{classSync}{}\section{Sync Class Reference}
\label{classSync}\index{Sync@{Sync}}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
Map$<$ Integer, Map$<$ \hyperlink{classBlockSig}{Block\+Sig}, List$<$ Integer $>$ $>$ $>$ \hyperlink{classSync_a1ce0c0e5115c2eadf6934945c7ee326a}{load\+Sig\+File} (File sig\+File) throws I\+O\+Exception, Invalid\+Signature\+File
\item
void \hyperlink{classSync_a13b140ebee4ce707cb19b748ea12b217}{generate\+Sig\+File} (File source, File sig\+File) throws I\+O\+Exception, Digest\+Exception
\item
void \hyperlink{classSync_a14cc1491aaa96c88a88389d86691bdc5}{generate\+Delta\+File} (File source, File sig\+File, File delta\+File) throws I\+O\+Exception, Invalid\+Signature\+File
\item
void \hyperlink{classSync_ae8cd24ed7648c85b21fdc31c9ee19c36}{apply\+Delta} (File base\+File, File delta\+File, File target\+File) throws I\+O\+Exception
\item
Map$<$ Integer, Map$<$ \hyperlink{classBlockSig}{Block\+Sig}, List$<$ Integer $>$ $>$ $>$ \hyperlink{classSync_a1ce0c0e5115c2eadf6934945c7ee326a}{load\+Sig\+File} (File sig\+File) throws I\+O\+Exception, Invalid\+Signature\+File
\item
void \hyperlink{classSync_a13b140ebee4ce707cb19b748ea12b217}{generate\+Sig\+File} (File source, File sig\+File) throws I\+O\+Exception, Digest\+Exception
\item
void \hyperlink{classSync_a14cc1491aaa96c88a88389d86691bdc5}{generate\+Delta\+File} (File source, File sig\+File, File delta\+File) throws I\+O\+Exception, Invalid\+Signature\+File
\item
void \hyperlink{classSync_ae8cd24ed7648c85b21fdc31c9ee19c36}{apply\+Delta} (File base\+File, File delta\+File, File target\+File) throws I\+O\+Exception
\end{DoxyCompactItemize}
\subsection{Detailed Description}
This class implements the sync algorithm.
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classSync_ae8cd24ed7648c85b21fdc31c9ee19c36}\label{classSync_ae8cd24ed7648c85b21fdc31c9ee19c36}}
\index{Sync@{Sync}!apply\+Delta@{apply\+Delta}}
\index{apply\+Delta@{apply\+Delta}!Sync@{Sync}}
\subsubsection{\texorpdfstring{apply\+Delta()}{applyDelta()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Sync.\+apply\+Delta (\begin{DoxyParamCaption}\item[{File}]{base\+File, }\item[{File}]{delta\+File, }\item[{File}]{target\+File }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Apply the given delta file on the given base file to create output file.
\begin{DoxyParams}{Parameters}
{\em base\+File} & \+: file on which the delta file will be applied \\
\hline
{\em delta\+File} & \+: delta file to apply \\
\hline
{\em target\+File} & \+: output file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSync_ae8cd24ed7648c85b21fdc31c9ee19c36}\label{classSync_ae8cd24ed7648c85b21fdc31c9ee19c36}}
\index{Sync@{Sync}!apply\+Delta@{apply\+Delta}}
\index{apply\+Delta@{apply\+Delta}!Sync@{Sync}}
\subsubsection{\texorpdfstring{apply\+Delta()}{applyDelta()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Sync.\+apply\+Delta (\begin{DoxyParamCaption}\item[{File}]{base\+File, }\item[{File}]{delta\+File, }\item[{File}]{target\+File }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Apply the given delta file on the given base file to create output file.
\begin{DoxyParams}{Parameters}
{\em base\+File} & \+: file on which the delta file will be applied \\
\hline
{\em delta\+File} & \+: delta file to apply \\
\hline
{\em target\+File} & \+: output file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSync_a14cc1491aaa96c88a88389d86691bdc5}\label{classSync_a14cc1491aaa96c88a88389d86691bdc5}}
\index{Sync@{Sync}!generate\+Delta\+File@{generate\+Delta\+File}}
\index{generate\+Delta\+File@{generate\+Delta\+File}!Sync@{Sync}}
\subsubsection{\texorpdfstring{generate\+Delta\+File()}{generateDeltaFile()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Sync.\+generate\+Delta\+File (\begin{DoxyParamCaption}\item[{File}]{source, }\item[{File}]{sig\+File, }\item[{File}]{delta\+File }\end{DoxyParamCaption}) throws I\+O\+Exception, Invalid\+Signature\+File\hspace{0.3cm}{\ttfamily [inline]}}
Generate delta file given a source file and a signature file.
\begin{DoxyParams}{Parameters}
{\em source} & \+: file from which delta file will be generated \\
\hline
{\em sig\+File} & \+: signature file to be used \\
\hline
{\em delta\+File} & \+: output delta file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Invalid\+Signature\+File} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSync_a14cc1491aaa96c88a88389d86691bdc5}\label{classSync_a14cc1491aaa96c88a88389d86691bdc5}}
\index{Sync@{Sync}!generate\+Delta\+File@{generate\+Delta\+File}}
\index{generate\+Delta\+File@{generate\+Delta\+File}!Sync@{Sync}}
\subsubsection{\texorpdfstring{generate\+Delta\+File()}{generateDeltaFile()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Sync.\+generate\+Delta\+File (\begin{DoxyParamCaption}\item[{File}]{source, }\item[{File}]{sig\+File, }\item[{File}]{delta\+File }\end{DoxyParamCaption}) throws I\+O\+Exception, Invalid\+Signature\+File\hspace{0.3cm}{\ttfamily [inline]}}
Generate delta file given a source file and a signature file.
\begin{DoxyParams}{Parameters}
{\em source} & \+: file from which delta file will be generated \\
\hline
{\em sig\+File} & \+: signature file to be used \\
\hline
{\em delta\+File} & \+: output delta file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Invalid\+Signature\+File} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSync_a13b140ebee4ce707cb19b748ea12b217}\label{classSync_a13b140ebee4ce707cb19b748ea12b217}}
\index{Sync@{Sync}!generate\+Sig\+File@{generate\+Sig\+File}}
\index{generate\+Sig\+File@{generate\+Sig\+File}!Sync@{Sync}}
\subsubsection{\texorpdfstring{generate\+Sig\+File()}{generateSigFile()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Sync.\+generate\+Sig\+File (\begin{DoxyParamCaption}\item[{File}]{source, }\item[{File}]{sig\+File }\end{DoxyParamCaption}) throws I\+O\+Exception, Digest\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Generate signature file from source file.
\begin{DoxyParams}{Parameters}
{\em source} & \+: file from which the signature file will be generated \\
\hline
{\em sig\+File} & \+: output signature file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Digest\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSync_a13b140ebee4ce707cb19b748ea12b217}\label{classSync_a13b140ebee4ce707cb19b748ea12b217}}
\index{Sync@{Sync}!generate\+Sig\+File@{generate\+Sig\+File}}
\index{generate\+Sig\+File@{generate\+Sig\+File}!Sync@{Sync}}
\subsubsection{\texorpdfstring{generate\+Sig\+File()}{generateSigFile()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Sync.\+generate\+Sig\+File (\begin{DoxyParamCaption}\item[{File}]{source, }\item[{File}]{sig\+File }\end{DoxyParamCaption}) throws I\+O\+Exception, Digest\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Generate signature file from source file.
\begin{DoxyParams}{Parameters}
{\em source} & \+: file from which the signature file will be generated \\
\hline
{\em sig\+File} & \+: output signature file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Digest\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSync_a1ce0c0e5115c2eadf6934945c7ee326a}\label{classSync_a1ce0c0e5115c2eadf6934945c7ee326a}}
\index{Sync@{Sync}!load\+Sig\+File@{load\+Sig\+File}}
\index{load\+Sig\+File@{load\+Sig\+File}!Sync@{Sync}}
\subsubsection{\texorpdfstring{load\+Sig\+File()}{loadSigFile()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Map$<$Integer, Map$<$\hyperlink{classBlockSig}{Block\+Sig}, List$<$Integer$>$ $>$ $>$ Sync.\+load\+Sig\+File (\begin{DoxyParamCaption}\item[{File}]{sig\+File }\end{DoxyParamCaption}) throws I\+O\+Exception, Invalid\+Signature\+File\hspace{0.3cm}{\ttfamily [inline]}}
Load the signatures from the signature file into memory. This function returns a hashmap with weak hash as keys and another hashmap as values. Inner hashmap is useful for quickly finding whether a block signature with a particular weak hash and strong hash exists. It has block signature as keys and a list of block ids as values.
\begin{DoxyParams}{Parameters}
{\em sig\+File} & \+: signature file to be loaded \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\+: map representing the signature file
\end{DoxyReturn}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Invalid\+Signature\+File} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSync_a1ce0c0e5115c2eadf6934945c7ee326a}\label{classSync_a1ce0c0e5115c2eadf6934945c7ee326a}}
\index{Sync@{Sync}!load\+Sig\+File@{load\+Sig\+File}}
\index{load\+Sig\+File@{load\+Sig\+File}!Sync@{Sync}}
\subsubsection{\texorpdfstring{load\+Sig\+File()}{loadSigFile()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily Map$<$Integer, Map$<$\hyperlink{classBlockSig}{Block\+Sig}, List$<$Integer$>$ $>$ $>$ Sync.\+load\+Sig\+File (\begin{DoxyParamCaption}\item[{File}]{sig\+File }\end{DoxyParamCaption}) throws I\+O\+Exception, Invalid\+Signature\+File\hspace{0.3cm}{\ttfamily [inline]}}
Load the signatures from the signature file into memory. This function returns a hashmap with weak hash as keys and another hashmap as values. Inner hashmap is useful for quickly finding whether a block signature with a particular weak hash and strong hash exists. It has block signature as keys and a list of block ids as values.
\begin{DoxyParams}{Parameters}
{\em sig\+File} & \+: signature file to be loaded \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\+: map representing the signature file
\end{DoxyReturn}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Invalid\+Signature\+File} & \\
\hline
\end{DoxyExceptions}
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Sync.\+java\end{DoxyCompactItemize}
\hypertarget{classSyncThread}{}\section{Sync\+Thread Class Reference}
\label{classSyncThread}\index{Sync\+Thread@{Sync\+Thread}}
Collaboration diagram for Sync\+Thread\+:
% FIG 0
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\hyperlink{classSyncThread_aa850affc9978714a72acffe1233f5aa2}{Sync\+Thread} (Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$ main\+Thread\+Inbox, String parent\+Dir, String user\+Name)
\item
void \hyperlink{classSyncThread_adcd9c7f9699d3520ddf103dc97a091a8}{handle\+Sync\+Up\+Req} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception, Digest\+Exception
\item
void \hyperlink{classSyncThread_aa25c537fde786f3663e7a28732dcaccd}{handle\+Sync\+Down\+Req} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception
\item
void \hyperlink{classSyncThread_a360f04de98c8a06ea9853d6b2a017b2b}{process\+Sig\+File} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception, Invalid\+Signature\+File
\item
void \hyperlink{classSyncThread_ac9c2068cc13bc92cd105c32d4b4444da}{process\+Delta\+File} (\hyperlink{classMsg}{Msg} msg) throws I\+O\+Exception, Invalid\+Signature\+File
\item
void \hyperlink{classSyncThread_a27d72f6ba2ad8eee0248aee1b2646e5e}{start} ()
\end{DoxyCompactItemize}
\subsection{Detailed Description}
This objects represents the server side thread that handles all the sync operations of all the machines belonging to the same user.
\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classSyncThread_aa850affc9978714a72acffe1233f5aa2}\label{classSyncThread_aa850affc9978714a72acffe1233f5aa2}}
\index{Sync\+Thread@{Sync\+Thread}!Sync\+Thread@{Sync\+Thread}}
\index{Sync\+Thread@{Sync\+Thread}!Sync\+Thread@{Sync\+Thread}}
\subsubsection{\texorpdfstring{Sync\+Thread()}{SyncThread()}}
{\footnotesize\ttfamily Sync\+Thread.\+Sync\+Thread (\begin{DoxyParamCaption}\item[{Linked\+Blocking\+Queue$<$ \hyperlink{classMsg}{Msg} $>$}]{main\+Thread\+Inbox, }\item[{String}]{parent\+Dir, }\item[{String}]{user\+Name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
\begin{DoxyParams}{Parameters}
{\em main\+Thread\+Inbox} & \+: main thread inbox used to send messages to main thread \\
\hline
{\em parent\+Dir} & \+: working directory for the thread \\
\hline
{\em user\+Name} & \+: username of the the user this thread will handle \\
\hline
\end{DoxyParams}
\subsection{Member Function Documentation}
\mbox{\Hypertarget{classSyncThread_aa25c537fde786f3663e7a28732dcaccd}\label{classSyncThread_aa25c537fde786f3663e7a28732dcaccd}}
\index{Sync\+Thread@{Sync\+Thread}!handle\+Sync\+Down\+Req@{handle\+Sync\+Down\+Req}}
\index{handle\+Sync\+Down\+Req@{handle\+Sync\+Down\+Req}!Sync\+Thread@{Sync\+Thread}}
\subsubsection{\texorpdfstring{handle\+Sync\+Down\+Req()}{handleSyncDownReq()}}
{\footnotesize\ttfamily void Sync\+Thread.\+handle\+Sync\+Down\+Req (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Handles sync down request from client.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: message containing the request \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Digest\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSyncThread_adcd9c7f9699d3520ddf103dc97a091a8}\label{classSyncThread_adcd9c7f9699d3520ddf103dc97a091a8}}
\index{Sync\+Thread@{Sync\+Thread}!handle\+Sync\+Up\+Req@{handle\+Sync\+Up\+Req}}
\index{handle\+Sync\+Up\+Req@{handle\+Sync\+Up\+Req}!Sync\+Thread@{Sync\+Thread}}
\subsubsection{\texorpdfstring{handle\+Sync\+Up\+Req()}{handleSyncUpReq()}}
{\footnotesize\ttfamily void Sync\+Thread.\+handle\+Sync\+Up\+Req (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception, Digest\+Exception\hspace{0.3cm}{\ttfamily [inline]}}
Handles sync up request from client.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: message containing the request \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Digest\+Exception} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSyncThread_ac9c2068cc13bc92cd105c32d4b4444da}\label{classSyncThread_ac9c2068cc13bc92cd105c32d4b4444da}}
\index{Sync\+Thread@{Sync\+Thread}!process\+Delta\+File@{process\+Delta\+File}}
\index{process\+Delta\+File@{process\+Delta\+File}!Sync\+Thread@{Sync\+Thread}}
\subsubsection{\texorpdfstring{process\+Delta\+File()}{processDeltaFile()}}
{\footnotesize\ttfamily void Sync\+Thread.\+process\+Delta\+File (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception, Invalid\+Signature\+File\hspace{0.3cm}{\ttfamily [inline]}}
This is called when server receives a part of the delta file.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: contains a part of the delta file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Invalid\+Signature\+File} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSyncThread_a360f04de98c8a06ea9853d6b2a017b2b}\label{classSyncThread_a360f04de98c8a06ea9853d6b2a017b2b}}
\index{Sync\+Thread@{Sync\+Thread}!process\+Sig\+File@{process\+Sig\+File}}
\index{process\+Sig\+File@{process\+Sig\+File}!Sync\+Thread@{Sync\+Thread}}
\subsubsection{\texorpdfstring{process\+Sig\+File()}{processSigFile()}}
{\footnotesize\ttfamily void Sync\+Thread.\+process\+Sig\+File (\begin{DoxyParamCaption}\item[{\hyperlink{classMsg}{Msg}}]{msg }\end{DoxyParamCaption}) throws I\+O\+Exception, Invalid\+Signature\+File\hspace{0.3cm}{\ttfamily [inline]}}
This is called when server receives a part of the signature file.
\begin{DoxyParams}{Parameters}
{\em msg} & \+: contains a part of the signature file \\
\hline
\end{DoxyParams}
\begin{DoxyExceptions}{Exceptions}
{\em I\+O\+Exception} & \\
\hline
{\em Invalid\+Signature\+File} & \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{classSyncThread_a27d72f6ba2ad8eee0248aee1b2646e5e}\label{classSyncThread_a27d72f6ba2ad8eee0248aee1b2646e5e}}
\index{Sync\+Thread@{Sync\+Thread}!start@{start}}
\index{start@{start}!Sync\+Thread@{Sync\+Thread}}
\subsubsection{\texorpdfstring{start()}{start()}}
{\footnotesize\ttfamily void Sync\+Thread.\+start (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Starts a new thread that waits for the messages from client and processes them.
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item
Server/Sync\+Thread.\+java\end{DoxyCompactItemize}
digraph "SyncThread"
{
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="SyncThread",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black"];
Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" inbox\nmainThreadInbox" ];
Node2 [label="LinkedBlockingQueue\l\< Msg \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncRecipients\nclients" ];
Node3 [label="ArrayList\< Connection \>",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" lock" ];
Node4 [label="Lock",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node5 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" syncSource" ];
Node5 [label="Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classConnection.html"];
Node6 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" dataIn" ];
Node6 [label="DataInputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node2 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" outQueue\ninQueue" ];
Node7 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" sigFileOut\ndataOut\ndeltaFileOut" ];
Node7 [label="DataOutputStream",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node8 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" deltaFile\nsigFile" ];
Node8 [label="File",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
Node9 -> Node5 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" socket" ];
Node9 [label="Socket",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled"];
}
24f581577377f47455aa3e25d97da6a4
\ No newline at end of file
\hypertarget{dir_1a445cb237d74f7a5f8d11ec3b0585cc}{}\section{Server Directory Reference}
\label{dir_1a445cb237d74f7a5f8d11ec3b0585cc}\index{Server Directory Reference@{Server Directory Reference}}
\hypertarget{dir_922c588100a187620fdc1533bc178f73}{}\section{Client Directory Reference}
\label{dir_922c588100a187620fdc1533bc178f73}\index{Client Directory Reference@{Client Directory Reference}}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{doxygen}
% Packages used by this style file
\RequirePackage{alltt}
\RequirePackage{array}
\RequirePackage{calc}
\RequirePackage{float}
\RequirePackage{ifthen}
\RequirePackage{verbatim}
\RequirePackage[table]{xcolor}
\RequirePackage{longtable}
\RequirePackage{tabu}
\RequirePackage{tabularx}
\RequirePackage{multirow}
%---------- Internal commands used in this style file ----------------
\newcommand{\ensurespace}[1]{%
\begingroup%
\setlength{\dimen@}{#1}%
\vskip\z@\@plus\dimen@%
\penalty -100\vskip\z@\@plus -\dimen@%
\vskip\dimen@%
\penalty 9999%
\vskip -\dimen@%
\vskip\z@skip% hide the previous |\vskip| from |\addvspace|
\endgroup%
}
\newcommand{\DoxyLabelFont}{}
\newcommand{\entrylabel}[1]{%
{%
\parbox[b]{\labelwidth-4pt}{%
\makebox[0pt][l]{\DoxyLabelFont#1}%
\vspace{1.5\baselineskip}%
}%
}%
}
\newenvironment{DoxyDesc}[1]{%
\ensurespace{4\baselineskip}%
\begin{list}{}{%
\settowidth{\labelwidth}{20pt}%
\setlength{\parsep}{0pt}%
\setlength{\itemsep}{0pt}%
\setlength{\leftmargin}{\labelwidth+\labelsep}%
\renewcommand{\makelabel}{\entrylabel}%
}%
\item[#1]%
}{%
\end{list}%
}
\newsavebox{\xrefbox}
\newlength{\xreflength}
\newcommand{\xreflabel}[1]{%
\sbox{\xrefbox}{#1}%
\setlength{\xreflength}{\wd\xrefbox}%
\ifthenelse{\xreflength>\labelwidth}{%
\begin{minipage}{\textwidth}%
\setlength{\parindent}{0pt}%
\hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
\end{minipage}%
}{%
\parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
}%
}
%---------- Commands used by doxygen LaTeX output generator ----------
% Used by <pre> ... </pre>
\newenvironment{DoxyPre}{%
\small%
\begin{alltt}%
}{%
\end{alltt}%
\normalsize%
}
% Used by @code ... @endcode
\newenvironment{DoxyCode}{%
\par%
\scriptsize%
\begin{alltt}%
}{%
\end{alltt}%
\normalsize%
}
% Used by @example, @include, @includelineno and @dontinclude
\newenvironment{DoxyCodeInclude}{%
\DoxyCode%
}{%
\endDoxyCode%
}
% Used by @verbatim ... @endverbatim
\newenvironment{DoxyVerb}{%
\footnotesize%
\verbatim%
}{%
\endverbatim%
\normalsize%
}
% Used by @verbinclude
\newenvironment{DoxyVerbInclude}{%
\DoxyVerb%
}{%
\endDoxyVerb%
}
% Used by numbered lists (using '-#' or <ol> ... </ol>)
\newenvironment{DoxyEnumerate}{%
\enumerate%
}{%
\endenumerate%
}
% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
\newenvironment{DoxyItemize}{%
\itemize%
}{%
\enditemize%
}
% Used by description lists (using <dl> ... </dl>)
\newenvironment{DoxyDescription}{%
\description%
}{%
\enddescription%
}
% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
% (only if caption is specified)
\newenvironment{DoxyImage}{%
\begin{figure}[H]%
\begin{center}%
}{%
\end{center}%
\end{figure}%
}
% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
% (only if no caption is specified)
\newenvironment{DoxyImageNoCaption}{%
\begin{center}%
}{%
\end{center}%
}
% Used by @attention
\newenvironment{DoxyAttention}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @author and @authors
\newenvironment{DoxyAuthor}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @date
\newenvironment{DoxyDate}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @invariant
\newenvironment{DoxyInvariant}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @note
\newenvironment{DoxyNote}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @post
\newenvironment{DoxyPostcond}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @pre
\newenvironment{DoxyPrecond}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @copyright
\newenvironment{DoxyCopyright}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @remark
\newenvironment{DoxyRemark}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @return and @returns
\newenvironment{DoxyReturn}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @since
\newenvironment{DoxySince}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @see
\newenvironment{DoxySeeAlso}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @version
\newenvironment{DoxyVersion}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @warning
\newenvironment{DoxyWarning}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @internal
\newenvironment{DoxyInternal}[1]{%
\paragraph*{#1}%
}{%
}
% Used by @par and @paragraph
\newenvironment{DoxyParagraph}[1]{%
\begin{list}{}{%
\settowidth{\labelwidth}{40pt}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\parsep}{0pt}%
\setlength{\itemsep}{-4pt}%
\renewcommand{\makelabel}{\entrylabel}%
}%
\item[#1]%
}{%
\end{list}%
}
% Used by parameter lists
\newenvironment{DoxyParams}[2][]{%
\tabulinesep=1mm%
\par%
\ifthenelse{\equal{#1}{}}%
{\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description
{\ifthenelse{\equal{#1}{1}}%
{\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc
{\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc
}
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu}%
\vspace{6pt}%
}
% Used for fields of simple structs
\newenvironment{DoxyFields}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu}%
\vspace{6pt}%
}
% Used for fields simple class style enums
\newenvironment{DoxyEnumFields}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu}%
\vspace{6pt}%
}
% Used for parameters within a detailed function description
\newenvironment{DoxyParamCaption}{%
\renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}%
}{%
}
% Used by return value lists
\newenvironment{DoxyRetVals}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu}%
\vspace{6pt}%
}
% Used by exception lists
\newenvironment{DoxyExceptions}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu}%
\vspace{6pt}%
}
% Used by template parameter lists
\newenvironment{DoxyTemplParams}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu}%
\vspace{6pt}%
}
% Used for member lists
\newenvironment{DoxyCompactItemize}{%
\begin{itemize}%
\setlength{\itemsep}{-3pt}%
\setlength{\parsep}{0pt}%
\setlength{\topsep}{0pt}%
\setlength{\partopsep}{0pt}%
}{%
\end{itemize}%
}
% Used for member descriptions
\newenvironment{DoxyCompactList}{%
\begin{list}{}{%
\setlength{\leftmargin}{0.5cm}%
\setlength{\itemsep}{0pt}%
\setlength{\parsep}{0pt}%
\setlength{\topsep}{0pt}%
\renewcommand{\makelabel}{\hfill}%
}%
}{%
\end{list}%
}
% Used for reference lists (@bug, @deprecated, @todo, etc.)
\newenvironment{DoxyRefList}{%
\begin{list}{}{%
\setlength{\labelwidth}{10pt}%
\setlength{\leftmargin}{\labelwidth}%
\addtolength{\leftmargin}{\labelsep}%
\renewcommand{\makelabel}{\xreflabel}%
}%
}{%
\end{list}%
}
% Used by @bug, @deprecated, @todo, etc.
\newenvironment{DoxyRefDesc}[1]{%
\begin{list}{}{%
\renewcommand\makelabel[1]{\textbf{##1}}%
\settowidth\labelwidth{\makelabel{#1}}%
\setlength\leftmargin{\labelwidth+\labelsep}%
}%
}{%
\end{list}%
}
% Used by parameter lists and simple sections
\newenvironment{Desc}
{\begin{list}{}{%
\settowidth{\labelwidth}{20pt}%
\setlength{\parsep}{0pt}%
\setlength{\itemsep}{0pt}%
\setlength{\leftmargin}{\labelwidth+\labelsep}%
\renewcommand{\makelabel}{\entrylabel}%
}
}{%
\end{list}%
}
% Used by tables
\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
\newenvironment{TabularC}[1]%
{\tabulinesep=1mm
\begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}%
{\end{longtabu}\par}%
\newenvironment{TabularNC}[1]%
{\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}%
{\end{tabu}\par}%
% Used for member group headers
\newenvironment{Indent}{%
\begin{list}{}{%
\setlength{\leftmargin}{0.5cm}%
}%
\item[]\ignorespaces%
}{%
\unskip%
\end{list}%
}
% Used when hyperlinks are turned off
\newcommand{\doxyref}[3]{%
\textbf{#1} (\textnormal{#2}\,\pageref{#3})%
}
% Used to link to a table when hyperlinks are turned on
\newcommand{\doxytablelink}[2]{%
\ref{#1}%
}
% Used to link to a table when hyperlinks are turned off
\newcommand{\doxytableref}[3]{%
\ref{#3}%
}
% Used by @addindex
\newcommand{\lcurly}{\{}
\newcommand{\rcurly}{\}}
% Colors used for syntax highlighting
\definecolor{comment}{rgb}{0.5,0.0,0.0}
\definecolor{keyword}{rgb}{0.0,0.5,0.0}
\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
% Color used for table heading
\newcommand{\tableheadbgcolor}{lightgray}%
% Version of hypertarget with correct landing location
\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}}
% Define caption that is also suitable in a table
\makeatletter
\def\doxyfigcaption{%
\refstepcounter{figure}%
\@dblarg{\@caption{figure}}}
\makeatother
\section{Class Hierarchy}
This inheritance list is sorted roughly, but not completely, alphabetically\+:\begin{DoxyCompactList}
\item \contentsline{section}{Block\+Sig}{\pageref{classBlockSig}}{}
\item \contentsline{section}{Client}{\pageref{classClient}}{}
\item \contentsline{section}{Connection}{\pageref{classConnection}}{}
\item \contentsline{section}{Database}{\pageref{classDatabase}}{}
\item \contentsline{section}{File\+Ops}{\pageref{classFileOps}}{}
\item \contentsline{section}{Listening\+Socket}{\pageref{classListeningSocket}}{}
\item \contentsline{section}{Main\+Thread}{\pageref{classMainThread}}{}
\item \contentsline{section}{Msg}{\pageref{classMsg}}{}
\item \contentsline{section}{Rolling\+Hash}{\pageref{classRollingHash}}{}
\item \contentsline{section}{Server}{\pageref{classServer}}{}
\item \contentsline{section}{Sync}{\pageref{classSync}}{}
\item \contentsline{section}{Sync\+Thread}{\pageref{classSyncThread}}{}
\item J\+Frame\begin{DoxyCompactList}
\item \contentsline{section}{Login\+Frame}{\pageref{classLoginFrame}}{}
\item \contentsline{section}{Main\+Frame}{\pageref{classMainFrame}}{}
\item \contentsline{section}{Set\+Interval\+Frame}{\pageref{classSetIntervalFrame}}{}
\item \contentsline{section}{Signup\+Frame}{\pageref{classSignupFrame}}{}
\end{DoxyCompactList}
\end{DoxyCompactList}
Introduction \+:
F\+Sync is an easy to use tool to sync files between multiple machines efficiently. It is especially useful for syncing large files which only have small differences between them. It syncs two files by first calculating in what parts the files are different and in what parts they are same. Then it sends only the parts where the files differ over the network to sync the files. So the data transferred over the network is proportional to differences in the files rather than the size of the file. So if you have a set of files that you want to be replicated between multiple machines and want any change made to these files to be reflected on all the other machines then F\+Sync is a very handy tool for that. You can either sync up (upload local files to the server and other machines) or sync down (download files from the server to the local machine). Other than these manual sync functions you can also turn on the auto sync feature which will sync up the files to the server and other machines after every N seconds (application will ask the value of N when turning on auto sync).
Motivation \+:
In this day and age such situations are fairly common where a single user works on a single project from multiple machines and any work done from any one machine needs to be reflected in other machines. This calls for a mechanism to sync the files on multiple machines. One straightforward way to do it is to upload the complete contents of one machine to all other machines. While this syncs the files between machines and works, it is not the optimal way to do it or even impractical in cases where files to be synced are very large and small changes are frequent. The optimal way to do it is to only send the parts of the files which have changed between the machines to minimize the data transferred over the network. This is exactly what we tried to do with our file syncing application. We also felt the need to provide a way to automatically sync the files after a given time interval. A use case for this is as follows. Suppose a server is running and appending the logs to a log file (log file is growing with time) and a developer wants to analyse the log file every day by downloading it his/her own computer. In this case he/she can setup the F\+Sync application between server and his/her own computer and set the server side F\+Sync to auto sync every 24 hours. So every day the log file will be synced to local machine and will be ready for analysis.
Getting the code \+: ~\newline
cd into directory where you want to store the code. ~\newline
run \+: git clone \href{https://shivamdixit@git.cse.iitb.ac.in/shivamdixit/CS699_FSync.git}{\tt https\+://shivamdixit@git.\+cse.\+iitb.\+ac.\+in/shivamdixit/\+C\+S699\+\_\+\+F\+Sync.\+git}
Dependencies \+: ~\newline
You need to ensure the installation of Java (jdk1.\+7 or above). For this you can just visit the website\+: \href{https://www.java.com/en/download/manual.jsp}{\tt https\+://www.\+java.\+com/en/download/manual.\+jsp} for details of different versions of Java and their installation procedures.
Building and running server \+: ~\newline
Go to \textquotesingle{}source/\+Server\textquotesingle{} directory.~\newline
run \+: chmod 777 build.\+sh~\newline
run \+: ./build.sh~\newline
This will create \textquotesingle{}Server.\+jar\textquotesingle{} and \textquotesingle{}Run\+Server.\+sh\textquotesingle{} files.~\newline
\hyperlink{classServer}{Server} needs a config file. A sample config file is given, you can edit it according to your setup.~\newline
\hyperlink{classServer}{Server} config file has two fields \+:~\newline
P\+O\+RT\+:port number~\newline
O\+P\+E\+R\+A\+T\+I\+O\+N\+\_\+\+D\+IR\+:working directory for server~\newline
Trailing \textquotesingle{}/\textquotesingle{} in O\+P\+E\+R\+A\+T\+I\+O\+N\+\_\+\+D\+IR is must.~\newline
For example \+: O\+P\+E\+R\+A\+T\+I\+O\+N\+\_\+\+D\+IR\+:/path/to/dir is wrong.~\newline
O\+P\+E\+R\+A\+T\+I\+O\+N\+\_\+\+D\+IR\+:/path/to/dir/ is right.~\newline
To run the server\+:~\newline
./\+Run\+Server.sh config\+File\+Path~\newline
Example \+:~\newline
./\+Run\+Server.sh dir/config.\+txt~\newline
Building and running client \+: ~\newline
Go to \textquotesingle{}source/\+Client\textquotesingle{} directory.~\newline
run \+: chmod 777 build.\+sh~\newline
run \+: ./build.sh~\newline
This will create \textquotesingle{}Client.\+jar\textquotesingle{} and \textquotesingle{}Run\+Client.\+sh\textquotesingle{} files.~\newline
\hyperlink{classClient}{Client} needs a config file. A sample config file is given, you can edit it according to your setup.~\newline
\hyperlink{classClient}{Client} config file has three fields \+:~\newline
S\+E\+R\+V\+E\+R\+\_\+\+A\+D\+DR\+:server ip address~\newline
S\+E\+R\+V\+E\+R\+\_\+\+P\+O\+RT\+:server port~\newline
O\+P\+E\+R\+A\+T\+I\+O\+N\+\_\+\+D\+IR\+:working directory for client~\newline
Trailing \textquotesingle{}/\textquotesingle{} in O\+P\+E\+R\+A\+T\+I\+O\+N\+\_\+\+D\+IR is must.~\newline
For example \+: O\+P\+E\+R\+A\+T\+I\+O\+N\+\_\+\+D\+IR\+:/path/to/dir is wrong.~\newline
O\+P\+E\+R\+A\+T\+I\+O\+N\+\_\+\+D\+IR\+:/path/to/dir/ is right.~\newline
To run the client\+:~\newline
./\+Run\+Client.sh config\+File\+Path~\newline
Example \+:~\newline
./\+Run\+Client.sh dir/config.\+txt~\newline
\ No newline at end of file
\documentclass[twoside]{book}
% Packages required by doxygen
\usepackage{fixltx2e}
\usepackage{calc}
\usepackage{doxygen}
\usepackage[export]{adjustbox} % also loads graphicx
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\usepackage{multicol}
\usepackage{multirow}
\PassOptionsToPackage{warn}{textcomp}
\usepackage{textcomp}
\usepackage[nointegrals]{wasysym}
\usepackage[table]{xcolor}
% Font selection
\usepackage[T1]{fontenc}
\usepackage[scaled=.90]{helvet}
\usepackage{courier}
\usepackage{amssymb}
\usepackage{sectsty}
\renewcommand{\familydefault}{\sfdefault}
\allsectionsfont{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
\renewcommand{\DoxyLabelFont}{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
% Page & text layout
\usepackage{geometry}
\geometry{%
a4paper,%
top=2.5cm,%
bottom=2.5cm,%
left=2.5cm,%
right=2.5cm%
}
\tolerance=750
\hfuzz=15pt
\hbadness=750
\setlength{\emergencystretch}{15pt}
\setlength{\parindent}{0cm}
\setlength{\parskip}{3ex plus 2ex minus 2ex}
\makeatletter
\renewcommand{\paragraph}{%
\@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@parafont%
}%
}
\renewcommand{\subparagraph}{%
\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@subparafont%
}%
}
\makeatother
% Headers & footers
\usepackage{fancyhdr}
\pagestyle{fancyplain}
\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
\fancyhead[CE]{\fancyplain{}{}}
\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
\fancyhead[CO]{\fancyplain{}{}}
\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
\fancyfoot[LE]{\fancyplain{}{}}
\fancyfoot[CE]{\fancyplain{}{}}
\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
\fancyfoot[CO]{\fancyplain{}{}}
\fancyfoot[RO]{\fancyplain{}{}}
\renewcommand{\footrulewidth}{0.4pt}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}%
}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection\ #1}%
}
% Indices & bibliography
\usepackage{natbib}
\usepackage[titles]{tocloft}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{5}
\makeindex
% Hyperlinks (required, but should be loaded last)
\usepackage{ifpdf}
\ifpdf
\usepackage[pdftex,pagebackref=true]{hyperref}
\else
\usepackage[ps2pdf,pagebackref=true]{hyperref}
\fi
\hypersetup{%
colorlinks=true,%
linkcolor=blue,%
citecolor=blue,%
unicode%
}
% Custom commands
\newcommand{\clearemptydoublepage}{%
\newpage{\pagestyle{empty}\cleardoublepage}%
}
\usepackage{caption}
\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
%===== C O N T E N T S =====
\begin{document}
% Titlepage & ToC
\hypersetup{pageanchor=false,
bookmarksnumbered=true,
pdfencoding=unicode
}
\pagenumbering{alph}
\begin{titlepage}
\vspace*{7cm}
\begin{center}%
{\Large F\+Sync }\\
\vspace*{1cm}
{\large Generated by Doxygen 1.8.13}\\
\end{center}
\end{titlepage}
\clearemptydoublepage
\pagenumbering{roman}
\tableofcontents
\clearemptydoublepage
\pagenumbering{arabic}
\hypersetup{pageanchor=true}
%--- Begin generated contents ---
\chapter{Main Page}
\label{index}\hypertarget{index}{}\input{index}
\chapter{Hierarchical Index}
\input{hierarchy}
\chapter{Class Index}
\input{annotated}
\chapter{Class Documentation}
\input{classBlockSig}
\input{classClient}
\input{classConnection}
\input{classDatabase}
\input{classFileOps}
\input{classListeningSocket}
\input{classLoginFrame}
\input{classMainFrame}
\input{classMainThread}
\input{classMsg}
\input{classRollingHash}
\input{classServer}
\input{classSetIntervalFrame}
\input{classSignupFrame}
\input{classSync}
\input{classSyncThread}
%--- End generated contents ---
% Index
\backmatter
\newpage
\phantomsection
\clearemptydoublepage
\addcontentsline{toc}{chapter}{Index}
\printindex
\end{document}
\documentclass[12pt ,letter]{article}
\usepackage{graphicx}
\usepackage[T1]{fontenc}
\usepackage{bera}
\usepackage{geometry}
\geometry{
textheight=218mm,
top=1.25in,
right=1.25 in,
footskip=0pt
}
%=======================================================
\title{\textbf {\huge Developer Manual : FSync }}
\author{{\huge Team : COT} {\large \\ Roll no. : 193050012 \\Roll no. : 203050060 \\Roll no. : 203050109 \\Roll no. : 203050105 \\ Roll no. : 203050057 }}
\date{\Large{CS 699 SOFTWARE LAB}}
\renewcommand\thesection{\arabic{section}}
\usepackage{titling}
\renewcommand\maketitlehooka{\null\mbox{}\vfill}
\renewcommand\maketitlehookd{\vfill\null}
%========================================
\graphicspath{{images/}}
\begin{document}
\maketitle
\newpage
\tableofcontents
\setcounter{page}{1}
\newpage
\section{Prerequisites}
To be able to run this application in your PC you need to ensure the installation of some common programs mentioned below :
\begin{itemize}
\item You need to ensure the installation of Java (jdk1.7 or above). For this you can just visit the website: https://www.java.com/en/download/manual.jsp for details of different versions of Java and their installation procedures.
\item The application is tested on Linux platform and is recommended to run on this OS only.
\item Other than this we do not present any hard prerequisite for the application, just ensure suitable running environment and you are ready to use the application.
\end{itemize}
\section{How to run}
\begin{itemize}
\item \textbf{Getting the code} \\
cd into directory where you want to store the code. \\
run : git clone https://shivamdixit@git.cse.iitb.ac.in/shivamdixit/CS699\_FSync.git
\item \textbf{Running the code} \\
Go to 'source/Server' directory.\\
run : chmod 777 build.sh\\
run : ./build.sh\\
This will create 'Server.jar' and 'RunServer.sh' files.\\
Server needs a config file. A sample config file is given, you can edit it according to your setup.\\
Server config file has two fields :\\
PORT:<port number>\\
OPERATION\_DIR:<working directory for server>\\
Trailing '/' in OPERATION\_DIR is must.\\
For example : OPERATION\_DIR:/path/to/dir is wrong.\\
OPERATION\_DIR:/path/to/dir/ is right.\\
To run the server:\\
./RunServer.sh <configFilePath>\\
Example :\\
./RunServer.sh dir/config.txt\\
\end{itemize}
\end{document}
\ No newline at end of file
\documentclass[12pt ,letter]{article}
\usepackage{graphicx}
\usepackage[T1]{fontenc}
\usepackage{bera}
\usepackage{geometry}
\geometry{
textheight=218mm,
top=1.25in,
right=1.25 in,
footskip=0pt
}
%=======================================================
\title{\textbf {\huge User Manual : FSync }}
\author{{\huge Team : COT} {\large \\ Roll no. : 193050012 \\Roll no. : 203050060 \\Roll no. : 203050109 \\Roll no. : 203050105 \\ Roll no. : 203050057 }}
\date{\Large{CS 699 SOFTWARE LAB}}
\renewcommand\thesection{\arabic{section}}
\usepackage{titling}
\renewcommand\maketitlehooka{\null\mbox{}\vfill}
\renewcommand\maketitlehookd{\vfill\null}
%========================================
\graphicspath{{images/}}
\begin{document}
\maketitle
\newpage
\tableofcontents
\setcounter{page}{1}
\newpage
\section{Introduction}
FSync is an easy to use tool to sync files between multiple machines efficiently. It is especially useful for syncing large files which only have small differences between them. It syncs two files by first calculating in what parts the files are different and in what parts they are same. Then it sends only the parts where the files differ over the network to sync the files. So the data transferred over the network
is proportional to differences in the files rather than the size of the file.\\
So if you have a set of files that you want to be replicated between multiple machines and want any change made to these files to be reflected on all the other machines then FSync is a very handy tool for that. \\
You can either sync up (upload local files to the server and other machines) or sync down (download files from the server to the local machine). Other than these manual sync functions you can also turn on the auto sync feature which will sync up the files to the server and other machines after every N seconds (application will ask the value of N when turning on auto sync).
\section{Motivation}
In this day and age such situations are fairly common where a single user works on a single project from multiple machines and any work done from any one machine needs to be reflected in other machines. This calls for a mechanism to sync the files on multiple machines. \\
One straightforward way to do it is to upload the complete contents of one machine to all other machines. While this syncs the files between machines and works, it is not the optimal way to do it or even impractical in cases where files to be synced are very large and small changes are frequent. The optimal way to do it is to only send the parts of the files which have changed between the machines to minimize the data transferred over the network. This is exactly what we tried to do with our file syncing application.\\
We also felt the need to provide a way to automatically sync the files after a given time interval. A use case for this is as follows. Suppose a server is running and appending the logs to a log file (log file is growing with time) and a developer wants to analyse the log file every day by downloading it his/her own computer. In this case he/she can setup the FSync application between server and his/her own computer and set the server side FSync to auto sync every 24 hours. So every day the log file will be synced to local machine and will be ready for analysis.
\section{Prerequisites}
To be able to run this application in your PC you need to ensure the installation of some common programs mentioned below :
\begin{itemize}
\item You need to ensure the installation of Java (jdk1.7 or above). For this you can just visit the website: https://www.java.com/en/download/manual.jsp for details of different versions of Java and their installation procedures.
\item The application is tested on Linux platform and is recommended to run on this OS only.
\item Other than this we do not present any hard prerequisite for the application, just ensure suitable running environment and you are ready to use the application.
\end{itemize}
\section{How to run}
\begin{itemize}
\item \textbf{Getting the code} \\
cd into directory where you want to store the code. \\
run : git clone https://shivamdixit@git.cse.iitb.ac.in/shivamdixit/CS699\_FSync.git
\item \textbf{Running the code} \\
Go to 'source/Client' directory.\\
run : chmod 777 build.sh\\
run : ./build.sh\\
This will create 'Client.jar' and 'RunClient.sh' files.\\
Client needs a config file. A sample config file is given, you can edit it according to your setup.\\
Client config file has three fields :\\
SERVER\_ADDR:<server ip address>\\
SERVER\_PORT:<server port>\\
OPERATION\_DIR:<working directory for client>\\
Trailing '/' in OPERATION\_DIR is must.\\
For example : OPERATION\_DIR:/path/to/dir is wrong.\\
OPERATION\_DIR:/path/to/dir/ is right.\\
To run the client:\\
./RunClient.sh <configFilePath>\\
Example :\\
./RunClient.sh dir/config.txt\\
\item \textbf{Our GUI asks user to signup/login in the beginning .} \\
\begin{center}
\includegraphics[width=13cm, height=15cm]{signup.jpeg}\\
\caption{\textbf{Signup}}\\
\end{center}
\newpage
\begin{center}
\includegraphics[width=13cm, height=15cm]{login.jpeg}\\
\caption{\textbf{Login}}\\
\end{center}
\newpage
\item \textbf{After login , there are three buttons namely: Sync Up, Sync Down and Auto Sync Turn On/Off and some blank area where status of a function will be visible to the user.}\\
\begin{center}
\includegraphics[width=13cm, height=15cm]{auto off.jpeg}\\
\caption{\textbf{After Login}}\\
\end{center}
\newpage
\textbf{Sync Up: }This is a function provided to the user to sync the files on the server with the local updates , or it can also be understood as uploading the local updates on the server, so that rest all the users can access the updates (made locally by the user) via server.\\
\begin{center}
\includegraphics[width=13cm, height=15cm]{sync up.jpeg}\\
\caption{\textbf{Sync Up}}\\
\end{center}
Status of update will be visible to the user on the area provided after the sync is complete.\\
\newpage
\textbf{Sync Down: }This is a function provided to the user to sync the local files with the files on server. Similar to sync up , after completion status will be visible in the area specified.
\begin{center}
\includegraphics[width=13cm, height=15cm]{sync down.jpeg}\\
\caption{\textbf{Sync Down}}\\
\end{center}
\newpage
\textbf{Auto Sync :}This button will turn auto sync function on/off. When it is turned on , it will ask the user to enter the frequency of updates i.e time interval in seconds between two consecutive updates.\\
\begin{center}
\includegraphics[width=13cm, height=15cm]{set interval.jpeg}\\
\caption{\textbf{Setting Interval}}\\
\end{center}
\newpage
After setting the auto sync frequency, our files will be updated to the server and updates from server will be acknowledged automatically after some interval.
\begin{center}
\includegraphics[width=13cm, height=15cm]{auto on.jpeg}\\
\caption{\textbf{Auto Sync On}}\\
\end{center}
Status of auto updates will be visible for the user's convenience.
\end{itemize}
\end{document}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment