180 likes | 226 Views
ShareMe file sharing application for the android and other platforms. Development team : Aviad Moshe Dennis Filimonov Yeonatan Doron Supervised by: Alex Kogan Professor Roy Friedman. Overview. ShareMe is a file sharing application developed for two platforms. Android OS PC
E N D
ShareMefile sharing application for the android and other platforms Development team: Aviad Moshe Dennis Filimonov Yeonatan Doron Supervised by: Alex Kogan Professor Roy Friedman
Overview • ShareMe is a file sharing application developed for two platforms. • Android OS • PC • It designed to enable users connected to the same network (currently it means the same IP sub-net) to share any type of information\files. • Main Features: • Cross platform sharing • Pause\resume downloads. • Supports multiple sources per download. • Search for files from all users currently connected.
Design • Modularity • ShareMe core • Platform independent code which exposes notifications API (ShareMe API) for UI implementation, and network implementation for any platform. • Reliability • Middleware group communication reliability. • Added reliability is enforced by Threads (Will elaborate later). • Concurrency • Downloading from multiple sources. • Downloading different parts of the same file concurrently. • Fairness and load balance of downloads and network usage.
Design • ShareMe Core • Uses 4 main manager classes to perform its tasks • Network Manager. • Neighbors Manager. • File Manager. • Downloads Manager.
Network Manager • Expose different network operations, Uses an API to the different Network related operations. • Sending of messages(to specific targets or as a broadcast) • Receiving of messages, and responding to them. • Network modularity • We used the network middleware supplied by Alexander Divinsky • Network middleware implementation should implement the abstract class Network Connector, which is the API the manager uses. • Messages • Every message is a string array which has in its first cell a message type indicator and the rest is the content.
Neighbors Manager • Is used as an API to the different neighbour related operations. • Handles the neighbours list. • Handles detection of neighbours by the network implementation • Neighbors Remover Thread • The manager uses a thread to detect suspected disconnecting neighbors which in turn set as gray (unavailable) this way they are given a chance to reconnect and not drop users immediately upon disconnection. • this thread also broadcasts Hello messages to everyone for added reliability. • The thread sleeps for specified amount of time to improve performance, not flood the Network and to give a chance for grayed out neighboursto reconnect.
File Manager • Is used as an API to every File System related operation • Handles the shared file list. • ShareMe Files: • Files are identified using their Hash number (using MD5 algorithm) • File Hierarchy (next slide) • Configuration Manager • Upon application exit this manager is used by the File Manager and Downloads Manager to store the partial downloads and the current file list, locally in the file system. • When Started, the File and download managers retrieve their data from the configuration manager.
File Hierarchy IShareMeFile ShareMeFile ShareMe LocalFile ShareMe GlobalFile ShareMeFileInDownload ShareMe SharedFile
File Manager Cont. • Fragments • Each file is split into fragments. • In order to get/set fragments of a file we use the RandomAccessFile class, which enables us to access specific parts of a file quickly and efficiently.
Download Manager • The Manager is used to manage the downloads. • Handles the downloads list. • Uses the Downloader Thread. • Runs indefinitely, it initiates fragment requests for resumed downloads from suitable sources (neighbors). • Maintains fairness between downloads. • Supports requesting of different fragments of the same download from different neighbours (without waiting for responses. • Not responsive neighbours are not flooded with requests. • Does best effort to keep the network as quiet as possible.
Search Engine • Search for known files by their name • Keep all files known during the current session of ShareMe (shared files, files in download, neighbours files, neighbours files in download, and even files of neighbours that are not present anymore). • Lets the UI know of the availability of the file, and if it exists locally or not.
PC Client • GUI is build using the swing toolkit • Pc Client implements ShareMe API • Has the same basic look (tabs) and functionality.
Android UI • Soon
Future Development • Turning ShareMe in to a service so it will keep downloading even when the user is using other apps • Implementing on more platforms (WP7 – mango) • Security handling • Support exchanging contacts list, and identifying neighbours by their phone number (on permission to expose this data) • …
Live Demonstration • Are you ready?