Пример #1
0
void NL::System::Initialize()
{
	int width,height,flags;
	DWORD whitecol,blackcol,bordercolor;

	bool fullscreen,mirror;

	std::ifstream f("Data/config.cfg");
	f >> width >> height >> fullscreen;
	f >> whitecol >> blackcol >> bordercolor >> mirror;
	f.close();

	flags = SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_OPENGL;

	if (fullscreen)
	{
		flags |= SDL_FULLSCREEN;
	}

	ResourceManager::getSingleton().AddResource("Window width",&width,sizeof(width));
	ResourceManager::getSingleton().AddResource("Window height",&height,sizeof(height));
	ResourceManager::getSingleton().AddResource("Mirror",&mirror,sizeof(mirror));
	ResourceManager::getSingleton().AddResource("Border color",&bordercolor,sizeof(bordercolor));
	ResourceManager::getSingleton().AddResource("White color",&whitecol,sizeof(whitecol));
	ResourceManager::getSingleton().AddResource("Black color",&blackcol,sizeof(blackcol));

	ADD_LOG("Initializing SDL...",(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) >= 0));
	ADD_LOG("Initializing SDL_VideoMode...",SDL_SetVideoMode(width,height,24,flags));

	SDL_ShowCursor(SDL_DISABLE);
	SDL_EnableUNICODE(1);
	SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
};
Пример #2
0
bool JudgeDB::saveSourceFile(const char* sCodePath, int nRunID)
{
	CAutoLock _LOCK(getLock());

	std::string sql_query;
	BaseFunc::strFormat(sql_query,
		JUDGE_CONFIG::SQL_FETCH_SUBMITION_CODE,
		nRunID
		);

	CDBObject* p_judge_db = getDBObj();
	if( !p_judge_db->Query(sql_query.c_str()) )
	{
		ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error());
		assert(false);
		return false;
	}

	CDBObject::PQUERY_RESULT sql_res = NULL;
	sql_res = p_judge_db->StoreResult();
	if (sql_res == NULL)
		return false;

	bool b_ret = false;
	char** res_body = NULL;
	res_body = p_judge_db->FetchRow(sql_res);
	if( res_body == NULL)
		goto end;

	b_ret = true;
	FILE* p_file = fopen(sCodePath, "wb");
	if (p_file == NULL)
	{
		ADD_LOG("%s:%d Save File Fault!", __FUNCTION__, __LINE__);
		b_ret = false;
		goto end;
	}

	if( -1 == fputs(res_body[1], p_file))
		b_ret = false;

	fclose(p_file);

end:
	p_judge_db->FreeResult(sql_res);
	p_judge_db->ClearResult();

	return b_ret;
}
Пример #3
0
void COptionDlg::OnTcnSelchangeTabOption(NMHDR *pNMHDR, LRESULT *pResult)
{
	ADD_LOG();
	switch (m_tb_TabOption.GetCurSel())
	{
	case 0:
		{
			m_ptbpage_Program->ShowWindow(SW_HIDE);
			m_ptbpage_Log->ShowWindow(SW_HIDE);
			m_ptbpage_Routine->ShowWindow(SW_SHOW);
		} break;
	case 1: 
		{
			m_ptbpage_Program->ShowWindow(SW_SHOW);
			m_ptbpage_Log->ShowWindow(SW_HIDE);
			m_ptbpage_Routine->ShowWindow(SW_HIDE);
		} break;
	case 2: case 3:
		{
			m_ptbpage_Log->ShowWindow(SW_SHOW);
			m_ptbpage_Program->ShowWindow(SW_HIDE);
			m_ptbpage_Routine->ShowWindow(SW_HIDE);
		} break;
	}
	*pResult = 0;
}
Пример #4
0
DWORD WINAPI CloseProcessThread(LPVOID para) {
	ADD_LOG();
	CProcessControl* p = (CProcessControl*)para;

	int nTotal = p->GetSurplusTime();
	if (p->GetWatchCount() == 0 || p->GetActiveWatchCount() == 0) {::PostMessage((p->m_hWnd), WM_CLOSE, NULL, NULL); return 1;}

	while(p->GetWatchCount() > 0)
	{
		::PostMessage(p->m_hWnd, WM_UPDATESHOWESTABLISHPRO, nTotal, FALSE);
		PWATCH_PROCESS_INFORMATION pwatch = p->GetWatchData(p->GetWatchCount()-1);
		if (pwatch->nstatus == CProcessControl::RUN) {
			Sleep(p->GetConfigData(pwatch->nParents)->nTime);
			if (pwatch->proinfo.hProcess != NULL) {
				::EnumWindows((WNDENUMPROC)CProcessControl::EnumClosePro, (LPARAM)pwatch->proinfo.dwProcessId);
				if (WaitForSingleObject(pwatch->proinfo.hProcess, 5000) == WAIT_TIMEOUT) {
					TerminateProcess(pwatch->proinfo.hProcess, -1);
				}
			}
		}
		p->EraseWatchData(p->GetWatchCount()-1);
	}
	p->FreeWatchData();
	WaitForSingleObject(p->m_hCloseWndEvent, INFINITE);
	::PostMessage((p->m_hWnd), WM_CLOSE, NULL, NULL);
	return 0;
}
Пример #5
0
BOOL CProcessControl::CreateProcessList() {
	ADD_LOG();
	m_cSection.Lock();
	int n = m_pTransformData->m_pConfigData->size();

	for (int i = 0; i < n; i++) {
		ConfigData* tp = m_pTransformData->m_pConfigData->at(i);

		char_t* pchar = new char_t[tp->strParam.GetLength() + 2];
		_tcscpy_s(pchar, tp->strParam.GetLength() + 2, tp->strParam.GetString());

		if (i == n-1) {
			UpdateProcessList(i, tp->strPath.GetString(),
				pchar, tp->bAtoRecover, tp->nNumber, tp->nTime, _T("last no sleep"));
		}
		else {
			UpdateProcessList(i, tp->strPath.GetString(),
				pchar, tp->bAtoRecover, tp->nNumber, tp->nTime);
		}

		delete[] pchar;
	}
	m_cSection.Unlock();

	return TRUE;
}
Пример #6
0
	LoadingScreen::LoadingScreen() :
		_gui(xNew1(GUI,("LoadingScreen")))
	{
		ADD_LOG("Creating LoadScreen");
		InitGui();
		GUIManager::Instance()->RegisterGUI("LoadingScreen", _gui); 
	}
Пример #7
0
bool JudgeDB::uploadCompileResult(
				int nRunID,
				int nUserID,
				int nGameID,
				bool bCompileRes,
				const char* sCompileError)
{
	CAutoLock _LOCK(getLock());

	std::string sql_query;
	BaseFunc::strFormat(sql_query,
		JUDGE_CONFIG::SQL_UPLOAD_COMPILE_RESULT,
		nRunID,
		nUserID,
		nGameID,
		bCompileRes,
		sCompileError);

	CDBObject* p_judge_db = getDBObj();
	if( !p_judge_db->Query(sql_query.c_str()) )
	{
		ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error());
		assert(false);
		return false;
	}

	return true;
}
Пример #8
0
BOOL CProcessControl::IsRunningWatchThread(BOOL bwatch) {
	ADD_LOG();
	if (bwatch) {
		ADD_WORSELOG_CONTAINER(m_pTransformData->m_pWatchData);
		if (m_pTransformData->m_pWatchData->size() <= 0) return FALSE;
		if (m_hThread != NULL) {
			::SetEvent(m_hExitEvent);
			if (WaitForSingleObject(m_hThread, 5000) == WAIT_TIMEOUT)
				TerminateThread(m_hThread, -1);
			CLOSE_HANDLE(m_hThread);
			::ResetEvent(m_hExitEvent);
		}
		m_hThread = ::CreateThread(NULL, 0,
			(LPTHREAD_START_ROUTINE)WatchThread, this, NULL, 0);
	}
	else {
		if (m_hThread != NULL) {
			::SetEvent(m_hExitEvent);
			if (WaitForSingleObject(m_hThread, 5000) == WAIT_TIMEOUT)
				TerminateThread(m_hThread, -1);
			CLOSE_HANDLE(m_hThread);
			::ResetEvent(m_hExitEvent);
		}
		
	}
	return TRUE;
}
Пример #9
0
BOOL COptionDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	ADD_LOG();
	m_tb_TabOption.InsertItem(0, _T("常规"));
	m_tb_TabOption.InsertItem(1, _T("程序"));
	m_tb_TabOption.InsertItem(2, _T("日志"));
	m_tb_TabOption.InsertItem(3, _T("快速配置"));
	m_tb_TabOption.SetCurSel(1);

	m_ptbpage_Program->Create(IDC_TABPAGE_PROGRAM,	&m_tb_TabOption);
	m_ptbpage_Log->Create(IDC_TABPAGE_LOG,			&m_tb_TabOption);
	m_ptbpage_Routine->Create(IDC_TABPAGE_ROUTINE,	&m_tb_TabOption);
	

	CRect rc;
	m_tb_TabOption.GetClientRect(&rc);
	rc.top += 22;
	rc.left += 1;
	rc.right -= 1;
	rc.bottom -= 3;
	m_ptbpage_Program->MoveWindow(&rc);
	m_ptbpage_Log->MoveWindow(&rc);
	m_ptbpage_Routine->MoveWindow(&rc);

	m_ptbpage_Program->ShowWindow(SW_SHOW);
	m_ptbpage_Log->ShowWindow(SW_HIDE);
	m_ptbpage_Routine->ShowWindow(SW_HIDE);

	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}
Пример #10
0
	CreateGameScreen::CreateGameScreen() :
		IMenuScreen(xNew1(GUI,"CreateGameScreen"), "CreateGameScreen"),
		_loaded(false),
		_onMapSelected(this),
		_onStartPosLeftClicked(this),
		_onStartPosRightClicked(this),
		_selectedStartLoc(-1),
		_onAllReadyChanged(this)
	{
		ADD_LOG("Begin Creating CreateGameScreen");
		LoadNewGameSettings();
		InitGui();
		_loaded = true;
		_buttonStart->setEnabled(false);
		ADD_LOG("End Creating CreateGameScreen");
	}
Пример #11
0
BOOL CTabPageProgram::UpdateList(INT nIndex /*=-1*/) {
	ASSERT(m_pProgress);

	if (!IsWindow(m_hWnd)) return FALSE;
	ADD_LOG();
	s_nNumber = 0;
	m_lt_ShowProgram.DeleteAllItems();
	m_ImageList.DeleteImageList();
	m_ImageList.Create(16, 16, ILC_COLOR32, 0, 0);
	m_ImageList.SetImageCount(0);
	m_lt_ShowProgram.SetImageList(&m_ImageList, LVSIL_SMALL);

	if (m_pProgress->m_pProcessControl->GetConfigCount() <= 0)return FALSE;
	int n = m_pProgress->m_pProcessControl->GetConfigCount();
	
	for (int i = 0; i < n; i++) {
		ConfigData* tp = m_pProgress->m_pProcessControl->GetConfigData(i);
		AddWatchProgramList(tp->strPath.GetString(),
			tp->strId.GetString(), tp->strName.GetString(),
			tp->nNumber, tp->nTime,
			tp->bAtoRecover, tp->strEvent.GetString());
	}

	return TRUE;
}
Пример #12
0
BOOL CTabPageProgram::OnInitDialog()
{
	CDialog::OnInitDialog();
	ADD_LOG();
	m_lt_ShowProgram.SetExtendedStyle(LVS_EX_SUBITEMIMAGES |
		LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES);

	m_lt_ShowProgram.ModifyStyle(0, LVS_REPORT, 0);
	
	m_lt_ShowProgram.InsertColumn(0, _T("自动恢复"), LVCFMT_CENTER, 100);
	m_lt_ShowProgram.InsertColumn(1, _T("编号"), LVCFMT_CENTER, 50);
	m_lt_ShowProgram.InsertColumn(2, _T("进程标识符"), LVCFMT_CENTER, 100);
	m_lt_ShowProgram.InsertColumn(3, _T("进程名称"), LVCFMT_CENTER, 80);
	m_lt_ShowProgram.InsertColumn(4, _T("数量"), LVCFMT_CENTER, 50);
	m_lt_ShowProgram.InsertColumn(5, _T("等待时间"), LVCFMT_CENTER, 100);
	m_lt_ShowProgram.InsertColumn(6, _T("   "), LVCFMT_CENTER, 40);
	m_lt_ShowProgram.InsertColumn(7, _T("事件名称"), LVCFMT_CENTER, 100);

	CHeaderCtrl* pHeaderCtrl = m_lt_ShowProgram.GetHeaderCtrl();
	INT nCount = pHeaderCtrl->GetItemCount();
	LPINT pOder = (LPINT)malloc(nCount*sizeof(int));
	pHeaderCtrl->GetOrderArray(pOder, nCount);
	int nTemp = 0;
	nTemp = pOder[0], pOder[0] = pOder[nCount - 2], pOder[nCount - 2] = nTemp;
	pHeaderCtrl->SetOrderArray(nCount, pOder);
	free(pOder);
	
	UpdateList();

	return TRUE;
}
Пример #13
0
VOID CProcessControl::UnInitialize() {
	ADD_LOG();
	if (m_hExitEvent!= NULL) SetEvent(m_hExitEvent);

	if (m_hThread != NULL) {
		if (WaitForSingleObject(m_hThread, 5000) == WAIT_TIMEOUT) 
			TerminateProcess(m_hThread, -1);

		CLOSE_HANDLE(m_hThread);
	}
	if (m_hExitEvent!= NULL) ResetEvent(m_hExitEvent);
	CLOSE_HANDLE(m_hExitEvent);

	int nsum = m_pTransformData->m_pWatchData->size();
	for (int i = 0; i < nsum; i++)
	{
		PWATCH_PROCESS_INFORMATION pwatch = m_pTransformData->m_pWatchData->at(i);
		if (pwatch->proinfo.hProcess != NULL) {
			::EnumWindows((WNDENUMPROC)EnumClosePro, (LPARAM)pwatch->proinfo.dwProcessId);
			if (WaitForSingleObject(pwatch->proinfo.hProcess, 5000) == WAIT_TIMEOUT) {
				TerminateProcess(pwatch->proinfo.hProcess, -1);
				
			}
		}
	}
	FreeWatchData();
	
}
Пример #14
0
VOID CProcessControl::ReCreateProcess(INT nIndex) {
	ADD_LOG();
	m_cSection.Lock();
	PWATCH_PROCESS_INFORMATION pWatch =  m_pTransformData->m_pWatchData->at(nIndex);
	::EnumWindows((WNDENUMPROC)EnumClosePro, (LPARAM)pWatch->proinfo.dwProcessId);
	UpdateSimpleProcessList(pWatch, NULL, NULL);
	m_cSection.Unlock();
}
Пример #15
0
VOID CProcessControl::ReCreateEstablishThread() {
	ADD_LOG();
	UnInitialize();

	HANDLE h = ::CreateThread(NULL, 0,
		(LPTHREAD_START_ROUTINE)EstablishThread, (LPVOID)this, NULL, 0);
	CLOSE_HANDLE(h);
}
Пример #16
0
	void LoadingScreen::Unload()
	{
		if(_gui.IsValid())
		{
			ADD_LOG("Unloading LoadingScreen");
			_gui->UnloadAllLayouts();
		}
	}
Пример #17
0
	LoadingScreen::~LoadingScreen()
	{
		ADD_LOG("Destroying LoadScreen");
		if(_gui.IsValid())
		{
			GUIManager::Instance()->UnregisterGUI("LoadingScreen");
			_gui->UnloadAllLayouts();
		}
	}
Пример #18
0
	void CreateGameScreen::Unload()
	{
		if(_gui.IsValid() && _loaded)
		{
			ADD_LOG("Unloading CreateGameScreen");
			GUIManager::Instance()->UnregisterGUI("CreateGameScreen");
			xDeleteSafe(_mapList);
			xDeleteSafe(_mapPreview);
			xDeleteSafe(_playersSettings);
			_gui->UnloadAllLayouts();
			_loaded = false;
		}
	}
Пример #19
0
VOID CProcessControl::CloseNProcess(INT nIndex) {
	ADD_LOG();
	m_cSection.Lock();
	PWATCH_PROCESS_INFORMATION pWatch =  m_pTransformData->m_pWatchData->at(nIndex);
	::EnumWindows((WNDENUMPROC)EnumClosePro, (LPARAM)pWatch->proinfo.dwProcessId);
	GetWatchData(nIndex)->nstatus = EXIT;
	m_cSection.Unlock();
	if (WaitForSingleObject(pWatch->proinfo.hProcess, 5000) == WAIT_TIMEOUT) {
		TerminateProcess(pWatch->proinfo.hProcess, -1);
		
	}
	CLOSE_HANDLE(pWatch->proinfo.hProcess);
}
Пример #20
0
void CTabPageProgram::OnBnClickedButtonDown()
{
	ADD_LOG();
	if (!m_bUndateList) {
		MessageBox(_T("进程已经运行,请勿修改。或暂停监听"), _T("提示"), MB_OKCANCEL);
		return;
	}
	int nindex = m_lt_ShowProgram.GetSelectionMark();
	if (nindex >= m_lt_ShowProgram.GetItemCount()) return;
	m_pProgress->m_pProcessControl->DownConfigItem(nindex);
	UpdateList();
	m_lt_ShowProgram.SetFocus();
	m_lt_ShowProgram.SetItemState(nindex+1, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}
Пример #21
0
void CTabPageProgram::OnBnClickedButtonDelete()
{
	ADD_LOG();
	if (!m_bUndateList) {
		MessageBox(_T("进程已经运行,请勿修改。或暂停监听"), _T("提示"), MB_OKCANCEL);
		return;
	}
	int n = m_lt_ShowProgram.GetSelectionMark();
	if (n < 0 || n > m_lt_ShowProgram.GetItemCount()) return;
	if (m_pProgress->m_pProcessControl != NULL){ 
		m_pProgress->m_pProcessControl->EraseConfigData(n);
		UpdateList();
	}
}
Пример #22
0
	OptionsAudio::OptionsAudio(RefPtr<GUI> parentGui) :
		IOptionsPanel(parentGui, parentGui->FindWidget("OptionsMainPanel"), "OptionsAudio"),
		_pendingSettingChanges(false),
		_loaded(false)
	{
		ADD_LOG("Begin Create OptionsAudio");
		// InitGui
		if( _gui->LoadLayout("OptionsAudio.layout", _parentPanel, true) != ErrorCodes::Success)
		{
			ADD_LOG("Couldn't load layout : OptionsAudio.layout");
		}

		// Assign widgets
		RefPtr<Layout> mainLayout = _gui->GetLayout("OptionsAudio.layout");
		//_panel = static_cast<MyGUI::Widget*>(_gui->FindInLayout(mainLayout, "PanelVideo"));
		//_buttonAccept = static_cast<MyGUI::Button*>(_gui->FindInLayout(mainLayout, "ButtonApply"));
		//_labelMaster = static_cast<MyGUI::EditBox*>(_gui->FindInLayout(mainLayout, "LabelMasterVolume"));
	
		// Create sliders
		//_sliderMaster = CreateVolumeSlider(parentGui, mainLayout, "MasterVolume");

		// Set event handlers
		//_buttonAccept->eventMouseButtonClick += MyGUI::newDelegate(this, &OptionsAudio::ButtonAcceptClicked);

		// Set locale texts
		//_buttonAccept->setCaption(GET_TEXT("ButtonApply","Gui.MainMenu.Options.Video"));

		// Find settings values from configs
		//_newSettings = SystemSettings::GetAudioSettings();

		// Fill controls with data and set current values
		//_sliderMaster->SetCurrentValue( _newSettings.MasterVolume );

		_loaded = true;
		ADD_LOG("End Create OptionsVideo");
	}
Пример #23
0
	void CreateGameScreen::InitGui()
	{
		// InitGui
		if( _gui->LoadLayout("SkirmishSetup.layout", 0, true) != ErrorCodes::Success)
		{
			ADD_LOG("Couldn't load layout : SkirmishSetup.layout");
		}

		AssignWidgets();
		SetWidgetTexts();
		SetEventHandlers();
		FillModesCombos();

		GUIManager::Instance()->RegisterGUI("CreateGameScreen", _gui); 
	}
Пример #24
0
void CTabPageProgram::OnBnClickedButtonModify()
{
	ADD_LOG();
	if (!m_bUndateList) {
		MessageBox(_T("进程已经运行,请勿修改。或暂停监听"), _T("提示"), MB_OKCANCEL);
		return;
	}
	int n = m_lt_ShowProgram.GetSelectionMark();
	if (n < 0 || n > m_lt_ShowProgram.GetItemCount()) return;
	ConfigData* p_tran = m_pProgress->m_pProcessControl->GetConfigData(n);
	if (p_tran != NULL) {
		CAddExecuteDlg dlg(p_tran, m_pProgress, TRUE);
		dlg.DoModal();
	}
	UpdateList();
}
Пример #25
0
bool JudgeDB::uploadMatchResult(int nMatchID,
								const char* sMatchResult)
{
	CAutoLock _LOCK(getLock());

	std::string sql_query;
	BaseFunc::strFormat(sql_query,
		JUDGE_CONFIG::SQL_UPLOAD_JUDGE_RESULT,
		nMatchID,
		sMatchResult);

	CDBObject* p_judge_db = getDBObj();
	if( !p_judge_db->Query(sql_query.c_str()) )
	{
		ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error());
		assert(false);
		return false;
	}

	return true;
}
Пример #26
0
bool JudgeDB::fetchNewMatch(MatchInfo* miBody)
{
	CAutoLock _LOCK(getLock());

	const char* sql_query = JUDGE_CONFIG::SQL_FETCH_NEW_MATCH;

	CDBObject* p_judge_db = getDBObj();
	if( !p_judge_db->Query(sql_query) )
	{
		ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error());
		assert(false);
		return false;
	}

	CDBObject::PQUERY_RESULT sql_res = NULL;
	sql_res = p_judge_db->StoreResult();
	if (sql_res == NULL)
		return false;

	bool b_ret = false;
	char** res_body = NULL;
	res_body = p_judge_db->FetchRow(sql_res);
	if( res_body == NULL)
		goto end;

	b_ret = true;
	memset(miBody, 0, sizeof(MatchInfo));
	miBody->MatchID		= BaseFunc::strToInteger(res_body[0]);
	miBody->GameID		= BaseFunc::strToInteger(res_body[1]);
	miBody->PalyerCnt	= BaseFunc::strToInteger(res_body[2]);
	
	for (int i=0; i<miBody->PalyerCnt; ++i)
		miBody->Players[i]	= BaseFunc::strToInteger(res_body[i+3]);

end:
	p_judge_db->FreeResult(sql_res);
	p_judge_db->ClearResult();

	return b_ret;
}
Пример #27
0
bool JudgeDB::getJudgerExecInfo(int nGameID, std::string& sPath, std::string& sMd5, std::string& sConfig)
{
	CAutoLock _LOCK(getLock());

	std::string sql_query;
	BaseFunc::strFormat(sql_query,
		JUDGE_CONFIG::SQL_GET_JUDGER_EXEC_INFO,
		nGameID
		);

	CDBObject* p_judge_db = getDBObj();
	if( !p_judge_db->Query(sql_query.c_str()) )
	{
		ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error());
		assert(false);
		return false;
	}

	CDBObject::PQUERY_RESULT sql_res = NULL;
	sql_res = p_judge_db->StoreResult();
	if (sql_res == NULL)
		return false;

	bool b_ret = false;
	char** res_body = NULL;
	res_body = p_judge_db->FetchRow(sql_res);
	if( res_body == NULL)
		goto end;

	b_ret = true;
	sPath	= res_body[1];
	sMd5	= res_body[2];
	sConfig	= res_body[3];

end:
	p_judge_db->FreeResult(sql_res);
	p_judge_db->ClearResult();

	return b_ret;
}
Пример #28
0
bool JudgeDB::fetchNewSubmit(SubmitionInfo* siBody)
{
	CAutoLock _LOCK(getLock());

	const char* sql_query = JUDGE_CONFIG::SQL_FETCH_NEW_SUBMITION;

	CDBObject* p_judge_db = getDBObj();
	if( !p_judge_db->Query(sql_query) )
	{
		ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error());
		assert(false);
		return false;
	}

	CDBObject::PQUERY_RESULT sql_res = NULL;
	sql_res = p_judge_db->StoreResult();
	if (sql_res == NULL)
		return false;

	bool b_ret = false;
	char** res_body = NULL;
	res_body = p_judge_db->FetchRow(sql_res);
	if( res_body == NULL)
		goto end;

	b_ret = true;
	memset(siBody, 0, sizeof(SubmitionInfo));
	siBody->RunID		= BaseFunc::strToInteger(res_body[0]);
	siBody->GameID		= BaseFunc::strToInteger(res_body[1]);
	siBody->UserID		= BaseFunc::strToInteger(res_body[2]);
	siBody->LanguageID	= (CodeLanguage)BaseFunc::strToInteger(res_body[3]);

end:
	p_judge_db->FreeResult(sql_res);
	p_judge_db->ClearResult();

	return b_ret;
}
Пример #29
0
bool JudgeDB::storePlayerExecFile(int nRunID,
								const char* sFilePath,
								const char* sFileMd5 )
{
	CAutoLock _LOCK(getLock());

	std::string sql_query;
	BaseFunc::strFormat(sql_query,
		JUDGE_CONFIG::SQL_STORE_PLAYER_EXEC_FILE,
		nRunID,
		sFilePath,
		sFileMd5);

	CDBObject* p_judge_db = getDBObj();
	if( !p_judge_db->Query(sql_query.c_str()) )
	{
		ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error());
		assert(false);
		return false;
	}

	return true;
}
Пример #30
0
BOOL CProcessControl::UpdateSimpleProcessList(
	WATCH_PROCESS_INFORMATION* pWatch, LPCTSTR lpszPath,
	LPTSTR lpszParam, DWORD dwExtra /* = NULL */) {
	
	ADD_LOG();
	STARTUPINFO si = { 0 };
	PROCESS_INFORMATION pi = { 0 };
	si.cb = sizeof(si);
	si.wShowWindow = SW_SHOW;
	si.lpTitle = _T("sobey");
	si.dwFlags = STARTF_FORCEONFEEDBACK | STARTF_USESHOWWINDOW;

	if (lpszPath == NULL) {
		PConfigData ptran = m_pTransformData->m_pConfigData->at(pWatch->nParents);
		lpszPath = ptran->strPath.GetBuffer();
	}
	if (lpszParam == NULL) {
		PConfigData ptran = m_pTransformData->m_pConfigData->at(pWatch->nParents);
		lpszParam = ptran->strParam.GetBuffer();
	}
	BOOL b = ::CreateProcess(lpszPath, lpszParam, NULL, NULL, FALSE,
		NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
	int nerror = GetLastError();
	ADD_WORSELOG(0==nerror, "GetLastError Code");
	
	ADD_CHECKLOG_BOOL(b);
	if (b) {
		pWatch->nstatus = RUN; pWatch->proinfo = pi;
	}
	else {
		pWatch->nstatus = EXIT; pWatch->proinfo = pi;
	}
		
	if (m_hWnd) ::PostMessage(m_hWnd, WM_UPDATEWATCHLIST, TRUE, (LPARAM)dwExtra);

	return b;
}