/* Copyright 2008 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 #include /* size_t */ typedef struct distren *distren_t; typedef void* (*distren_malloc_t)(size_t); typedef void (*distren_free_t)(void*); typedef struct distren_job *distren_job_t; /** Initialize a libdistren handle. In the spirit of respecting client programs' choices, this initialization function allows malloc() and free() compatible function pointers to be passed. */ int distren_init_mf(distren_t *handle, distren_malloc_t mymalloc, distren_free_t myfree); /** Initializes a libdistren handle using the system malloc() and free() implementation. */ 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_job_t *job, const char *filename); /* 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? */ /** 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