Generating work

Workunits and results can be created using either a utility program or a C++ function.

The utility program is

create_work
    -appname name                   // application name
    -wu_name name                   // workunit name
    -wu_template filename           // WU template filename
    -result_template filename       // result template filename
    -nresults n                     // # of results to create
    -db_name x                      // database name
    -db_passwd x                    // database password
    -upload_url x                   // URL for output file upload
    -download_url x                 // base URL for input file download
    -download_dir x                 // where to move input files
    -rsc_fpops x                    // est. # floating-point ops
    -rsc_iops x                     // est. # integer ops
    -rsc_memory x                   // est. RAM working set size, bytes
    -rsc_disk x                     // est. disk space required
    -keyfile x                      // path of upload private key
    -delay_bound x                  // delay bound for result completion
    infile_1 ... infile_m           // input files

The workunit template file is macro-substituted as follows:

The result file template is macro-substituted as follows:


The C++ library (backend_lib.C,h) provides the function:

int create_work(
    WORKUNIT&,
    char* wu_template,
    char* result_template_filename,
    int nresults,
    char* infile_dir,
    char** infiles,
    int ninfiles
    R_RSA_PRIVATE_KEY& key,
    char* upload_url,
    char* download_url
);

This creates a workunit and one or more results. The arguments are similar to those of the utility program; some of the information is passed in the WORKUNIT structure.