#include "StdAfx.h" #include "ResultServerControl.h" #include "IOCPNetwork/NetDefinition.h" #include "CHReviewResult/GlassResult.h" #include "IOCPNetwork/NetServer.h" CResultServerControl::CResultServerControl(void) { m_pServerSocket = NULL; InitResultServer(); } CResultServerControl::~CResultServerControl(void) { DeinitResultServer(); } // Result Server int CResultServerControl::InitResultServer() { if (m_pServerSocket) { delete m_pServerSocket; m_pServerSocket = NULL; } m_pServerSocket = new CNetServer(); if (m_pServerSocket==NULL) return 0; int nClientCount = 10; m_pServerSocket->SetIN2P(static_cast(this)); m_pServerSocket->SetClientInfo(Socket_All_Client, nClientCount, NETCODE_RESULT_SERVER_ALL, NETVER_RESULT_SERVER_ALL, FALSE); BOOL bResult = m_pServerSocket->InitNetwork(ServerMode, nClientCount, NETPORT_RESULT_SERVER_ALL); return bResult; } void CResultServerControl::DeinitResultServer() { if (m_pServerSocket) { m_pServerSocket->DeinitNetwork(); delete m_pServerSocket; } m_pServerSocket = NULL; } void CResultServerControl::IOCPNet2P_Connected(int nType) { g_pLog->DisplayMessage(_T("ResultServer Client Connect! [%d]"), nType); } void CResultServerControl::IOCPNet2P_Disconnected(int nType, int nModuleNo) { g_pLog->DisplayMessage(_T("ResultServer Client Disconnected! [%d, %d]"), nType, nModuleNo); } BOOL CResultServerControl::IOCPNet2P_Received(int Type, CNetPacket* pPacket, __int64 nContext) { if(!pPacket) return FALSE; if (Type!=Socket_All_Client) return FALSE; CNetJoiner* pNetJoiner = NULL; switch(pPacket->GetPacketCode()) { case CR_MODULE_INDEX: g_pLog->DisplayMessage(_T("[%d]NetIOCP2P_Received CA_MODULE_INDEX"), pPacket->GetModuleNo()); for(int i = 0; i < m_pServerSocket->GetClientCount(); i++) { pNetJoiner = m_pServerSocket->GetJoinerArray(i); if (pNetJoiner && reinterpret_cast(pNetJoiner->GetSocketContext()) == nContext) { pNetJoiner->SetModuleNo(pPacket->GetModuleNo(), FALSE); m_pServerSocket->SendToClient(i, RC_MODULE_INDEX, NET_RESULT_SUCCESS); } } break; case CR_RESULT_INFO: g_pLog->DisplayMessage(_T("[%d]NetIOCP2P_Received CR_RESULT_INFO"), pPacket->GetModuleNo()); break; default: break; } return TRUE; } BOOL CResultServerControl::SendReviewResult(int nModuleIdx, int nResultIdx, const SReviewResult* pReviewResult) { if (m_pServerSocket==NULL || pReviewResult==NULL) return FALSE; CNetPacket *pSendPacket = m_pServerSocket->GetPacket(); if (pSendPacket) { // set result packet int nResultCode = 0; // result code int nModuleIndex = nModuleIdx; // module index int nTotalGlassResultCount = 0; // total glass result count int nCurGlassResultCount = 0; // current glass result count int nTotalModuleResultCount = 0; // total module result count int nCurModuleResultCount = nResultIdx; // current module result count CString strImagePath = _T(""); strImagePath.Format(_T("%s"), pReviewResult->strUploadImgFileName); pSendPacket->SetInt(nResultCode); pSendPacket->SetInt(nModuleIndex); pSendPacket->SetInt(nTotalGlassResultCount); pSendPacket->SetInt(nCurGlassResultCount); pSendPacket->SetInt(nTotalModuleResultCount); pSendPacket->SetInt(nCurModuleResultCount); pSendPacket->SetString(strImagePath); return m_pServerSocket->InvokeToClient(RC_RESULT_INFO, NET_RESULT_SUCCESS, pSendPacket); } return m_pServerSocket->InvokeToClient(RC_RESULT_INFO, NET_RESULT_FAIL); }