Project

General

Profile

Architecture » History » Revision 11

Revision 10 (Greg Burri, 07/29/2009 03:32 PM) → Revision 11/32 (Greg Burri, 07/29/2009 03:41 PM)

h1. Architecture 


 h2. Core 

 !core_components.png! 

 h3. [[FileManager]] 

 * Kept up to date the list of shared files 
 * Can make fast search with indexed words 
 * Cuts file in chunks 
 * Each chunk has a hash and can be read or write 
 * The directory structure can be browse 
 * Theses data (files/dirs/chunks/hashes) are persisted 


 h3. [[NetworkListener]] 

 * Listens for new TCP connections from peers. Forward it to the _PeerManager_. 
 * Listens for new UDP datagrams. 
 * Provides some interfaces to listen some events like : 
 ** New chat message 
 ** New search result 
 * Sent periodically an UDP datagram to show its presence. 
 ** This message contains the top chunks 
 ** For each chunk the known IP's are gave to the _DownloadManager_ 


 h3. [[DownloadManager]] 

 * Has a download list with different status 
 * Has a pool of downloader which will choose a free chunk and : 
 ** Download it from a know peer. 
 ** Ask first the chunk's peer source for the hashes if they are unknown 

 h3. [[UploadManager]] 

 * Listens the _PeerManager_ for new upload requests. 
 * Manage a pool of uploaders which will read a chunk from _FileManager_ and send it to the remote peer. 


 h3. [[PeerManager]] 

 * Knows all other peers and different information about them like nick, amount of sharing and speed. 
 * Each peer has a connection (socket) pool. 
 * Treats new messages (unicast) from other peers. 

 h2. [[RemoteControlManager]] 

 * Manages all connections from remote controllers. 
 * Send periodically the state of the core to the controllers. 
 * Send some events to the controllers. 
 * Dispatch the controllers commands. 


 h2. GUI 


 h2. Common 

 h3. [[LogManager]] 

 * Logs some kind of severity messages 
 * Can store the log in a file 
 * Used by Core and GUI