コード例 #1
0
ファイル: useraf.cpp プロジェクト: g-LuL/cgru
void UserAf::updateJobsOrder( af::Job * newJob)
{
	AfListIt jobsListIt( &m_jobslist);
	int userlistorder = 0;
	for( AfNodeSrv *job = jobsListIt.node(); job != NULL; jobsListIt.next(), job = jobsListIt.node())
		((JobAf*)(job))->setUserListOrder( userlistorder++, ((void*)(job)) != ((void*)(newJob)));
}
コード例 #2
0
ファイル: useraf.cpp プロジェクト: sachinpore/cgru
void UserAf::v_refresh( time_t currentTime, AfContainer * pointer, MonitorContainer * monitoring)
{
    /*    if( isLocked() )
    	 {
    		  return;
    	 }*/
//printf("UserAf::refresh: \"%s\"\n", getName().toUtf8().data());
    int _numjobs = m_jobslist.getCount();
    if(( _numjobs == 0) && ( false == isPermanent()))
    {
        if( m_zombietime )
        {
            if( (currentTime-m_zombietime) > af::Environment::getUserZombieTime() )
            {
                appendLog( std::string("ZOMBIETIME: " + af::itos( af::Environment::getUserZombieTime()) + " seconds with no job."));
                v_setZombie( monitoring);
                return;
            }
        }
        else
        {
            m_zombietime = currentTime;
        }
        return;
    }
    else m_zombietime = 0;

    int _numrunningjobs = 0;
    int _runningtasksnumber = 0;
    {
        AfListIt jobsListIt( &m_jobslist);
        for( AfNodeSrv *job = jobsListIt.node(); job != NULL; jobsListIt.next(), job = jobsListIt.node())
        {
            if( ((JobAf*)job)->isRunning())
            {
                _numrunningjobs++;
                _runningtasksnumber += ((JobAf*)job)->getRunningTasksNumber();
            }
        }
    }

    if((( _numrunningjobs      != m_running_jobs_num       ) ||
            ( _numjobs             != m_jobs_num              ) ||
            ( _runningtasksnumber  != m_running_tasks_num   )) &&
            monitoring )
        monitoring->addEvent( af::Msg::TMonitorUsersChanged, m_id);

    m_jobs_num = _numjobs;
    m_running_jobs_num = _numrunningjobs;
    m_running_tasks_num = _runningtasksnumber;

    // Update solving parameters:
    v_calcNeed();
}
コード例 #3
0
ファイル: useraf.cpp プロジェクト: g-LuL/cgru
bool UserAf::getJobs( std::ostringstream & o_str)
{
	AfListIt jobsListIt( &m_jobslist);
	bool first = true;
	bool has_jobs = false;
	for( AfNodeSrv *job = jobsListIt.node(); job != NULL; jobsListIt.next(), job = jobsListIt.node())
	{
		if( false == first )
			o_str << ",\n";
		first = false;
		((JobAf*)(job))->v_jsonWrite( o_str, af::Msg::TJobsList);
		has_jobs = true;
	}
	return has_jobs;
}
コード例 #4
0
void JobAf::checkDepends()
{
	m_state = m_state & (~AFJOB::STATE_WAITDEP_MASK);
	
	bool depend_local = false;
	bool depend_global = false;
	
	// check global depends:
	if( hasDependMaskGlobal())
	{
		JobContainerIt jobsIt( ms_jobs);
		for( Job *job = jobsIt.job(); job != NULL; jobsIt.next(), job = jobsIt.job())
		{
			if( job == this ) continue;
			if(( job->isDone() == false ) && ( checkDependMaskGlobal( job->getName()) ))
			{
				depend_global = true;
				break;
			}
		}
	}
	
	// check local depends:
	if( hasDependMask())
	{
		AfListIt jobsListIt( m_user->getJobsList());
		for( AfNodeSrv *job = jobsListIt.node(); job != NULL; jobsListIt.next(), job = jobsListIt.node())
		{
			if( job == this ) continue;
			if(( ((JobAf*)job)->isDone() == false ) && ( checkDependMask( ((JobAf*)job)->getName()) ))
			{
				depend_local = true;
				break;
			}
		}
	}
	
	if( depend_local || depend_global ) m_state = m_state | AFJOB::STATE_WAITDEP_MASK;
}
コード例 #5
0
ファイル: useraf.cpp プロジェクト: g-LuL/cgru
void UserAf::jobsinfo( af::MCAfNodes &mcjobs)
{
	AfListIt jobsListIt( &m_jobslist);
	for( AfNodeSrv *job = jobsListIt.node(); job != NULL; jobsListIt.next(), job = jobsListIt.node())
		mcjobs.addNode( job->node());
}