📄 serverpatch.cpp
字号:
// ServerPatch.cpp : implementation file
//
#include "stdafx.h"
#include "MainFrm.h"
#include "rmtool.h"
#include "ServerPatch.h"
#include "ServerView.h"
#include "Packet.h"
#include "RMToolDoc.h"
#include "SetDownloadPathDlg.h"
#include "ServerFilePathDlg.h"
#include "KickOffDlg.h" // BBD 040107
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//extern int DRAGON_DB;
/////////////////////////////////////////////////////////////////////////////
// CServerPatch dialog
CServerPatch::CServerPatch(CWnd* pParent /*=NULL*/)
: CDialog(CServerPatch::IDD, pParent)
{
//{{AFX_DATA_INIT(CServerPatch)
m_nRadioExecute = -1;
m_nRadioShutDown = -1;
m_CheckMap = FALSE;
m_CheckAgent = FALSE;
m_CheckDBDemon = FALSE;
m_szExeName = _T("");
m_nRadioIni = -1;
m_CheckExecute = FALSE;
//}}AFX_DATA_INIT
m_nSelectedCount = 0;
ResetSelectedBuffer();
m_pKickDlg = 0L; // BBD 040107
m_pView = 0L; // BBD 040107
}
CServerPatch::~CServerPatch()
{
//<! BBD 040107
if(m_pKickDlg)
{
delete m_pKickDlg;
m_pKickDlg = 0L;
}
m_pView = 0L;
//> BBD 040107
}
void CServerPatch::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CServerPatch)
DDX_Control(pDX, IDC_CHECK_EXECUTE, c_CheckExecute);
DDX_Control(pDX, IDC_SELECT_SERVER_LIST, c_SelectList);
DDX_Control(pDX, IDC_ALL_SERVER_LIST, c_AllList);
DDX_Radio(pDX, IDC_RADIO_EXECUTE, m_nRadioExecute);
DDX_Radio(pDX, IDC_RADIO_SHUTDOWN, m_nRadioShutDown);
DDX_Check(pDX, IDC_CHECK_MAP, m_CheckMap);
DDX_Check(pDX, IDC_CHECK_AGENT, m_CheckAgent);
DDX_Check(pDX, IDC_CHECK_DBDEMON, m_CheckDBDemon);
DDX_Text(pDX, IDC_EXENAME, m_szExeName);
DDV_MaxChars(pDX, m_szExeName, 256);
DDX_Radio(pDX, IDC_RADIO_INI, m_nRadioIni);
DDX_Check(pDX, IDC_CHECK_EXECUTE, m_CheckExecute);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CServerPatch, CDialog)
//{{AFX_MSG_MAP(CServerPatch)
ON_WM_SHOWWINDOW()
ON_BN_CLICKED(IDC_RIGHT_ALL, OnRightAll)
ON_BN_CLICKED(IDC_RIGHT, OnRight)
ON_BN_CLICKED(IDC_LEFT, OnLeft)
ON_BN_CLICKED(IDC_LEFT_ALL, OnLeftAll)
ON_BN_CLICKED(IDC_SHUT_DOWN, OnShutDown)
ON_BN_CLICKED(IDC_SERVER_EXECUTE, OnServerExecute)
ON_BN_CLICKED(IDC_MAKE_INI, OnMakeIni)
ON_BN_CLICKED(IDC_DOWNLOAD_PATH, OnDownloadPath)
ON_BN_CLICKED(IDC_CHECK_AGENT, OnCheckAgent)
ON_BN_CLICKED(IDC_CHECK_DBDEMON, OnCheckDbdemon)
ON_BN_CLICKED(IDC_CHECK_MAP, OnCheckMap)
ON_BN_CLICKED(IDC_RADIO_SHUTDOWN, OnRadioShutdown)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
ON_BN_CLICKED(IDC_RADIO5, OnRadio5)
ON_BN_CLICKED(IDC_RADIO_EXECUTE, OnRadioExecute)
ON_BN_CLICKED(IDC_RADIO7, OnRadio7)
ON_BN_CLICKED(IDC_RADIO8, OnRadio8)
ON_BN_CLICKED(IDC_RADIO9, OnRadio9)
ON_BN_CLICKED(IDC_RADIO10, OnRadio10)
ON_BN_CLICKED(IDC_REBOOT, OnReboot)
ON_NOTIFY(LVN_COLUMNCLICK, IDC_ALL_SERVER_LIST, OnColumnclickAllServerList)
ON_NOTIFY(LVN_COLUMNCLICK, IDC_SELECT_SERVER_LIST, OnColumnclickSelectServerList)
ON_BN_CLICKED(IDC_SET_SERVERFILE, OnSetServerfile)
ON_BN_CLICKED(IDC_LISTENER_PATCH, OnListenerPatch)
ON_BN_CLICKED(IDC_RADIO_INI, OnRadioIni)
ON_BN_CLICKED(IDC_RADIO_NORMAL, OnRadioNormal)
ON_WM_SIZE()
ON_BN_CLICKED(IDC_KICKDLG_BTN, OnKickdlgBtn)
//}}AFX_MSG_MAP
ON_NOTIFY(NM_CUSTOMDRAW, IDC_ALL_SERVER_LIST, OnCustomDrawAll)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SELECT_SERVER_LIST, OnCustomDrawSelect)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CServerPatch message handlers
BOOL CServerPatch::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_pApp = (CRMToolApp*)AfxGetApp();
//<! BBD 040107
//CServerView *pView; pView = (CServerView*)GetParent();
m_pView = (CServerView*)GetParent();
//> BBD 040107
char path[ MAX_PATH ];
__PATH
// sprintf(path,"%s\\Setup.ini",m_pApp->GetInstalledPath());
//弥辟 荤侩茄 辑滚 颇老 疙窜阑 ini 颇老俊辑 佬绢靛覆
char str[ MAX_PATH ];
char key[ 0xff ]; memset(key,0,0xff);
char app[ 0xff ]; memset(app,0,0xff);
for(int j=0; j< 3 ;j++) //RECENTFILE_NUM肮荐
{
//sprintf(app,"RecentFile%d",pView->m_nCurServerSet + 1);
sprintf(app,"RecentFile%d", j + 1);
for(int i=0; i<4 ; i++)
{
sprintf(key,"File%d", i+1);
GetPrivateProfileString(app,key,"",str,MAX_PATH,path);
m_pApp->m_szServerFile[j][i] = str;
}
}
// m_pApp->m_szServerFile[0] = "D:\\SourceFile\\ProxyServer_b011213.exe";
// m_pApp->m_szServerFile[1] = "D:\\SourceFile\\AgentServer_b011213.exe";
// m_pApp->m_szServerFile[2] = "D:\\SourceFile\\DBDemon_b011215.exe";
// m_pApp->m_szServerFile[3] = "D:\\SourceFile\\MapServer_b011216.exe";
//府胶飘 冠胶俊 傈眉 急琶苞, CheckBox 笼绢持绰 Option, 吝埃俊 捞固瘤 火涝 Option 悸泼
c_AllList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES);
c_SelectList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES);
char *Column[6] = {"Server Name", "Port" , "States", "Type", "System", "IP"}; /*漠烦*/
int ColumnSize[6] = {100, 50, 40, 80, 70, 100};
LV_COLUMN col;
for(int i=0 ; i<6 ; i++)
{
//ListView 牧飘费 檬扁拳.. 漠烦汲沥
col.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM | LVCF_FMT;
col.fmt = LVCFMT_LEFT;
col.cx = ColumnSize[i];
col.pszText = Column[i];
col.cchTextMax = 100;
col.iSubItem = i;
c_AllList.InsertColumn(i, &col);
c_SelectList.InsertColumn(i, &col);
}
RefreshServerList();
//Check Box 檬扁拳
m_CheckAgent = 0;
m_CheckDBDemon = 0;
m_CheckMap = 0;
m_CheckExecute = 1;
//扼叼坷 滚瓢 檬扁拳
m_nRadioIni = 1; //扁夯 角青颇老肺
m_nRadioShutDown = 4; //Map
m_nRadioExecute = 4; //Proxy
UpdateData(FALSE);
//<! BBD 040107 KickOff Dialog
m_pKickDlg = new CKickOffDlg;
m_pKickDlg->Create(IDD_KICKOFF_USER_DLG, this);
m_pKickDlg->SetView(m_pView);
//> BBD 040107 KickOff Dialog
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CServerPatch::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
if(bShow)
{
m_CheckAgent = 0;
m_CheckDBDemon = 0;
m_CheckMap = 0;
UpdateData(FALSE);
RefreshServerList();
SetForegroundWindow();
Invalidate();
}
else
{
//List俊 眉农 等芭 扁撅矫虐磊 ...
CServerView *pView = (CServerView*)GetParent();
pView->m_TempSelected.RemoveAll();
char str[ 10 ]; DWORD dwPort;
int count = c_SelectList.GetItemCount();
for(int i=0; i<count; i++)
{
c_SelectList.GetItemText(i,1,str,10);
dwPort = atoi(str);
pView->m_TempSelected.Add(dwPort);
}
}
}
void CServerPatch::RefreshServerList()
{
CServerView* pView = (CServerView*)GetParent();
LVITEM item;
char temp[ 0xff ];
int si = pView->m_nCurServerSet; //ServerIndex(si)
if(si < 0)
return;
c_AllList.DeleteAllItems();
c_SelectList.DeleteAllItems();
ServerInfo *pInfo = NULL;
CString str;
BOOL bSelected; bSelected = FALSE;
int i=0,j=0;
for(int k=0; k< m_pApp->m_ServerSetInfo[ si ].nServerNum ; k++)
{
pInfo = &m_pApp->m_ServerInfo[si][k];
if(CheckSameServer(pInfo->Port)) //急琶等 辑滚啊 乐栏搁 AllServerList俊辑 猾促.
{
InsertSelectedServer(pInfo, j);
j++; continue;
}
i = k - j;
//辑滚疙
item.mask = LVIF_TEXT | LVIF_PARAM;
item.pszText = pInfo->MapName;
item.iItem = i; //青锅龋
item.iSubItem = 0; //凯锅龋
item.lParam = pInfo->Port;
c_AllList.InsertItem(&item);
//Port 锅龋
item.mask = LVIF_TEXT;
item.iSubItem = 1;
item.pszText = _itoa(pInfo->Port, temp, 10);
c_AllList.SetItem(&item);
//泅犁 惑怕
sprintf(temp,"%c",m_pApp->m_StatusSymbol[ pInfo->dwStatus ]);
item.mask = LVIF_TEXT;
item.iSubItem = 2;
item.pszText = temp;
c_AllList.SetItem(&item);
//辑滚鸥涝
item.mask = LVIF_TEXT;
item.iSubItem = 3;
switch(pInfo->ServerType)
{
case SERVER_TYPE_PROXY: item.pszText = "PROXY"; break;
case SERVER_TYPE_AGENT: item.pszText = "AGENT"; break;
case SERVER_TYPE_DBDEMON: item.pszText = "DBDEMON"; break;
case SERVER_TYPE_MAP: item.pszText = "MAP"; break;
}
c_AllList.SetItem(&item);
//System
item.mask = LVIF_TEXT;
item.iSubItem = 4;
item.pszText = pInfo->MachineName;
c_AllList.SetItem(&item);
//Ip
item.mask = LVIF_TEXT;
item.iSubItem = 5;
item.pszText = pInfo->Ip;
c_AllList.SetItem(&item);
}
CountConnectServer();
}
void CServerPatch::CountConnectServer()
{
CServerView* pView = (CServerView*)GetParent();
int si = pView->m_nCurServerSet; //ServerIndex(si)
int TotalAgent=0, ConAgent=0;
int TotalDemon=0, ConDemon=0;
int TotalMap=0, ConMap=0;
ServerInfo *pInfo = NULL;
for(int k=0; k< m_pApp->m_ServerSetInfo[ si ].nServerNum ; k++)
{
pInfo = &m_pApp->m_ServerInfo[si][k];
switch(pInfo->ServerType)
{
case SERVER_TYPE_AGENT:
TotalAgent++;
if(pInfo->dwStatus == 10) ConAgent++; //立加等 惑怕
break;
case SERVER_TYPE_DBDEMON:
TotalDemon++;
if(pInfo->dwStatus == 10) ConDemon++; //立加等 惑怕
break;
case SERVER_TYPE_MAP:
TotalMap++;
if(pInfo->dwStatus == 10) ConMap++; //立加等 惑怕
break;
}
}
char str[ 0xff ];
sprintf(str,"[Total] Agent : %d/%d , DBDemon %d/%d , Map %d/%d",ConAgent,TotalAgent,ConDemon,TotalDemon,ConMap,TotalMap);
SetDlgItemText(IDC_STATIC_SUM, str);
//傈眉 府胶飘 拌魂...
TotalAgent=0; ConAgent=0;
TotalDemon=0; ConDemon=0;
TotalMap=0; ConMap=0;
int count = c_AllList.GetItemCount();
for(int i=0 ; i<count ; i++)
{
c_AllList.GetItemText(i, 3, str, 0xff);
if(!strcmp(str,"AGENT"))
{
TotalAgent++;
c_AllList.GetItemText(i, 2, str, 0xff);
if(!strcmp(str,"O")) ConAgent++;
}
else if(!strcmp(str,"DBDEMON"))
{
TotalDemon++;
c_AllList.GetItemText(i, 2, str, 0xff);
if(!strcmp(str,"O")) ConDemon++;
}
else if(!strcmp(str,"MAP"))
{
TotalMap++;
c_AllList.GetItemText(i, 2, str, 0xff);
if(!strcmp(str,"O")) ConMap++;
}
}
sprintf(str,"Agent : %d/%d , DBDemon %d/%d , Map %d/%d",ConAgent,TotalAgent,ConDemon,TotalDemon,ConMap,TotalMap);
SetDlgItemText(IDC_STATIC_TOTAL, str);
//急琶等 府胶飘 拌魂...
TotalAgent=0; ConAgent=0;
TotalDemon=0; ConDemon=0;
TotalMap=0; ConMap=0;
count = c_SelectList.GetItemCount();
for(i=0 ; i<count ; i++)
{
c_SelectList.GetItemText(i, 3, str, 0xff);
if(!strcmp(str,"AGENT"))
{
TotalAgent++;
c_SelectList.GetItemText(i, 2, str, 0xff);
if(!strcmp(str,"O")) ConAgent++;
}
else if(!strcmp(str,"DBDEMON"))
{
TotalDemon++;
c_SelectList.GetItemText(i, 2, str, 0xff);
if(!strcmp(str,"O")) ConDemon++;
}
else if(!strcmp(str,"MAP"))
{
TotalMap++;
c_SelectList.GetItemText(i, 2, str, 0xff);
if(!strcmp(str,"O")) ConMap++;
}
}
sprintf(str,"Agent : %d/%d , DBDemon %d/%d , Map %d/%d",ConAgent,TotalAgent,ConDemon,TotalDemon,ConMap,TotalMap);
SetDlgItemText(IDC_STATIC_SELECT, str);
}
BOOL CServerPatch::CheckSameServer(DWORD dwPort)
{
CServerView* pView = (CServerView*)GetParent();
for(int i=0 ; i <= pView->m_TempSelected.GetUpperBound() ; i++)
{
DWORD value = pView->m_TempSelected.GetAt(i);
if(value == dwPort)
{
return TRUE;
}
}
return FALSE;
}
void CServerPatch::InsertSelectedServer(ServerInfo *pInfo, int i)
{
LVITEM item;
char temp[ 0xff ];
//辑滚疙
item.mask = LVIF_TEXT | LVIF_PARAM;
item.pszText = pInfo->MapName;
item.iItem = i; //青锅龋
item.iSubItem = 0; //凯锅龋
item.lParam = pInfo->Port;
c_SelectList.InsertItem(&item);
//Port 锅龋
item.mask = LVIF_TEXT;
item.iSubItem = 1;
item.pszText = _itoa(pInfo->Port, temp, 10);
c_SelectList.SetItem(&item);
//泅犁 惑怕
sprintf(temp,"%c",m_pApp->m_StatusSymbol[ pInfo->dwStatus ]);
item.mask = LVIF_TEXT;
item.iSubItem = 2;
item.pszText = temp;
c_SelectList.SetItem(&item);
//辑滚鸥涝
item.mask = LVIF_TEXT;
item.iSubItem = 3;
switch(pInfo->ServerType)
{
case SERVER_TYPE_PROXY: item.pszText = "PROXY"; break;
case SERVER_TYPE_AGENT: item.pszText = "AGENT"; break;
case SERVER_TYPE_DBDEMON: item.pszText = "DBDEMON"; break;
case SERVER_TYPE_MAP: item.pszText = "MAP"; break;
}
c_SelectList.SetItem(&item);
//System
item.mask = LVIF_TEXT;
item.iSubItem = 4;
item.pszText = pInfo->MachineName;
c_SelectList.SetItem(&item);
//Machine
item.mask = LVIF_TEXT;
item.iSubItem = 5;
item.pszText = pInfo->Ip;
c_SelectList.SetItem(&item);
}
void CServerPatch::OnRightAll()
{
// TODO: Add your control notification handler code here
c_AllList.DeleteAllItems();
c_SelectList.DeleteAllItems();
//m_pApp = (CRMToolApp*)AfxGetApp(); //App努贰胶 器牢磐 悸泼
CServerView* pView = (CServerView*)GetParent();
LVITEM item;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -