Changes between Initial Version and Version 1 of VolunteerStorage


Ignore:
Timestamp:
Jun 10, 2008, 1:15:58 PM (16 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • VolunteerStorage

    v1 v1  
     1[[PageOutline]]
     2
     3= Explicit file management =
     4
     5BOINC allows you to explicitly manage files on client hosts.
     6This might be used, e.g., to implement a high-latency distributed file system.
     7
     8== Retrieving file lists ==
     9
     10To instruct a host to send a list of all persistent files, use the function
     11{{{
     12request_file_list(int host_id)
     13}}}
     14or the command line program (run from the project root directory)
     15{{{
     16request_file_list [ -host_id X ]
     17}}}
     18If -host_id is absent, get file lists for all hosts.  A message is created for the specific host (or all hosts) and added to the  msg_to_host table in the database. The upload message included in the next RPC reply to the host.
     19
     20The file list will be included in the next scheduler RPC request. You must modify the scheduler to parse and store it.
     21
     22
     23
     24== Retrieving files ==
     25
     26A persistent file can be retrieved from a specific host. This can be done using the function
     27
     28{{{
     29get_file(int host_id, const char* file_name)
     30}}}
     31
     32or the command line program (run in the project root dir)
     33
     34{{{
     35get_file -host_id X -file_name Y
     36}}}
     37
     38This program must be run in the project's root directory. get_file() creates a result with a name of the form:
     39
     40{{{
     41get_FILENAME_HOSTID_TIME
     42}}}
     43Example: get_test.mpg_34_123456789 is a result representing the  upload of test.mpg from host number 34 at time 1234567891.
     44
     45An upload message is created for the specific host and added to the msg_to_host table in the database.  This message instructs the client to upload the file and acknowledge a successful upload. The upload message included in the next RPC reply to the host. The message has the form:
     46
     47{{{
     48<app>
     49    <name>FILE_MOVER</name>
     50</app>
     51<app_version>
     52    <app_name>FILE_MOVER</app_name>
     53    <version_num>BOINC_MAJOR_VERSION</version_num>
     54</app_version>
     55<file_info>
     56    <name>file_name</name>
     57    <url>upload_dir</url>
     58    <max_nbytes>1e10</max_nbytes>
     59    <upload_when_present/>
     60</file_info>
     61    RESULT_XML
     62<workunit>
     63    <name>result.name</name>
     64    <app_name>FILE_MOVER</app_name>
     65</workunit>
     66}}}
     67Include
     68{{{<msg_to_host/>}}}
     69in config.xml. Currently
     70{{{<ignore_upload_certificates/>}}}
     71needs to be included as there is no way to send upload certificates with these files.
     72
     73
     74== Sending files ==
     75
     76To send a file to a specific host, use the function
     77
     78{{{
     79send_file(int host_id, const char* file_name)
     80}}}
     81
     82or the command line program (run from the project root directory)
     83
     84{{{
     85send_file -host_id X -file_name Y
     86}}}
     87
     88send_file creates a result and initializes it with a name of the form send_FILENAME_HOSTID_TIME.
     89
     90A message is created for the host and added to the msg_to_host table.  This message instructs the client to download the file and acknowledge a successful download. The download message included in the next RPC reply to the host. The message has the form:
     91
     92{{{
     93<app>
     94        <name>FILE_MOVER</name>
     95</app>
     96<app_version>
     97        <app_name>FILE_MOVER</app_name>
     98        <version_num>n</version_num>
     99</app_version>
     100<result>
     101    <wu_name>x</wu_name>
     102    <name>y</name>
     103</result>
     104<file_info>
     105        <name>file_name</name>
     106        <url>download_dir/file_name</url>
     107        <md5_cksum>md5</md5_cksum>
     108        <nbytes>file->nbytes</nbytes>
     109        <sticky/>
     110</file_info>
     111<workunit>
     112        <name>result.name</name>
     113        <app_name>FILE_MOVER</app_name>
     114        <file_ref>
     115                <file_name>file_name</file_name>
     116        </file_ref>
     117</workunit>
     118}}}
     119
     120For this to work, you need to include {{{<msg_to_host/>}}} in [ProjectOptions#client-control config.xml].
     121
     122
     123== Deleting files ==
     124
     125To delete a file from a host, use the function
     126
     127{{{
     128delete_file(int host_id, const char* file_name)
     129}}}
     130
     131or the command line program (run from the project root dir)
     132
     133{{{
     134delete_file -host_id X -file_name Y
     135}}}
     136
     137`delete_file()` creates a message for the specific host and adds it to the `msg_to_host` table. This message instructs the client to delete the file. The message is included in the next scheduler reply to the host. The message XML has the form
     138
     139{{{
     140<delete_file_info>file_name</delete_file_info>
     141}}}
     142
     143For this to work, you need to include {{{<msg_to_host/>}}} in [ProjectOptions#client-control config.xml].
     144