wiki:VolunteerStorage

Version 4 (modified by davea, 13 years ago) (diff)

--

Distributed data management

BOINC provides features for implementing distributed data management systems.

Such a system is implemented as several components:

  • A "plug-in" to the BOINC scheduler, which is called on each scheduler RPC;
  • A daemon program that handles timeouts;
  • Interface programs, for example, programs allowing users to submit and retrieve files.

Note: to use these features, you must include

<msg_to_host/>

in your config.xml.

Sending files to hosts

From an interface program or daemon, call

int send_file(int host_id, const char* file_name)

or use the command line program

send_file --host_id X --file_name Y

From the scheduler plugin, call

int send_file_sched(const char* filename);

Retrieving files

From an interface program or daemon, call

int get_file(int host_id, const char* file_name)

or use the command line program

get_file --host_id X --file_name Y

From the scheduler plugin, call

int get_file_sched(const char* filename);

Deleting files

From an interface program or daemon, call

int delete_file(int host_id, const char* file_name)

or use the command line program

delete_file -host_id X -file_name Y

From the scheduler plugin, call

int delete_file_sched(const char* filename);

Implementation

From interface programs, put_file and get_file create a message to the host (in the msg_to_host table). The message is a chunk of XML that describes a "virtual" app and app version (with no associate executable), and a workunit and result that contain a single input or output file. The result has a name of the form file_xfer_*, which tells the scheduler to treat it specially.