/*
Copyright 2010 Nathan Phillip Brink, Ethan Zonca, Matt Orlando
This file is a part of DistRen.
DistRen is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
DistRen is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with DistRen. If not, see .
*/
#ifndef DISTREN_H
#define DISTREN_H 1
/*
Public API for DistRen
*/
#include /* size_t */
typedef struct distren *distren_t;
typedef struct distren_job *distren_job_t;
/**
* Initializes a libdistren handle.
*/
int distren_init(distren_t *handle);
/**
Submits a file to distren.
@param job must not refer to a valid job.
@TODO create a stream-based interface
*/
int distren_submit_file(distren_t handle, distren_job_t *job, const char *filename);
/**
Retrieve a job-ID that can be used to refer to the job after the client's process has recycled. Currently, this will be the only way to retrieve a job handle (a distren_job_t) and, consequently, the only way to retrieve a finished render.
A job ID is representable using a character string. Hopefully, they will be kept at a reasonably small length. It should be made up of alphanumeric characters so as to be useful in most situations.
@param jobid This will be set to a string allocated by the specified malloc implementation
@param job The distren_job_t from which to retrieve a jobid
*/
int distren_job_geturi(distren_job_t job, char **joburi);
/**
Retrieves a tarball of a rendering's result.
@param outfile Filename to save the result to
*/
int distren_job_retrieve_file(distren_job_t job, const char *outfile);
/*
TODO: extraction of a job-ID, retrieving job handle by job-ID, getting information
for a job handle, retrieving results of a job, callbacks for progress (i.e., job_is_finished callback)
-- threads? -- noooo!
*/
/**
Destroys and frees a job handle
*/
int distren_job_free(distren_job_t job);
/**
* Destroys and frees a libdistren handle
*/
int distren_free(distren_t handle);
#endif