LoCI logo
Home
About Us
Projects
Publications
Software
Documents
Screencasts
Related Projects
Related Pubs

People
FAQs
News Archive
Contact Us


Links

IBPvo
Record your favorite show on TV!
Linux ISOs
Download the latest version of Linux!
 
 



 
Main Page   Modules   Data Structures   File List   Data Fields   Globals  

The LoRS Set API Examples.
[The LoRS API for Sets]

Welcome to the Logistical Runtime System (LoRS) API example page.

Note:
This program will create an exnode and serialize it to disk. The input and output filename is passed from the command line.


 int main (int argc, char **argv)
{
LorsSet *se;
LorsDepotPool *dp;
LorsExnode *ex;
int ret;
char *buffer;
int fd;
longlong size;
struct stat mstat;

ret = stat(argv[1], &mstat);
if ( ret == -1 ) { perror("error1"); exit(EXIT_FAILURE); }
fd = open(argv[1], O_RDONLY);
if ( fd == -1 ) { perror("error2"); exit(EXIT_FAILURE); }

size = mstat.st_size;
buffer = malloc(sizeof(char)*size);
if ( buffer == NULL ) { perror("error3"); exit(EXIT_FAILURE); }

ret = lorsGetDepotPool(&dp, "galapagos.cs.utk.edu", 6767, NULL,
6, 
"st= ca", 
(ulong_t)(size/(1024*1024)+1), 
IBP_SOFT, 
60*60, 10, 20, LORS_CHECKDEPOTS);
if ( ret != LORS_SUCCESS ) { perror("error4"); exit(EXIT_FAILURE); }

ret = lorsSetInit(&se, size/3, 2, 0);
if ( ret != LORS_SUCCESS ) { perror("error5"); exit(EXIT_FAILURE); }

ret = read(fd, buffer, size);
if ( ret != size) { perror("error6"); exit(EXIT_FAILURE); }

ret = lorsSetStore(se, dp, buffer, se->max_length, size, NULL, 6, 20, 0);
if ( ret != LORS_SUCCESS ) { perror("error7"); exit(EXIT_FAILURE); }

ret = lorsExnodeCreate(&ex);
if ( ret != LORS_SUCCESS ) { perror("error8"); exit(EXIT_FAILURE); }

ret = lorsAppendSet(ex, se);
if ( ret != LORS_SUCCESS ) { perror("error9"); exit(EXIT_FAILURE); }

ret = lorsFileSerialize(ex, argv[2], 0, 0);
if ( ret != LORS_SUCCESS ) { perror("error10"); exit(EXIT_FAILURE); }

return 0;
}
Note:
This program will deserialize an exnode download it and write the data to disk. The input and output filename is passed from the command line.


 int main (int argc, char **argv)
{

LorsSet *se;
LorsSet *sel, *sel2;
LorsDepotPool *dp;
LorsExnode *ex;
int ret;
int written = 0;
char *buffer;
int fd;
longlong size;
struct stat mstat;

ret = lorsFileDeserialize(&ex, argv[1], NULL);
if ( ret != LORS_SUCCESS ) { exit(EXIT_FAILURE); }
fd = open(argv[2], O_WRONLY|O_CREAT|O_TRUNC, 0644);
if ( fd == -1 ) { perror("error1"); exit(EXIT_FAILURE); }

size = ex->logical_length;
buffer = malloc(sizeof(char)*size);
if ( buffer == NULL ) { perror("error2"); exit(EXIT_FAILURE); }

ret = lorsUpdateDepotPool(ex, &dp, NULL, 0, NULL, 1, 60, 0);

ret = lorsQuery(ex, &se, 0, ex->logical_length, 0);
written = 0;
while ( written < size )
{

fprintf(stderr, "offset: %d len: %ld\n",
written, (long)(size-written));
ret = lorsSetLoad(se, buffer, 
(longlong)written, (long)(size-written), 
512*1024,
NULL, 10, 
100, 0);

fprintf(stderr, "returned: %d\n", ret);
if ( ret != (size-written) ) { printf("less than requested\n"); 
exit(EXIT_FAILURE); }
written += ret;
ret = write(fd, buffer, ret);

}
close(fd);
}
UTK home        DOE NSF
 
corner
Home   About Us   Projects   Publications   Software   Docs   Screencasts   Related Projects   Related Pubs   People   FAQs   News  Contact Us
corner