Project

General

Profile

Home » History » Revision 36

Revision 35 (Greg Burri, 11/27/2008 02:31 PM) → Revision 36/150 (Greg Burri, 11/27/2008 02:33 PM)

h1. Home 

 * [[Study of bittorent protocol]] 
 * [[Study of UPNP]] 
 * [[Study of Thrift]] 
 * [[Protocols]] 

 h2. Brainstorming 

 * Core and GUI are independent. They communicate over TCP socket. 
 ** It is possible to launch the core without the GUI. The core does not depend of any kind of graphic library. 
 ** If the GUI crashes then the core remains. 
 * Designed for LAN usage (full trusted peers and very high speed transfers). 
 * Efficient (very low cpu usage). 
 * Distributed download (multi peer downloading and no central server). 
 ** Quicker peer first. The speed of a peer is an average over a period of time say 5 min. The A speed of an unknown a peer is maximum thus it will can be take first. unknown. If a downloading is too slow (like three time slower than the best known peer) then it can switch to a quicker free peer. 
 ** Rarest parts first. 
 ** A part can be resumed from any peer. 
 ** A file from a user is identified by its name and folder. 
 ** Fixed part size (2^24 B = 16 MB) hashed with SHA-1. Used to control the integrity of parts and to identify each part. If the SHA-1 of a part does not match the given SHA-1 then it will be re-downloaded entirely. 
 ** Recursive folder downloading. 
 * There is a general chat. 
 * Multicast UDP for services discovering (maybe UPNP). Each peer announces periodically he is alive with a multicast message. 
 * MDI GUI with GTK2HS. 
 ** A panel to view the current peers. 
 ** A window to view the current downloads (leechage) and one for the current uploads (seedage). 
 ** A window for the chat. 
 ** A window for searching. 
 ** Some windows for each file browsing. 
 ** A modal window for the settings. 
 *** The shared folders. 
 *** The incoming folders (take the first if enough available space disk otherwise the second and so one..). 
 *** Bandwidth and CPU limitation with a single option (checkbox). 
 **** Maybe automatically detect a running game and set this flag. 
 * Using of "Thrift":http://incubator.apache.org/thrift/ for definition of the protocol between two peers and between the Core and the Gui. 
 * File list with name+size. 
 * Non blocking search. 
 * Using of systray (optional). 
 * Free space management. 
 * Graphics of the transfer rate over time. 
 * The number of concurrent download is around 3 parts and the number of concurrent upload is unlimited. 
 * Parse meta data like ID3tag when searching.