📄 mainfrm.cpp
字号:
break;
case MSG_RM_REPLY_ALL_LISTENER_INFO:
{
int offset = 8;
BYTE bServerSet;
memcpy(&bServerSet, pMsg+1, sizeof(BYTE));
_ASSERTE( bServerSet > 0);
nServerSetArrayIndex = GetServerSetNumByServerSetIndex( bServerSet );
_ASSERTE( nServerSetArrayIndex >= 0);
if( nServerSetArrayIndex < 0 ) goto Error_ServerSetIndex;
//if(bServerSet == 100) //俺惯磊 抛胶飘 辑滚牢版快
// bServerSet = 2;
//else
// bServerSet -= 1;
DWORD dwFrameID; //皋技瘤 罐阑 FrameID
memcpy(&dwFrameID, pMsg+2, sizeof(DWORD));
WORD wServerNum; //罐篮 醚 Listener 肮荐
memcpy(&wServerNum, pMsg+6, sizeof(WORD));
m_pApp->m_ServerSetInfo[ nServerSetArrayIndex ].nListenerNum = wServerNum;
for(int k=0; k<wServerNum ; k++)
{
m_pApp->m_ListenerInfo[ nServerSetArrayIndex ][ k ].bStatus = pMsg[ offset ];
offset += 1;
unsigned long uIp;
in_addr addr;
memset(m_pApp->m_ListenerInfo[ nServerSetArrayIndex ][ k ].Ip,0,16);
memcpy(&uIp, pMsg + offset, 4);
addr.S_un.S_addr = uIp;
memcpy(m_pApp->m_ListenerInfo[ nServerSetArrayIndex ][ k ].Ip, inet_ntoa(addr), strlen(inet_ntoa(addr)));
offset += 4;
for(int i=0; i<m_pApp->m_ServerSetInfo[ nServerSetArrayIndex ].nServerNum ; i++)
{
if(!strcmp(m_pApp->m_ServerInfo[ nServerSetArrayIndex ][ i ].Ip, m_pApp->m_ListenerInfo[ nServerSetArrayIndex ][ k ].Ip) )
{
memset(m_pApp->m_ListenerInfo[ nServerSetArrayIndex ][ k ].MachineName, 0, sizeof(m_pApp->m_ListenerInfo[ nServerSetArrayIndex ][ k ].MachineName));
strcpy(m_pApp->m_ListenerInfo[ nServerSetArrayIndex ][ k ].MachineName, m_pApp->m_ServerInfo[ nServerSetArrayIndex ][ i ].MachineName);
break;
}
}
}
if(dwFrameID == 0) //肺弊牢饶 霉 夸没...
{
CServerView* pView = GetFirstServerView();
pView->m_ServerStatusDlg.RefreshListenerStatus();
}
else
{
CChildFrame *pFrame = (CChildFrame*)FindFrameAndActivate(dwFrameID);
if(pFrame)
{
CServerView* pView = (CServerView*)pFrame->GetActiveView();
if(pView)
{
pView->m_ServerStatusDlg.RefreshListenerStatus();
}
}
}
}
break;
//Server Down!!!
case MSG_RM_DOWN_SERVER:
{
return; // 021112 agent啊 捞蜡绝捞 磊备 捞 菩哦阑 焊郴扁 锭巩俊 官肺 府畔栏肺 官层蝶.
//AfxMessageBox( "Don't Run This Function~~!!" );
//return; //kyo 20826
PACKET_DOWN_SERVER *packet = (PACKET_DOWN_SERVER*)pMsg;
m_TrayIcon.SetIcon(IDI_SERVERDOWN);
SetTimer(1,500,NULL);
m_nEmergency = 1; //1锅捞 IDI_SERVERDOWN栏肺 窍磊
AlarmStop();
AlarmStart();
ShowWindow(SW_RESTORE); //Hide惑怕搁 Show肺 父甸绊
//int nServerSet;
_ASSERTE( packet->bServerSetNum > 0);
nServerSetArrayIndex = GetServerSetNumByServerSetIndex( packet->bServerSetNum );
_ASSERTE( nServerSetArrayIndex >= 0);
if( nServerSetArrayIndex < 0 ) goto Error_ServerSetIndex;
//if(packet->bServerSetNum == 100)
//nServerSet = 2;
//else
// nServerSet = packet->bServerSetNum - 1;
for(int i=0; i<m_pApp->m_ServerSetInfo[ nServerSetArrayIndex ].nServerNum ; i++)
{
if(m_pApp->m_ServerInfo[ nServerSetArrayIndex ][ i ].Port == packet->wPort )
{
//App努贰胶狼 Server沥焊甸俊 惑怕客, 立加荐 罐篮巴阑 眠啊茄促.
m_pApp->m_ServerInfo[ nServerSetArrayIndex ][ i ].dwStatus = 0;
m_pApp->m_ServerInfo[ nServerSetArrayIndex ][ i ].dwNumOfUser = 0;
break;
}
}
CServerView *pView = FindCurrentActivateServerViewBySpecifiedServerSet(nServerSetArrayIndex);
if(pView)
{
CChildFrame *pChild = (CChildFrame*)pView->GetParent();
if(pChild) pChild->ShowWindow(SW_RESTORE);
//盎脚
pView->m_ServerStatusDlg.RefreshSomeItem(packet->wPort, FALSE);
pView->m_ServerControlDlg.RefreshSomeItem(packet->wPort, FALSE);
pView->m_ServerPatchDlg.RefreshSomeItem(packet->wPort, FALSE);
}
CString str;
str.Format("ServerDown In %s' ServerSet!!(Port: %d)",m_pApp->m_ServerSetInfo[ nServerSetArrayIndex ].szSetName
, packet->wPort );
MessageBox(str);
}
break;
case MSG_RM_LISTENER_CONNECT_COMPLETE:
{
PACKET_LISTENER_CONNECT_COMPLETE *packet = (PACKET_LISTENER_CONNECT_COMPLETE*)pMsg;
Sleep(1000); //泪瘪 Wait....
CChildFrame *pFrame = (CChildFrame*)FindFrameAndActivate(packet->dwFrameID);
if(pFrame)
{
CServerView* pView = (CServerView*)pFrame->GetActiveView();
if(pView)
{
pView->m_ServerStatusDlg.c_ListenerStatusList.DeleteAllItems();
}
}
PACKET_REQUEST_ALL_LISTENER_INFO packet3(packet->dwFrameID);
g_pNet->Send(dwConnectionIndex, (char*)&packet3, packet3.GetPacketSize());
}
break;
case MSG_RM_CHECK_LISTENER_CONNECTION_RESULT:
{
PACKET_CHECK_LISTENER_CONNECTION_RESULT *packet = (PACKET_CHECK_LISTENER_CONNECTION_RESULT*)pMsg;
if(!packet->dwCount)
MessageBox("Check Success! No Problem!");
else
{
char str[ 0xff ];
sprintf(str,"Invalid Index occured! count: %d",packet->dwCount);
MessageBox(str);
}
}
break;
case MSG_RM_SERVER_DISCONNECTED:
{
if( 10 == ::GetPrivateProfileInt("Nation","yk",0,"./setup.ini") ) return; //款康评狼 何殴栏肺 促款矫 扑诀救登霸.
PACKET_RM_SERVER_DISCONNECT *packet = (PACKET_RM_SERVER_DISCONNECT*)pMsg;
_ASSERTE( packet->bServerSetNum > 0);
nServerSetArrayIndex = GetServerSetNumByServerSetIndex( packet->bServerSetNum );
_ASSERTE( nServerSetArrayIndex >= 0);
if( nServerSetArrayIndex < 0 ) goto Error_ServerSetIndex;
//if(packet->bServerSetNum == 100)
// nServerSetArrayIndex = 2; //海鸥辑滚(抛胶飘 辑滚)
//else
// nServerSetArrayIndex = packet->bServerSetNum - 1;
int index = m_pApp->FindIndexByPort(nServerSetArrayIndex, packet->wPort);
m_pApp->m_ServerInfo[ nServerSetArrayIndex ][ index ].dwStatus = 0; //立加 谗绢柳 惑怕肺 盎脚
CServerView* pView = FindCurrentActivateServerViewBySpecifiedServerSet( nServerSetArrayIndex, FALSE );
//泅犁 立加捞 谗绢柳 秦寸 辑滚悸栏肺 嘎苗柳 View啊 乐促搁
if(pView)
{
// pView->ChangeView(0); //ServerStatus Tab栏肺 嘎眠绊
// pView->m_ServerStatusDlg.RefreshServerStatus();
if(pView->m_nCurView == 1)
pView->m_ServerControlDlg.RefreshSomeItem(packet->wPort, FALSE);
else if(pView->m_nCurView == 0)
pView->m_ServerStatusDlg.RefreshSomeItem(packet->wPort, FALSE);
else if(pView->m_nCurView == 2)
pView->m_ServerPatchDlg.RefreshSomeItem(packet->wPort, FALSE);
}
else
{
MakeNewServerTemplate(nServerSetArrayIndex + 1);
}
}
break;
//货肺款 辑滚啊 立加沁阑锭
case MSG_RM_SERVER_UP:
{
PACKET_RM_SERVER_UP *packet = (PACKET_RM_SERVER_UP*)pMsg;
_ASSERTE( packet->bServerSetNum > 0);
nServerSetArrayIndex = GetServerSetNumByServerSetIndex( packet->bServerSetNum );
_ASSERTE( nServerSetArrayIndex >= 0);
if( nServerSetArrayIndex < 0 ) goto Error_ServerSetIndex;
//if(packet->bServerSetNum == 100)
// nServerSetArrayIndex = 2; //海鸥辑滚(抛胶飘 辑滚)
//else
// nServerSetArrayIndex = packet->bServerSetNum - 1;
int index = m_pApp->FindIndexByPort(nServerSetArrayIndex, packet->wPort);
m_pApp->m_ServerInfo[ nServerSetArrayIndex ][ index ].dwStatus = 10; //立加 谗绢柳 惑怕肺 盎脚
CServerView* pView = FindCurrentActivateServerViewBySpecifiedServerSet( nServerSetArrayIndex, FALSE );
//泅犁 立加捞 谗绢柳 秦寸 辑滚悸栏肺 嘎苗柳 View啊 乐促搁
if(pView)
{
if(pView->m_nCurView == 1)
pView->m_ServerControlDlg.RefreshSomeItem(packet->wPort, TRUE);
else if(pView->m_nCurView == 0)
pView->m_ServerStatusDlg.RefreshSomeItem(packet->wPort, TRUE);
else if(pView->m_nCurView == 2)
pView->m_ServerPatchDlg.RefreshSomeItem(packet->wPort, TRUE);
}
}
break;
}
return;
Error_ServerSetIndex:
MessageBox("Invalid ServerSetArrayIndex..","Error");
return;
}
void CMainFrame::OnAccept(WPARAM wParam, LPARAM lParam)
{
wParam;lParam;
int k; k=0;
}
void CMainFrame::OnDisconnect(WPARAM wParam, LPARAM lParam)
{
lParam;
for(int i=0; i<MAX_SERVERSET_NUM ; i++)
{
if(m_pApp->m_nCI[ i ] == wParam)
{
char str[0xff];
sprintf(str,"Connection lost for proxyserver(index:%d)",i); //0捞搁 惑侩, 1捞搁 2焙,..
m_pApp->m_nCI[ i ] = 0;
MessageBox(str,"Connection Lost");
CServerView *pView = FindServerView(i);
if( pView == NULL )
{
SetDlgItemText( IDC_CONNECT_INFO, "Disconnected" );
return;
}
pView->m_szConnectInfo = "Disconnected";
//pView NULL
pView->UpdateData(FALSE);
pView->c_ProxyConnect.EnableWindow(TRUE);
if( i == 0) //惑侩阑 0捞扼绊 敌促.
{//惑侩老锭父 皋瘤矫甫 焊辰促.
if( pView->m_bIsUMS == true) // 030604 kyo
{
pView->SendUMS_ProxyServerDown();
}
}
break;
}
}
}
void CMainFrame::OnSocketEvent(WPARAM wParam, LPARAM lParam)
{
wParam;lParam;
g_pNet->SocketEventProc();
}
//kyo
LONG CMainFrame::OnReceiveSyncPacket(WPARAM wParam, LPARAM lParam)
{
_ASSERTE( FALSE == IsBadReadPtr(&wParam, (UINT)lParam) && "CMainFrame : OnReceiveSyncPacket" );
char* pMsg = (char*)wParam;
DWORD dwLen; dwLen = (DWORD)lParam;
//Get Header and pt
BYTE header, set_num;
memcpy( (void*)&set_num, pMsg, 1 );
memcpy( (void*)&header, (pMsg+1), 1 );
int setnum; setnum = (int)set_num;
ASSERT( header != NULL );
switch( header )
{
case MSG_RM_REQUEST_RMINFO:
{
/*kyo 020703----------------------------------------------------
啊沥 : 甸绢坷绰 ServerInfo蔼篮 鉴辑措肺 甸绢柯促. ( TCP捞聪瘪 )
弊矾聪瘪 set_num篮 硅凯鉴辑肺 0牢巴捞 根顶 促 甸绢柯第 1,2.. 鉴栏肺 刘啊等促.
裙牢 : set_num篮 5俺甫 逞阑荐 绝促. (0 ~ 4)
-------------------------------------------------------------*/
PACKET_RMSERVER_INFO *packet = (PACKET_RMSERVER_INFO*)pMsg;
//罐篮 蔼阑 秦寸 CRMToolApp->m_serverinfo俊 历厘茄促.
SetRMServerInfo( &packet->pServerInfo , (int)set_num );
//茄锅 府敲饭浆 茄促.
//CServerView *pView = GetServerView();
//pView->m_ServerStatusDlg.RefreshServerStatus();
}break;
case MSG_CLOSE_CONNECTION:
{
//PACKET_CLOSE_RMSERVER *packet = (PACKET_CLOSE_RMSERVER*)pMsg;
//if( !g_pFt->CloseClientSocket() )
g_pFt->CloseClientSocket(); //ADD err
}break;
default:
break;
}
return TRUE;
}
CMDIChildWnd* CMainFrame::FindFrameAndActivate(int nFrameID)
{
CMultiDocTemplate *pTemplate;
CDocument *pDoc;
CView *pView;
CMDIChildWnd *pFrame;
POSITION p,vp;
CString title,id,view;
POSITION pos = m_pApp->GetFirstDocTemplatePosition();
while(TRUE)
{
pTemplate = (CMultiDocTemplate*)m_pApp->GetNextDocTemplate(pos);
if(!pos) return NULL;
p = pTemplate->GetFirstDocPosition();
if(p == 0)
{
return NULL;
}
while(TRUE)
{
pDoc = pTemplate->GetNextDoc(p);
vp = pDoc->GetFirstViewPosition();
pView = pDoc->GetNextView(vp);
pFrame = (CMDIChildWnd*)pView->GetParentFrame();
pFrame->GetWindowText(title);
view = title.Mid(1,1);
if(!view.Compare("S")) //ServerView捞搁
{
id = title.Mid(2,2);
if( nFrameID == atoi( id.GetBuffer( id.GetLength() ) ) )
{
pFrame->ActivateFrame();
return pFrame;
}
}
if(p == 0) break; //捞霸 付瘤阜 档钮刚飘烙..
}
}
return NULL;
}
//泅犁 瘤沥等 辑滚悸栋乐绰 Server Frame捞 栋乐绰瘤 八荤秦辑 栋乐栏搁 Frame 器牢磐 府畔 .. 窃荐疙 例扼 辨寸..ぱ_-;;
CServerView* CMainFrame::FindCurrentActivateServerViewBySpecifiedServerSet(int nServerSetIndex, BOOL bActivate)
{
CMultiDocTemplate *pTemplate;
CDocument *pDoc;
CView *pView;
CMDIChildWnd *pFrame;
POSITION p,vp;
CString title,id,view;
POSITION pos = m_pApp->GetFirstDocTemplatePosition();
while(TRUE)
{
pTemplate = (CMultiDocTemplate*)m_pApp->GetNextDocTemplate(pos);
if(!pos) return NULL;
p = pTemplate->GetFirstDocPosition();
if(p == 0)
{
return NULL;
}
while(TRUE)
{
pDoc = pTemplate->GetNextDoc(p);
vp = pDoc->GetFirstViewPosition();
pView = pDoc->GetNextView(vp);
pFrame = (CMDIChildWnd*)pView->GetParentFrame();
pFrame->GetWindowText(title);
view = title.Mid(1,1);
if(!view.Compare("S")) //ServerView捞搁
{
id = title.Mid(2,2);
//泅犁 概俺函荐肺 林绢柳 ServerSet肺 嘎眠绢廉 乐绰 View啊 乐促搁 蔼阑 府畔
if(((CServerView*)pView)->m_nCurServerSet == nServerSetIndex)
{
if(bActivate)
pFrame->ActivateFrame(); //秦寸 View肺 劝己拳 矫虐绊..
return (CServerView*)pView;
}
}
if(p == 0) break; //捞霸 付瘤阜 档钮刚飘烙..
}
}
return NULL;
}
CServerView* CMainFrame::GetFirstServerView()
{
CMultiDocTemplate *pTemplate;
CDocument *pDoc;
CView *pView;
CMDIChildWnd *pFrame;
POSITION vp;
CString title,view;
POSITION pos = m_pApp->GetFirstDocTemplatePosition();
while(TRUE)
{
pTemplate = (CMultiDocTemplate*)m_pApp->GetNextDocTemplate(pos);
if(!pos) return NULL;
POSITION p = pTemplate->GetFirstDocPosition();
if(p == 0)
{
return NULL;
}
while(TRUE)
{
pDoc = pTemplate->GetNextDoc(p);
vp = pDoc->GetFirstViewPosition();
pView = pDoc->GetNextView(vp);
pFrame = (CMDIChildWnd*)pView->GetParentFrame();
pFrame->GetWindowText(title);
view = title.Mid(1,1);
if(!view.Compare("S")) //ServerView捞搁
{
pFrame->ActivateFrame(); //秦寸 View肺 劝己拳 矫虐绊..
return (CServerView*)pView;
}
if(p == 0) break; //捞霸 付瘤阜 档钮刚飘烙..
}
}
return NULL;
}
void CMainFrame::MakeNewServerTemplate(int nServerSetIndex)
{
LeaveLogInFile( "CMainFrame::MakeNewSer~ 's nServerSetIndex = %d" , nServerSetIndex );
m_pApp->OpenServerTemplate();
if(m_pApp->m_nCI[ nServerSetIndex - 1 ])
{
//秦寸 辑滚悸俊 辑滚 沥焊 夸没
PACKET_REQUEST_ALL_SUBSERVER_INFO packet(TRUE, m_pApp->m_ServerDocCount); //牢磊蔼捞 TRUE捞搁 货肺款 Frame Open沁阑锭狼 Ruest捞促..
g_pNet->Send(m_pApp->m_nCI[ nServerSetIndex - 1 ], (char*)&packet, packet.GetPacketSize());
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -