Data Server Protocol
From Unofficial BOINC Wiki
Contents |
[edit] General
BOINC Client Software communicate with data servers using HTTP. A Data Server is typically implemented using a Web Server together with a BOINC-supplied CGI Program, file_upload_handler.
[edit] Download
File download is done by a GET request to a URL from the FILE_INFO element. The file offset, if any, is given in Range: attribute of the HTTP Header.
[edit] Upload
File upload is done using POST operations to a CGI Program. A security mechanism prevents unauthorized upload of large amounts of data to the server. Two RPC Operations are used.
[edit] 1) Get File Size
The request message has the form:
<data_server_request>
<core_client_major_version>1</core_client_major_version>
<core_client_minor_version>1</core_client_minor_version>
<get_file_size>filename</get_file_size>
</data_server_request>
The reply message has the form:
<data_server_reply>
<status>x</status>
[ <message>text<message>
| <file_size>nbytes</file_size> ]
</data_server_reply>
Status is:
| 0 | Success. Nbytes is 0 if the file doesn't exist. |
| 1 | Transient error.
The client should try another data server, or try this one later. |
| -1 | Permanent error. The client should give up on the result. |
In the error cases, the <file_size> element is omitted and the <message> element gives an explanation.
[edit] 2) Upload File
Request message format:
<data_server_request> <core_client_major_version>1</core_client_major_version> <core_client_minor_version>1</core_client_minor_version> <file_upload> <file_info> ... <xml_signature> ... </xml_signature> </file_info> <nbytes>x</nbytes> <offset>x</offset> <data> ... (nbytes bytes of data; may include non-ASCII data) (no closing tags)
The <file_info> element is the exact text sent from the scheduling server to the client. It includes a signature based on the project's file upload authentication key pair. <nbytes> is the size of the file. <offset> is the offset within the file.
Reply message format:
<data_server_reply>
<status>x</status>
<message>text</message>
</data_server_reply>
Status is:
| 0 | success |
| 1 | transient error;
The client should try another data server, or try this one later. |
| -1 | Permanent error.
The BOINC Client Software should give up on the Result. |
In the error cases, the <message> element gives an explanation.
TODO: if there's an error in the header (bad signature, or file is too large) the client should learn this without actually uploading the file.
[edit] UCB Source
[edit] Copyright ©
- 2005 University of California
- 2005 Paul D. Buck
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.

