# HG changeset patch # User LordOfWar # Date 2009-10-09 15:48:16 # Node ID 46e0bef8b7e08c4dc059f1c1ae32a2e5ac502d23 # Parent 9c2a6fb89ff20423e7d0c0bee6779e6ef66af0f3 finished createJobFromXML() and reCreateQueueFromXML() diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -514,9 +514,29 @@ int makeSlaveDataXML(struct distrenjob * // extracts data from the xml created by above function and creates a job from it // it returns a pointer to the created job -void createJobFromXML(int job_number) +struct distrenjob *createJobFromXML(int job_number) { + xmlDocPtr doc; + xmlNodePtr cur; + char *file_name; + struct distrenjob *distrenjob; + distrenjob_new(&distrenjob); + + _distren_asprintf(&file_name, "stor/job%d/job_info.xml", job_number); + + doc = xmlParseFile(file_name); + cur = xmlDocGetRootElement(doc); + + distrenjob->name = (char*)xmlGetProp(cur, (xmlChar*)"name"); + distrenjob->submitter = (char*)xmlGetProp(cur, (xmlChar*)"submitter"); + distrenjob->priority = atoi((char*)xmlGetProp(cur, (xmlChar*)"priority")); + + cur = cur->xmlChildrenNode; + distrenjob->width = atoi((char*)xmlGetProp(cur, (xmlChar*)"width")); + distrenjob->height = atoi((char*)xmlGetProp(cur, (xmlChar*)"number")); + + return distrenjob; } // returns 1 if successful @@ -614,6 +634,7 @@ int reCreateQueueFromXML(struct distrenj struct distrenjob *holder; // holds the job that "was" after head, so that the new struct can be inserted after head struct distrenjob *job; // job to be added xmlChar *tmp; + int job_num; if(current == NULL) // base case, if element doesn't exist then don't do anything return 0; @@ -623,7 +644,8 @@ int reCreateQueueFromXML(struct distrenj // now actual work is done, adding the job to the front of the queue holder = head->next; // initialize holder tmp = xmlNodeListGetString(doc, current->xmlChildrenNode, 1); // get job number - // job = another function that reads data from xml for that job, prepares the job, and returns a pointer to the job + job_num = atoi((char*)tmp); + job = createJobFromXML(job_num); xmlFree(tmp); // free xml char (that holds the job number) // insert job at front of the queue