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