Project

General

Profile

Architecture » History » Version 10

Greg Burri, 07/29/2009 03:32 PM

1 1 Greg Burri
h1. Architecture
2
3 5 Greg Burri
4 4 Greg Burri
h2. Core
5
6 3 Greg Burri
!core_components.png!
7 2 Greg Burri
8 6 Greg Burri
h3. [[FileManager]]
9
10 7 Greg Burri
* Kept up to date the list of shared files
11 6 Greg Burri
* Can make fast search with indexed words
12 7 Greg Burri
* Cuts file in chunks
13 6 Greg Burri
* Each chunk has a hash and can be read or write
14
* The directory structure can be browse
15
* Theses data (files/dirs/chunks/hashes) are persisted
16
17 1 Greg Burri
18 8 Greg Burri
h3. [[NetworkListener]]
19
20 9 Greg Burri
* Listens for new TCP connections from peers. Forward it to the _PeerManager_.
21
* Listens for new UDP datagrams.
22 8 Greg Burri
* Provides some interfaces to listen some events like :
23
** New chat message
24
** New search result
25 9 Greg Burri
* Sent periodically an UDP datagram to show its presence.
26 8 Greg Burri
** This message contains the top chunks
27
** For each chunk the known IP's are gave to the _DownloadManager_
28
29
30
h3. [[DownloadManager]]
31
32
* Has a download list with different status
33 1 Greg Burri
* Has a pool of downloader which will choose a free chunk and :
34
** Download it from a know peer.
35
** Ask first the chunk's peer source for the hashes if they are unknown
36 9 Greg Burri
37
h3. [[UploadManager]]
38
39
* Listens the _PeerManager_ for new upload requests.
40
* Manage a pool of uploaders which will read a chunk from _FileManager_ and send it to the remote peer.
41 8 Greg Burri
42
43 10 Greg Burri
h3. [[PeerManager]]
44
45
* Knows all other peers and different information about them like nick, amount of sharing and speed.
46
* Each peer has a connection (socket) pool.
47
* Treats new messages (unicast) from other peers.
48
49
50 1 Greg Burri
h2. GUI
51 5 Greg Burri
52
53
h2. Common
54
55
h3. [[LogManager]]
56
57 7 Greg Burri
* Logs some kind of severity messages
58 5 Greg Burri
* Can store the log in a file
59
* Used by Core and GUI