Architecture » History » Version 11
Greg Burri, 07/29/2009 03:41 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 | 11 | Greg Burri | h2. [[RemoteControlManager]] |
50 | |||
51 | * Manages all connections from remote controllers. |
||
52 | * Send periodically the state of the core to the controllers. |
||
53 | * Send some events to the controllers. |
||
54 | * Dispatch the controllers commands. |
||
55 | |||
56 | 10 | Greg Burri | |
57 | 1 | Greg Burri | h2. GUI |
58 | 5 | Greg Burri | |
59 | |||
60 | h2. Common |
||
61 | |||
62 | h3. [[LogManager]] |
||
63 | |||
64 | 7 | Greg Burri | * Logs some kind of severity messages |
65 | 5 | Greg Burri | * Can store the log in a file |
66 | * Used by Core and GUI |