Project

General

Profile

Architecture » History » Version 13

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