예제 #1
0
   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() ;
   }
예제 #2
0
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;
}
예제 #3
0
//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);
}
예제 #4
0
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;
}
예제 #5
0
파일: BGexec.c 프로젝트: skrieder/falkon
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;
        }

    }
}