BSONObj _omTaskStrategyInfo::toBSON() const { BSONObjBuilder builder( 1024 ) ; builder.append( OM_REST_FIELD_RULE_ID, getID() ) ; builder.append( OM_REST_FIELD_TASK_ID, getTaskID() ) ; builder.append( OM_REST_FIELD_TASK_NAME, getTaskName() ) ; builder.append( OM_REST_FIELD_NICE, getNice() ) ; builder.append( OM_REST_FIELD_USER_NAME, getUserName() ) ; BSONArrayBuilder arr( builder.subarrayStart( OM_REST_FIELD_IPS ) ) ; SET_IP::const_iterator cit = _ips.begin() ; while( cit != _ips.end() ) { if ( !cit->empty() ) { arr.append( *cit ) ; } ++cit ; } arr.done() ; return builder.obj() ; }
double MergeAllParents::totalExecCost(std::pair<ParentsIterator,ParentsIterator> pair, VertexID parent) { double cost=0.0; ContainSet allNodes; ParentsIterator p,p_end; for(tie(p,p_end) = pair; p != p_end; p++) { ContainSetMap::iterator set; if (*p != m_invartask && *p != m_outvartask) { set = m_containTasks->find(*p); if (set != m_containTasks->end()) { allNodes.make_union((*set).second); } allNodes.insert(getTaskID(*p,m_taskgraph)); } } ContainSet::iterator it; for (it = allNodes.begin(); it !=allNodes.end(); it++) { cost +=getExecCost(find_task(*it,(TaskGraph*)m_taskgraph)); } cost+= getExecCost(parent); return cost; }
//Find a task in a taskgraph that has the unique id taskID // TODO: Fix this lousy performace problem. Not ok to traverse all tasks!!! VertexID find_task(int taskID, TaskGraph *tg) { VertexIterator v,v_end; //cerr << "Warning, calling slow find_task function." << endl; for (tie(v,v_end) = vertices(*tg);v != v_end; v++) { if (getTaskID(*v,tg) == taskID) return *v; } cerr << "Error. Could not find task with ID: " << taskID << "in taskgraph." << endl; exit(-1); }
bool PlanEntryModel::operator ==(PlanEntryModel &tem) { bool b = true; if(compareTo(&tem) != 0)b = false; else if(tem.getTaskID() != getTaskID())b = false; else if(tem.getTaskStart() != getTaskStart())b = false; else if(tem.getTaskStop() != getTaskStop())b = false; else if(tem.getPercentComplete() != getPercentComplete())b = false; else if(_tcscmp(tem.GetOwner(), GetOwner()) != 0)b = false; else if(_tcscmp(tem.getTaskName(), getTaskName()) != 0)b = false; else if(_tcscmp(tem.getAnnotation(), getAnnotation()) != 0)b = false; else if(GetEntryType() != tem.GetEntryType())b = false; return b; }
int main(int argc, char**argv) { int sfd,ssfd; if (argc!=5) { fprintf(stdout,"usage: client <IP> <port> <port> <debug>"); exit(1); } if (strcmp(argv[4],"-debug")==0) flag=1; //commented out to hopefully make it work with static compiling /* char hostname[100]; struct hostent *h; gethostname(hostname, 100); fprintf(stdout,"hostname: %s\n", hostname); if ((h = gethostbyname(hostname))!=NULL) { fprintf(stdout,"ip address: %s\n", inet_ntoa(*((struct in_addr *)h->h_addr))); } */ recover: fprintf(stdout,"con_server() to %s on port %s\n", argv[1], argv[2]); sfd=con_server(atoi(argv[2]), argv[1]); set_sockopt(sfd); fprintf(stdout,"con_server() to %s on port %s\n", argv[1], argv[3]); ssfd=con_server(atoi(argv[3]), argv[1]); if (flag==1) fprintf(stdout,"connection established!\n"); char num[10]; char clientID[22]; char filename[100]; int result; char *msg; char *taskID; char lifetime[]="10\n"; pid_t pid; int n; /*n=send(sfd, lifetime, sizeof(lifetime), 0); if (n<0) { fprintf(stdout, "main: send lifetime error\n"); fprintf(stdout,"main: error description: EOF\n"); recovery(sfd, ssfd); goto recover; } char acknoledge[10]; memset(acknoledge, '\0', 10); read(sfd,acknoledge,sizeof(acknoledge)); printf("acknoledge: %s\n", acknoledge); fflush(stdout);*/ while (1) { memset(filename,'\0',sizeof(filename)); memset(clientID,'\0',sizeof(clientID)); memset(num, '\0', sizeof(num)); if (flag==1) { fprintf(stdout,"main: receiving from server\n"); fprintf(stdout,"main: sizeof clientID: %d\n", sizeof(clientID)); } int numBytes=0; int numBytesAll = 0; if (flag==1) { fprintf(stdout,"main:waiting to received %d bytes...\n", sizeof(clientID)); } while (numBytesAll < sizeof(clientID)) { numBytes = read(sfd,clientID,sizeof(clientID)); if (numBytes<0) { fprintf(stdout,"main: Receive clientID error after %d bytes received, when it was expecting %d...\n", numBytesAll, sizeof(clientID)); fprintf(stdout,"main: error description: %d\n", errno); recovery(sfd, ssfd); goto recover; } else if (numBytes==0) { fprintf(stdout,"main: Receive clientID error after %d bytes received, when it was expecting %d...\n", numBytesAll, sizeof(clientID)); fprintf(stdout,"main: error description: EOF\n"); recovery(sfd, ssfd); goto recover; } else { if (flag == 1) fprintf(stdout,"main: Received %d bytes...\n", numBytes); } numBytesAll += numBytes; if (numBytesAll == 3) { if (strncasecmp(clientID, "end", 3)==0) { fprintf(stdout, "main: receive end notice, exit\n"); //should shut down gracefully... closing all sockets... //exit(0); goto recover; } } } if (flag==1) { fprintf(stdout,"main:just received %d bytes...\n", numBytesAll); } fflush(stdout); if (flag==1) { fprintf(stdout,"main: clientID: %s\n", clientID); } numBytesAll = 0; if (flag==1) { fprintf(stdout,"main:waiting to received %d bytes...\n", sizeof(num)); } while (numBytesAll < sizeof(num)) { numBytes = read(sfd,num,sizeof(num)); if (numBytes<0) { fprintf(stdout,"main: Receive task size error after %d bytes received, when it was expecting %d...\n", numBytesAll, sizeof(num)); fprintf(stdout,"main: error description: %d\n", errno); recovery(sfd, ssfd); goto recover; } else if (numBytes==0) { fprintf(stdout,"main: Receive task size error after %d bytes received, when it was expecting %d...\n", numBytesAll, sizeof(clientID)); fprintf(stdout,"main: error description: EOF\n"); recovery(sfd, ssfd); goto recover; } else { if (flag == 1) fprintf(stdout,"main: Received %d bytes...\n", numBytes); } numBytesAll += numBytes; } if (flag==1) { fprintf(stdout,"main:just received %d bytes...\n", numBytesAll); } int taskSize=atoi(num); msg=malloc(sizeof(char)*(taskSize+1)); memset(msg,'\0',sizeof(msg)); if (msg==NULL) { fprintf(stdout,"main: allocate memory failed\n"); exit (1); } if (flag==1) { fprintf(stdout,"main:waiting to receive task description of %d bytes...\n", taskSize); //fprintf(fp,"main:received: %s\n", msg); } char buffer[10240]; numBytesAll = 0; while (numBytesAll < taskSize) { memset(buffer, 0, 10240); numBytes = read(sfd,buffer,taskSize); strcat(msg, buffer); if (numBytes<0) { fprintf(stdout,"main: Receive task failed after %d bytes received, when it was expecting %d...\n", numBytesAll, taskSize); fprintf(stdout,"main: error description: %d\n", errno); recovery(sfd, ssfd); goto recover; } else if (numBytes==0) { fprintf(stdout,"main: Receive task failed after %d bytes received, when it was expecting %d...\n", numBytesAll, sizeof(clientID)); fprintf(stdout,"main: error description: EOF\n"); recovery(sfd, ssfd); goto recover; } else { if (flag == 1) fprintf(stdout,"main: Received %d bytes...\n", numBytes); } numBytesAll += numBytes; } if (flag==1) { fprintf(stdout,"main:jst received %d bytes...\n", numBytesAll); } if (flag==1) { fprintf(stdout,"main:received: %s\n", msg); } //commented out ACK numBytes=send(sfd, ACK,strlen(ACK),0); if (numBytes < 0) { fprintf(stdout,"main: Sent ACK %s failed\n", ACK); fprintf(stdout,"main: error description: EOF\n"); recovery(sfd, ssfd); goto recover; } else { if (flag == 1) fprintf(stdout,"main: Sent ACK %s successful (%d)\n", ACK, numBytes); } fflush(stdout); taskID = getTaskID(msg); int exitCode; exitCode = parseExec(msg); free(msg); numBytes = sendResults(taskID, exitCode, argv, ssfd, sfd); if (numBytes < 0) { fprintf(stdout,"main: Send results failed\n"); //fprintf(stdout,"main: error description: EOF\n"); recovery(sfd, ssfd); goto recover; } } }