Architecture » History » Revision 12
Revision 11 (Greg Burri, 07/29/2009 03:41 PM) → Revision 12/32 (Greg Burri, 07/30/2009 02:27 PM)
h1. Architecture h2. Core !core_components.png! h3. [[FileManager]] * Kept up to date a the list of shared files. files * Can make fast search with indexed words * Cuts file in chunks. chunks * Each chunk has a hash and can be read or write. write * Can make fast search with indexed words. * Can make fast search from a hash code. * The directory structure can be browse. browse * Theses data (files/dirs/chunks/hashes) are persisted to avoid re-hashing. 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. events like : ** New chat message. message ** New search result. result * Sent periodically an UDP datagram to show its presence. ** This message contains the top chunks. chunks ** For each chunk the known IP's are gave to the _DownloadManager_. _DownloadManager_ h3. [[DownloadManager]] * Has a download queue list with different status. 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. ** Download it from a known peer. 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 transfer. 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 asynchronous 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