6fad2b2b65e1a0b580fbcd6da8a862f244a57f40 kent Sun Jan 19 18:04:18 2014 -0800 Making paraPstat2Job - a parsed version of parasol pstat2 output - public. diff --git src/parasol/lib/paraMessage.c src/parasol/lib/paraMessage.c index 7afe561..9ecb93a 100644 --- src/parasol/lib/paraMessage.c +++ src/parasol/lib/paraMessage.c @@ -223,31 +223,31 @@ { struct paraMultiMessage pmm; FILE *f = mustOpen(fileName, "w"); /* ensure the multi-message response comes from the correct ip and has no duplicate msgs*/ pmmInit(&pmm, pm, pm->ipAddress.sin_addr); while (pmmReceive(&pmm, ru)) { if (pm->size == 0) break; mustWrite(f, pm->data, pm->size); } carefulClose(&f); } void pmFetchFile(char *host, char *sourceName, char *destName) -/* Fetch small file. */ +/* Fetch small file. Only works if you are on hub if they've set up any security. */ { struct rudp *ru = rudpOpen(); struct paraMessage pm; if (ru != NULL) { pmInitFromName(&pm, host, paraNodePort); pmPrintf(&pm, "fetch %s %s", getUser(), sourceName); if (pmSend(&pm, ru)) pmFetchOpenFile(&pm, ru, destName); rudpClose(&ru); } } boolean pmSendStringWithRetries(struct paraMessage *pm, struct rudp *ru, char *string) /* Send out given message strng. Print warning message and return FALSE if @@ -324,16 +324,28 @@ break; count = chopByChar(pm.data, '\n', row, sizeof(row)); if (count > 1) --count; /* for multiline, count is inflated by one */ int i; for(i=0;i<count;++i) { slNameAddHead(&list, row[i]); } } rudpClose(&ru); slReverse(&list); return list; } +struct paraPstat2Job *paraPstat2JobLoad(char **row) +/* Turn an array of 5 strings into a paraPstat2Job. */ +{ +struct paraPstat2Job *job; +AllocVar(job); +job->status = cloneString(row[0]); +job->parasolId = cloneString(row[1]); +job->user = cloneString(row[2]); +job->program = cloneString(row[3]); +job->host = cloneString(row[4]); +return job; +}