//加载列表 bool __cdecl CServerListCenter::LoadServerList(tagDataBaseInfo & DataBaseInfo) { //重置列表 ResetServerList(); //创建数据库 CDataBaseHelper ServerInfoDB; if (ServerInfoDB.CreateInstance()==false) return false; try { //转化地址 TCHAR szDataBaseAdr[16]=TEXT(""); BYTE * pcbDataBaseAdr=(BYTE *)&DataBaseInfo.dwDataBaseAddr; _snprintf(szDataBaseAdr,sizeof(szDataBaseAdr),TEXT("%d.%d.%d.%d"),pcbDataBaseAdr[0],pcbDataBaseAdr[1],pcbDataBaseAdr[2],pcbDataBaseAdr[3]); //连接数据库 ServerInfoDB->SetConnectionInfo(szDataBaseAdr,DataBaseInfo.wDataBasePort,DataBaseInfo.szDataBaseName,DataBaseInfo.szDataBaseUser,DataBaseInfo.szDataBasePass); if (ServerInfoDB->OpenConnection()==false) return false; //加载信息 LoadGameType(ServerInfoDB.GetInterface()); LoadGameKind(ServerInfoDB.GetInterface()); LoadGameStation(ServerInfoDB.GetInterface()); return true; } catch (IADOError * pIADOError) { ASSERT(m_pIEventService!=NULL); m_pIEventService->ShowEventNotify(pIADOError->GetErrorDescribe(),Level_Exception); } return false; }
//删除房间 bool CServerInfoManager::DeleteGameServer(WORD wServerID) { //变量定义 CDataBaseAide PlatformDBAide; CDataBaseHelper PlatformDBModule; //执行逻辑 try { //连接数据库 if (ConnectPlatformDB(PlatformDBModule)==false) { ASSERT(FALSE); return false; } //设置对象 PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface()); //插入参数 PlatformDBAide.ResetParameter(); PlatformDBAide.AddParameter(TEXT("@wServerID"),wServerID); //输出信息 TCHAR szDescribeString[128]=TEXT(""); PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput); //执行命令 if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_DeleteGameRoom"),false)!=DB_SUCCESS) { //获取信息 PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString)); //错误提示 CTraceService::TraceString(szDescribeString,TraceLevel_Exception); //错误提示 AfxMessageBox(szDescribeString,MB_ICONERROR); return false; } return true; } catch (IDataBaseException * pIException) { //错误信息 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); //错误提示 AfxMessageBox(pszDescribe,MB_ICONERROR); } return false; }
//加载列表 bool __cdecl CServerListCenter::LoadServerList(tagDataBaseInfo & DataBaseInfo) { //重置列表 ResetServerList(); //创建数据库 CDataBaseAide ServerInfoDBAide; CDataBaseHelper ServerInfoDBModule; //创建对象 if (ServerInfoDBModule.CreateInstance()==false) { ASSERT(FALSE); return false; } try { //转化地址 TCHAR szDataBaseAdr[16]=TEXT(""); BYTE * pcbDataBaseAdr=(BYTE *)&DataBaseInfo.dwDataBaseAddr; _snprintf_s(szDataBaseAdr,sizeof(szDataBaseAdr),TEXT("%d.%d.%d.%d"),pcbDataBaseAdr[0],pcbDataBaseAdr[1],pcbDataBaseAdr[2],pcbDataBaseAdr[3]); //连接数据库 ServerInfoDBModule->SetConnectionInfo(szDataBaseAdr,DataBaseInfo.wDataBasePort,DataBaseInfo.szDataBaseName,DataBaseInfo.szDataBaseUser,DataBaseInfo.szDataBasePass); //发起连接 ServerInfoDBModule->OpenConnection(); ServerInfoDBAide.SetDataBase(ServerInfoDBModule.GetInterface()); //加载信息 LoadGameType(ServerInfoDBAide); LoadGameKind(ServerInfoDBAide); LoadGameStation(ServerInfoDBAide); return true; } catch (IDataBaseException * pIException) { //错误信息 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); return false; } return false; }
//连接数据 bool CServerInfoManager::ConnectPlatformDB(CDataBaseHelper & PlatformDBModule) { //获取参数 CModuleDBParameter * pModuleDBParameter=CModuleDBParameter::GetModuleDBParameter(); tagDataBaseParameter * pDataBaseParameter=pModuleDBParameter->GetPlatformDBParameter(); //创建对象 if ((PlatformDBModule.GetInterface()==NULL)&&(PlatformDBModule.CreateInstance()==false)) { AfxMessageBox(TEXT("CreateGameServer 创建 PlatformDBModule 对象失败"),MB_ICONERROR); return false; } //设置连接 PlatformDBModule->SetConnectionInfo(pDataBaseParameter->szDataBaseAddr,pDataBaseParameter->wDataBasePort, pDataBaseParameter->szDataBaseName,pDataBaseParameter->szDataBaseUser,pDataBaseParameter->szDataBasePass); //发起连接 PlatformDBModule->OpenConnection(); return true; }
//修改房间 bool CServerInfoManager::ModifyGameServer(tagGameServerCreate * pGameServerCreate, tagGameServerInfo & GameServerResult) { //变量定义 CDataBaseAide PlatformDBAide; CDataBaseHelper PlatformDBModule; //执行逻辑 try { //连接数据库 if (ConnectPlatformDB(PlatformDBModule)==false) { ASSERT(FALSE); return false; } //设置对象 PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface()); //扩展配置 TCHAR szCustomRule[CountArray(pGameServerCreate->cbCustomRule)*2+1]=TEXT(""); for (INT i=0;i<CountArray(pGameServerCreate->cbCustomRule);i++) _stprintf(&szCustomRule[i*2],TEXT("%02X"),pGameServerCreate->cbCustomRule[i]); //插入参数 PlatformDBAide.ResetParameter(); PlatformDBAide.AddParameter(TEXT("@wServerID"),pGameServerCreate->wServerID); PlatformDBAide.AddParameter(TEXT("@wKindID"),pGameServerCreate->wKindID); PlatformDBAide.AddParameter(TEXT("@wNodeID"),pGameServerCreate->wNodeID); PlatformDBAide.AddParameter(TEXT("@wSortID"),pGameServerCreate->wSortID); PlatformDBAide.AddParameter(TEXT("@lCellScore"),pGameServerCreate->lCellScore); PlatformDBAide.AddParameter(TEXT("@cbRevenueRatio"),pGameServerCreate->cbRevenueRatio); PlatformDBAide.AddParameter(TEXT("@lRestrictScore"),pGameServerCreate->lRestrictScore); PlatformDBAide.AddParameter(TEXT("@lMinTableScore"),pGameServerCreate->lMinTableScore); PlatformDBAide.AddParameter(TEXT("@lMinEnterScore"),pGameServerCreate->lMinEnterScore); PlatformDBAide.AddParameter(TEXT("@lMaxEnterScore"),pGameServerCreate->lMaxEnterScore); PlatformDBAide.AddParameter(TEXT("@cbMinEnterMember"),pGameServerCreate->cbMinEnterMember); PlatformDBAide.AddParameter(TEXT("@cbMaxEnterMember"),pGameServerCreate->cbMaxEnterMember); PlatformDBAide.AddParameter(TEXT("@dwServerRule"),pGameServerCreate->dwServerRule); PlatformDBAide.AddParameter(TEXT("@dwAttachUserRight"),pGameServerCreate->dwAttachUserRight); PlatformDBAide.AddParameter(TEXT("@wMaxPlayer"),pGameServerCreate->wMaxPlayer); PlatformDBAide.AddParameter(TEXT("@wTableCount"),pGameServerCreate->wTableCount); PlatformDBAide.AddParameter(TEXT("@wServerPort"),pGameServerCreate->wServerPort); PlatformDBAide.AddParameter(TEXT("@wServerType"),pGameServerCreate->wServerType); PlatformDBAide.AddParameter(TEXT("@strServerName"),pGameServerCreate->szServerName); PlatformDBAide.AddParameter(TEXT("@cbDistributeRule"),pGameServerCreate->cbDistributeRule); PlatformDBAide.AddParameter(TEXT("@wMinDistributeUser"),pGameServerCreate->wMinDistributeUser); PlatformDBAide.AddParameter(TEXT("@wMaxDistributeUser"),pGameServerCreate->wMaxDistributeUser); PlatformDBAide.AddParameter(TEXT("@wDistributeTimeSpace"),pGameServerCreate->wDistributeTimeSpace); PlatformDBAide.AddParameter(TEXT("@wDistributeDrawCount"),pGameServerCreate->wDistributeDrawCount); PlatformDBAide.AddParameter(TEXT("@wDistributeStartDelay"),pGameServerCreate->wDistributeStartDelay); PlatformDBAide.AddParameter(TEXT("@strDataBaseName"),pGameServerCreate->szDataBaseName); PlatformDBAide.AddParameter(TEXT("@strDataBaseAddr"),pGameServerCreate->szDataBaseAddr); PlatformDBAide.AddParameter(TEXT("@strCustomRule"),szCustomRule); PlatformDBAide.AddParameter(TEXT("@strServiceMachine"),pGameServerCreate->szServiceMachine); //输出信息 TCHAR szDescribeString[128]=TEXT(""); PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput); //执行命令 if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_ModifyGameRoom"),true)!=DB_SUCCESS) { //获取信息 PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString)); //错误提示 CTraceService::TraceString(szDescribeString,TraceLevel_Exception); //错误提示 AfxMessageBox(szDescribeString,MB_ICONERROR); return false; } //读取资料 ReadGameServerInfo(PlatformDBAide,GameServerResult); return true; } catch (IDataBaseException * pIException) { //错误信息 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); //错误提示 AfxMessageBox(pszDescribe,MB_ICONERROR); return false; } return false; }
//加载房间 bool CServerInfoManager::LoadGameServerInfo(TCHAR szMachineID[LEN_MACHINE_ID], WORD wServerID, tagGameServerInfo & GameServerResult) { //变量定义 CDataBaseAide PlatformDBAide; CDataBaseHelper PlatformDBModule; //执行逻辑 try { //连接数据库 if (ConnectPlatformDB(PlatformDBModule)==false) { ASSERT(FALSE); return false; } //设置对象 PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface()); //读取列表 PlatformDBAide.ResetParameter(); PlatformDBAide.AddParameter(TEXT("@wServerID"),wServerID); PlatformDBAide.AddParameter(TEXT("@strServiceMachine"),szMachineID); //输出信息 TCHAR szDescribeString[128]=TEXT(""); PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput); //读取列表 if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_LoadGameRoomItem"),true)!=DB_SUCCESS) { //获取信息 PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString)); //错误提示 CTraceService::TraceString(szDescribeString,TraceLevel_Exception); //错误提示 AfxMessageBox(szDescribeString,MB_ICONERROR); return false; } //读取数据 if (PlatformDBModule->IsRecordsetEnd()==false) { ReadGameServerInfo(PlatformDBAide,GameServerResult); return true; } return false; } catch (IDataBaseException * pIException) { //错误信息 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); //错误提示 AfxMessageBox(pszDescribe,MB_ICONERROR); return false; } return false; }
//连接信息 bool CServiceUnits::LoadDataBaseParameter(LPCTSTR pszDataBaseAddr, LPCTSTR pszDataBaseName, tagDataBaseParameter & DataBaseParameter) { //变量定义 CDataBaseAide PlatformDBAide; CDataBaseHelper PlatformDBModule; //创建对象 if ((PlatformDBModule.GetInterface()==NULL)&&(PlatformDBModule.CreateInstance()==false)) { ASSERT(FALSE); return false; } //变量定义 tagDataBaseParameter * pPlatformDBParameter=&m_InitParameter.m_PlatformDBParameter; //设置连接 PlatformDBModule->SetConnectionInfo(pPlatformDBParameter->szDataBaseAddr,pPlatformDBParameter->wDataBasePort, pPlatformDBParameter->szDataBaseName,pPlatformDBParameter->szDataBaseUser,pPlatformDBParameter->szDataBasePass); //获取信息 try { //发起连接 PlatformDBModule->OpenConnection(); PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface()); //连接信息 PlatformDBAide.ResetParameter(); PlatformDBAide.AddParameter(TEXT("@strDataBaseAddr"),pszDataBaseAddr); //执行查询 if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_LoadDataBaseInfo"),true)!=DB_SUCCESS) { //构造信息 TCHAR szErrorDescribe[128]=TEXT(""); PlatformDBAide.GetValue_String(TEXT("ErrorDescribe"),szErrorDescribe,CountArray(szErrorDescribe)); //提示消息 CTraceService::TraceString(szErrorDescribe,TraceLevel_Exception); return false; } //读取密文 TCHAR szDBUserRead[512]=TEXT(""),szDBPassRead[512]=TEXT(""); PlatformDBAide.GetValue_String(TEXT("DBUser"),szDBUserRead,CountArray(szDBUserRead)); PlatformDBAide.GetValue_String(TEXT("DBPassword"),szDBPassRead,CountArray(szDBPassRead)); //获取信息 DataBaseParameter.wDataBasePort=PlatformDBAide.GetValue_WORD(TEXT("DBPort")); lstrcpyn(DataBaseParameter.szDataBaseAddr,pszDataBaseAddr,CountArray(DataBaseParameter.szDataBaseAddr)); lstrcpyn(DataBaseParameter.szDataBaseName,pszDataBaseName,CountArray(DataBaseParameter.szDataBaseName)); //解密密文 TCHAR szDataBaseUser[32]=TEXT(""),szDataBasePass[32]=TEXT(""); CWHEncrypt::XorCrevasse(szDBUserRead,DataBaseParameter.szDataBaseUser,CountArray(DataBaseParameter.szDataBaseUser)); CWHEncrypt::XorCrevasse(szDBPassRead,DataBaseParameter.szDataBasePass,CountArray(DataBaseParameter.szDataBasePass)); } catch (IDataBaseException * pIException) { //错误信息 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); return false; } return true; }
//获取密码 const tagDBConnectInfo * CServiceLoaderDlg::GetDBConnectInfo(DWORD dwDataBaseAddr) { //寻找现存 tagDBConnectInfo * pDBConnectInfo=NULL; for (INT_PTR i=0;i<m_DBConnectInfoArray.GetCount();i++) { pDBConnectInfo=&m_DBConnectInfoArray[i]; if (pDBConnectInfo->dwDataBaseAddr==dwDataBaseAddr) return pDBConnectInfo; } //创建数据库 CDataBaseAide ServerInfoAide; CDataBaseHelper ServerInfoDB; if (ServerInfoDB.CreateInstance()==false) { ShowErrorMessasge(TEXT("数据库组件创建失败,无法获取数据库信息"),TraceLevel_Exception); return NULL; } try { //连接数据库 ServerInfoDB->SetConnectionInfo(m_InitParamter.m_szServerInfoDBAddr,m_InitParamter.m_wServerInfoDBPort, m_InitParamter.m_szServerInfoDBName,m_InitParamter.m_szServerInfoDBUser,m_InitParamter.m_szServerInfoDBPass); //打开连接 ServerInfoDB->OpenConnection(); ServerInfoAide.SetDataBase(ServerInfoDB.GetInterface()); //转化地址 TCHAR szDataBaseAdr[16]=TEXT(""); BYTE * pcbDataBaseAdr=(BYTE *)&dwDataBaseAddr; _snprintf(szDataBaseAdr,sizeof(szDataBaseAdr),TEXT("%d.%d.%d.%d"),pcbDataBaseAdr[0],pcbDataBaseAdr[1],pcbDataBaseAdr[2],pcbDataBaseAdr[3]); //执行查询 ServerInfoAide.ResetParameter(); ServerInfoAide.AddParameter(TEXT("@strDataBaseAddr"),szDataBaseAdr); LONG lReturnCode=ServerInfoAide.ExecuteProcess(TEXT("GSP_LoadDataBaseInfo"),true); //结果判断 if (lReturnCode!=0L) { TCHAR szErrorDescribe[256]=TEXT(""); ServerInfoAide.GetValue_String(TEXT("ErrorDescribe"),szErrorDescribe,CountArray(szErrorDescribe)); ShowErrorMessasge(szErrorDescribe,TraceLevel_Exception); return NULL; } //获取信息 tagDBConnectInfo DBConnectInfo; memset(&DBConnectInfo,0,sizeof(DBConnectInfo)); TCHAR szDBUser[512]=TEXT(""),szDBPass[512]=TEXT(""),szDBAddr[16]=TEXT(""); ServerInfoAide.GetValue_String(TEXT("DBAddr"),szDBAddr,sizeof(szDBAddr)); ServerInfoAide.GetValue_String(TEXT("DBUser"),szDBUser,sizeof(szDBUser)); DBConnectInfo.wDataBasePort=ServerInfoAide.GetValue_WORD(TEXT("DBPort")); ServerInfoAide.GetValue_String(TEXT("DBPassword"),szDBPass,sizeof(szDBPass)); CXOREncrypt::CrevasseData(szDBUser,DBConnectInfo.szDataBaseUser,sizeof(DBConnectInfo.szDataBaseUser)); CXOREncrypt::CrevasseData(szDBPass,DBConnectInfo.szDataBasePass,sizeof(DBConnectInfo.szDataBasePass)); //保存信息 DBConnectInfo.dwDataBaseAddr=dwDataBaseAddr; INT_PTR nIndex=m_DBConnectInfoArray.Add(DBConnectInfo); return &m_DBConnectInfoArray[nIndex]; } catch (IDataBaseException * pIException) { //输出错误 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); } return NULL; }