コード例 #1
0
ファイル: renderaf.cpp プロジェクト: RISEFX/cgru
void RenderAf::setRegistered()
{
	getFarmHost();

	if( isFromStore())
	{
		appendLog("Initialized from store.");
	}
	else
	{
		m_time_register = time( NULL);
		setStoreDir( AFCommon::getStoreDirRender( *this));
		store();
		appendLog("Registered.");
	}

	af::Client::setRegisterTime();

	m_task_start_finish_time = 0;
	m_wol_operation_time = 0;
	m_idle_time = time(NULL);
	m_busy_time = m_idle_time;

	if( isOnline()) appendLog("Registered online.");
	else appendLog("Registered offline.");
}
コード例 #2
0
ファイル: afnodesrv.cpp プロジェクト: penthoy/cgru
AfNodeSrv::AfNodeSrv( af::Node * i_node, const std::string & i_store_dir):
    m_from_store( false),
	m_stored_ok( false),
    m_solve_need(0.0),
	m_solve_cycle(0), // 0 means that it was not solved at all
    m_prev_ptr( NULL),
    m_next_ptr( NULL),
	m_node( i_node)
{
//	AFINFO("AfNodeSrv::AfNodeSrv:");
//printf("this = %p\n", (void*)(this));
//printf("m_node = %p\n", (void*)(m_node));
	if( i_store_dir.size())
	{
		m_from_store = true;
		setStoreDir( i_store_dir);
	}
}
コード例 #3
0
ファイル: branchsrv.cpp プロジェクト: CGRU/cgru
bool BranchSrv::initialize()
{
	// Non root branch should have a parent
	if ((m_name != "/") && (NULL == m_parent))
	{
		AF_ERR << "BranchSrv::initialize: Branch['" << m_name << "'] has NULL parent.";
		return false;
	}

	if (NULL != m_parent)
	{
		m_parent_path = m_parent->getName();
		m_parent->addBranch(this);
	}

	if (isFromStore())
	{
		if (m_time_creation == 0)
		{
			m_time_creation = time(NULL);
			store();
		}
		appendLog("Initialized from store.");
	}
	else
	{
		if (NULL == m_parent)
		{
			// The root branch is just created for the first time (not from store)
			setCreateChilds(true);
			setSolveJobs(true);
			m_max_tasks_per_second = AFBRANCH::TASKSPERSECOND_ROOT;
		}

		m_time_creation = time(NULL);

		setStoreDir(AFCommon::getStoreDirBranch(*this));
		store();
		appendLog("Initialized.");
	}

	return true;
}
コード例 #4
0
ファイル: useraf.cpp プロジェクト: g-LuL/cgru
bool UserAf::initialize()
{
	if( isFromStore())
	{
		if(( getTimeRegister() == 0 ) || ( getTimeActivity() == 0 ))
		{
			if( getTimeRegister() == 0 ) setTimeRegister();
			if( getTimeActivity() == 0 ) updateTimeActivity();
			store();
		}
		appendLog("Initialized from store.");
	}
	else
	{
		setTimeRegister();
		updateTimeActivity();
		setStoreDir( AFCommon::getStoreDirUser( *this));
		store();
		appendLog("Registered.");
	}

	return true;
}
コード例 #5
0
bool JobAf::initialize()
{
	AF_DEBUG << "'" << m_name << "'[" << m_id << "]:";
	
	//
	//	Set job ID to blocks and progress classes:
	m_progress->setJobId( m_id);
	for( int b = 0; b < m_blocks_num; b++)
	{
		m_blocks_data[b]->setJobId( m_id);
	}

	//
	// Store job ( if not stored )
	if( isFromStore() == false )
	{
		setStoreDir( AFCommon::getStoreDirJob( *this));

		initStoreDirs();

		// Write blocks tasks data:
		for( int b = 0; b < m_blocks_num; b++)
			m_blocks[b]->storeTasks();

		std::ostringstream ostr;
		v_jsonWrite( ostr, 0);
		std::string str = ostr.str();
		AFCommon::writeFile( str.c_str(), str.size(), getStoreFile());
	}

	// Create tasks store folder (if does not exists any)
	if(( af::pathIsFolder( m_store_dir_tasks) == false ) && ( af::pathMakePath( m_store_dir_tasks) == false ))
	{
		AFCommon::QueueLogError( std::string("Unable to create tasks store folder:\n") + m_store_dir_tasks);
		return false;
	}

	//
	// Executing pre commands ( if not from database )
	if( isFromStore() == false )
	{
		if( false == m_command_pre.empty())
		{
			AFCommon::executeCmd( m_command_pre);
			appendLog( std::string("Job pre command executed:\n") + m_command_pre);
		}
		for( int b = 0; b < m_blocks_num; b++)
		{
			if( m_blocks_data[b]->hasCmdPre() )
			{
				AFCommon::executeCmd( m_blocks_data[b]->getCmdPre());
				appendLog( std::string("Block[") + m_blocks_data[b]->getName() + "] pre command executed:\n" + m_blocks_data[b]->getCmdPre());
			}
		}
		appendLog("Initialized.");
	}
	else
	{
		appendLog("Initialized from database.");
	}

	//
	// Checking states
	for( int b = 0; b < m_blocks_num; b++)
	{
		int numtasks = m_blocks_data[b]->getTasksNum();
		for( int t = 0; t < numtasks; t++)
		{
			uint32_t taskstate = m_progress->tp[b][t]->state;

			if( taskstate == 0 )
			{
				taskstate = AFJOB::STATE_READY_MASK;
			}
			else if( taskstate & AFJOB::STATE_RUNNING_MASK && ( false == m_blocks_data[b]->isMultiHost()))
			{
				taskstate = taskstate | AFJOB::STATE_WAITRECONNECT_MASK;
				taskstate = taskstate & (~AFJOB::STATE_RUNNING_MASK );
				m_progress->tp[b][t]->time_done = time(NULL);
				m_blocks[b]->m_tasks[t]->v_appendLog(
						"Task was running at server start. Waiting for render reconnect...");
			}

			m_progress->tp[b][t]->state = taskstate;
		}
	}
	
	if(( m_state & AFJOB::STATE_DONE_MASK) == false ) m_state = m_state | AFJOB::STATE_WAITDEP_MASK;
	
	v_refresh( time(NULL), NULL, NULL);
	
	return true;
}