Project

General

Profile

Persistent data » History » Revision 17

Revision 16 (Greg Burri, 03/04/2011 09:17 AM) → Revision 17/18 (Greg Burri, 03/17/2011 12:16 AM)

h1. Persistent data 

 h2. Files cache 

 This file contains all the shared files and theirs SHA-1 hashes. This file is saved in user space after an update of the file list, it is completely loaded at the start of D-LAN. Aybabtu. If some paths of some files doesn't match the shared directory they are discarded. 

 This file is saved as a binary file serialized by protocol buffer. 

 You can see the proto file here : source:/application/Protos/files_cache.proto 

 h3. Size 

 Here is a size approximation for 50'000 files stored in 1 TB. The overhead of the file format is not taken in account. 

 <pre> 
 Nb of files : 50'0000 
 Total size : 1 TB 
 Chunk Size : 32 MB 
 Average file per directory : 50 
 Average filename and dirname length : 50 char 
 Size of a hash : 20B 
 </pre> 

 <pre> 
 AverageFileSize = 1*1024^4 / 50'000 = 21MB 
 Sha1Size = floor(AverageFileSize / 32MB) * 20 * 50'000 = 1 * 20 * 50'000 = 977kB 
 FilenameSize = 50'000 * 50 * 2 = 4.8MB (2 bytes per char) 
 DirnameSize = (50'000 / 50) * 50 * 2 = 97kB 

 TotalSize = 977kB + 4.8MB + 97kB = 5.9MB 
 </pre> 

 h2. Queued files and directories 

 A file containing the queued files and directories is saved in user space. An item from the list may contains a remote peer id and/or the hashes which identify a file.  

 As the file cache file (see above), this file is saved as a binary file serialized by protocol buffer. 

 For more details see the file : source:/application/Protos/queue.proto 


 h2. Configuration file 

 h3. Core side 

 here are the persisted data : 

 * The nick 
 * The peer ID 

 As the other data described above these data are saved as a file serialized by _Protocol Buffer_ but in a human readable form. 

 For more details see the message _Settings_ in file : source:/application/Protos/common.proto 

 h3. Client Side 

 here are the persisted data : 

 * Core address 
 * Password for remote core