Beispiel #1
0
int JobManager::pauseJob(string JobId)
{
	QMutexLocker locker(&m_mutex_MAP_JOBID_LISTTASK);

    JOBID2LISTTASK::iterator it = MAP_JOBID_LISTTASK.find(JobId);
    if(it != MAP_JOBID_LISTTASK.end()){
        list<Task*> lpt = it->second;
        list<Task*>::iterator itl = lpt.begin();
        for(  ; itl != lpt.end() ; itl++ )
        {
            if((*itl)->status == WAITING){
                m_pJobScheduler->removeTaskFromWaitList(*itl);
                (*itl)->status = PAUSED;
                m_SQLITE_wrapper->insertTask(JobId, *itl);
            }else if((*itl)->status == RUNNING){ 
                m_pJobScheduler->stopTask(*itl);
                (*itl)->status = PAUSED;
                m_SQLITE_wrapper->insertTask(JobId, *itl);
            }
        }
    }else{
        idebug("Can not find JobId %s\n", JobId.c_str());
    }
    return 0;
}
Beispiel #2
0
int SQLITE_wrapper::openDB (  )
{
	QMutexLocker locker(&s_qMutex4EverFunc);

	int ret;
	ret = sqlite3_open(m_DBurl.c_str(),&db);
	if(ret != SQLITE_OK){
		fprintf(stderr,"Cannot open db: %s\n",sqlite3_errmsg(db));
		return 1;
	}
	idebug("%s %s\n", "Open database", m_DBurl.c_str());
	return 0;
}		/* -----  end of method SQLITE_wrapper::openDB  ----- */
Beispiel #3
0
Boolean v4pDisplayEnd() {
   int i ;
   static int j=0;
   UInt32 t2=TimGetTicks();
   tlaps-=laps[j % 4];
   tlaps+=laps[j % 4]=t2-t1;
   j++;
   idebug(tlaps);

   // Bilan des collides
   for (i = 0 ; i < 16 ; i++) {
      if (!collides[i].q) continue ;
      collides[i].x /= collides[i].q ;
      collides[i].y /= collides[i].q ;
   }
   return success ;
}
Beispiel #4
0
int JobManager::continueJob(string JobId)
{
	QMutexLocker locker(&m_mutex_MAP_JOBID_LISTTASK);

    JOBID2LISTTASK::iterator it = MAP_JOBID_LISTTASK.find(JobId);
    if(it != MAP_JOBID_LISTTASK.end()){
        list<Task*> lpt = it->second;
        list<Task*>::iterator itl = lpt.begin();
        for(  ; itl != lpt.end() ; itl++ )
        {
            if((*itl)->status == PAUSED){
                (*itl)->status = WAITING;
                m_pJobScheduler->pushTask2Wait(*itl);
                m_SQLITE_wrapper->insertTask(JobId, *itl);
            }
        }
    }else{
        idebug("Can not find JobId %s\n", JobId.c_str());
    }
    return 0;
}
Beispiel #5
0
int insertGeneric(
	sqlite3 *db,
	const char *table,
	const char keys[18][18],
	const char *types,
	vector<string> values,
	int n_column
	)
{
	QMutexLocker locker(&s_qMutex4EverFunc);

	string sql;
	int result;
	sqlite3_stmt *stmt;
	int id;

	sql = "";
	sql += "SELECT " ;
	sql += keys[0];
	sql += " FROM ";
	sql += table;
	sql += " WHERE ";
	sql += keys[0];
	sql += " = ";
	sql += values[0];
	sql += " ;";
	//idebug ( "sql = %s\n", sql.c_str() );

	result = sqlite3_prepare_v2( db, sql.c_str(), strlen( sql.c_str() ), &stmt, NULL );
	assert( result == SQLITE_OK );

	if ( sqlite3_step( stmt ) == SQLITE_ROW ) {
		/*  a key/value was found in table, query the ROWID */
		id = sqlite3_column_int( stmt, 0 );
		assert( sqlite3_step( stmt ) == SQLITE_DONE );
		sqlite3_finalize( stmt );

		sql = "";
		sql += "UPDATE ";
		sql += table; sql += " SET ";
		string tmps;
		for( int i = 1 ; i < n_column; i++ )
		{
			switch ( types[i] )
			{
			case 'd' :
				tmps = values[i];
				break;
			case 's' :
				tmps = "'";
				tmps += values[i];
				tmps += "'";
				break;
			default :
				break;
			}
			sql += keys[i]; sql += "="; sql += tmps;
			if(i != n_column-1) sql += ", ";
		}
		sql += " WHERE ";
		sql += keys[0]; sql +="="; sql += values[0];
		sql += ";";
		idebug ( "sql = %s\n", sql.c_str() );
		result = sqlite3_exec( db, sql.c_str(), NULL, NULL, NULL );
		assert( result == SQLITE_OK );
	} else {
		/*  key/value is not in table, so insert it */
		sqlite3_finalize( stmt );
		sql = "";
		sql += "INSERT INTO ";
		sql += table;
		sql += "( ";
		for( int i = 0 ; i < n_column ; i++ )
		{
			sql += keys[i];
			if(i != n_column-1) sql += ",";
		}
		sql += " )VALUES( ";
		string tmps;
		for( int i = 0 ; i < n_column ; i++ )
		{
			switch ( types[i] )
			{
			case 'd' :
				tmps = values[i];
				break;
			case 's' :
				tmps = "'";
				tmps += values[i];
				tmps += "'";
				break;
			default :
				break;
			}
			sql += tmps;
			if(i != n_column-1) sql += ",";
		}
		sql += " );";

		idebug ( "sql = %s\n", sql.c_str() );
		result = sqlite3_exec( db, sql.c_str(), NULL, NULL, NULL );
		assert( result == SQLITE_OK );
	}
	return result;
}
Beispiel #6
0
JOBID2LISTTASK queryTasks(vector<TaskStatus> vt, vector<string> vjob, string table)
{
	QMutexLocker locker(&s_qMutex4EverFunc);

	JOBID2LISTTASK j2lt;
	string sql;
	sqlite3_stmt *stmt;
	int result;
	char tmpcs[10];

	j2lt.clear();
	if( vt.size() <= 0 )
	{
		return j2lt;
	}

	sql = "SELECT JobId FROM ";
	sql += table;
	sql += " GROUP BY JobId;";
	result = sqlite3_prepare_v2( db, sql.c_str(), strlen( sql.c_str() ), &stmt, NULL );
	assert( result == SQLITE_OK );

	while( sqlite3_step( stmt ) == SQLITE_ROW ) {
		char *ts = (char*)sqlite3_column_blob(stmt, 0);
		idebug("%s\n", ts);
		sqlite3_stmt *stmt_t;
		if( vjob.size() > 0) 
			if(find(vjob.begin(), vjob.end(), string(ts)) == vjob.end()) continue;

		sql = "SELECT * FROM ";
		sql += table;
		sql += " WHERE (status = ";

		for( int i = 0 ; i < vt.size() ; i++ )
		{
			memset(tmpcs, 0, 10);
			sprintf(tmpcs, "%d", vt[i]);
			sql += tmpcs;
			if( i != vt.size() -1){
				sql += " OR status = ";
			}
		}
		sql += ") AND JobId = '";
		sql += ts;
		sql += "';";
		idebug("sql = %s\n", sql.c_str());
		result = sqlite3_prepare_v2( db, sql.c_str(), strlen( sql.c_str() ), &stmt_t, NULL );
		assert( result == SQLITE_OK );

		list<Task*> lpt;
		Task* pt;
		while( sqlite3_step( stmt_t ) == SQLITE_ROW ) {
			pt = new Task;
			//memset(pt, 0, sizeof(Task));
			pt->taskId  = sqlite3_column_int64( stmt_t, 0 );
			if(char *str = (char*)sqlite3_column_blob( stmt_t, 1 ) )
				strcpy(pt->beginTime,  str);
			if(char *str = (char*)sqlite3_column_blob( stmt_t, 2 ) )
				strcpy(pt->endTime, str);
			if(char *str = (char*)sqlite3_column_blob( stmt_t, 3 ))
				strcpy(pt->host, str);
			pt->mpiPid  = sqlite3_column_int( stmt_t, 4 );
			pt->pid  = sqlite3_column_int( stmt_t, 5 );
			pt->threadId  = sqlite3_column_int( stmt_t, 6 );
			pt->status  = (TaskStatus)sqlite3_column_int( stmt_t, 7 );
			pt->taskInfo.execType  = sqlite3_column_int( stmt_t, 8 );
			pt->taskInfo.cmd= sqlite3_column_int( stmt_t, 9 );
			pt->taskInfo.timeout = sqlite3_column_int( stmt_t, 10 );
			pt->taskInfo.priority  = sqlite3_column_int( stmt_t, 11 );
			if(char *str = (char*)sqlite3_column_blob( stmt_t, 12 ))
				strcpy(pt->taskInfo.libName, str);
			if(char *str = (char*)sqlite3_column_blob( stmt_t, 13 ))
				strcpy(pt->taskInfo.funName, str);
			if(char *str = (char*)sqlite3_column_blob( stmt_t, 14 ))
				strcpy(pt->taskInfo.paraType, str);
			int num_para;
			char *pk = strchr(pt->taskInfo.paraType, ')');
			if(pk != 0){
				num_para = int(pk - pt->taskInfo.paraType);
			}else{
				num_para = strlen(pt->taskInfo.paraType);
			}
			if(char *str = (char*)sqlite3_column_blob( stmt_t, 15 )){
				idebug("%s\n", str);
				char *saveptr;
				for( int i = 0 ; i < num_para ; i++ )
				{

#ifdef  _WINDOWS
					if( char* subs = strtok_s(str, "#", &saveptr) )
						strcpy(pt->taskInfo.paraValue[i], subs);

#else      /* -----  not _WINDOWS  ----- */
					if( char* subs = strtok_r(str, "#", &saveptr) )
						strcpy(pt->taskInfo.paraValue[i], subs);
#endif     /* -----  not _WINDOWS  ----- */
					str = NULL;
				}
			}
			pt->m_seconds  = sqlite3_column_int( stmt_t, 16 );

			idebug("taskId = %lld\n", pt->taskId);
			lpt.push_back(pt);
		}
		sqlite3_finalize( stmt_t );
		if( lpt.size() > 0 )
		{
			j2lt[ts] = lpt;
		}
	}

	sqlite3_finalize( stmt );

	return j2lt;
}