2025-04-15 21:37:01 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "Common.h"
|
|
|
|
|
|
#include "IOCPClient.h"
|
|
|
|
|
|
#include <IOSTREAM>
|
|
|
|
|
|
#include "LoginServer.h"
|
|
|
|
|
|
#include "KernelManager.h"
|
|
|
|
|
|
#include <iosfwd>
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include <iostream>
|
|
|
|
|
|
#include <fstream>
|
|
|
|
|
|
#include <sstream>
|
|
|
|
|
|
#include <shellapi.h>
|
|
|
|
|
|
#include <corecrt_io.h>
|
2025-06-15 04:55:14 +08:00
|
|
|
|
#include "domain_pool.h"
|
2025-04-15 21:37:01 +08:00
|
|
|
|
|
|
|
|
|
|
BOOL IsProcessExit();
|
|
|
|
|
|
|
|
|
|
|
|
typedef BOOL(*IsRunning)(void* thisApp);
|
|
|
|
|
|
|
|
|
|
|
|
BOOL IsSharedRunning(void* thisApp);
|
|
|
|
|
|
|
|
|
|
|
|
BOOL IsClientAppRunning(void* thisApp);
|
|
|
|
|
|
|
|
|
|
|
|
// <20>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>ࣺ<EFBFBD><E0A3BA>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>.
|
2025-10-15 04:32:59 +08:00
|
|
|
|
typedef struct ClientApp {
|
|
|
|
|
|
State g_bExit; // Ӧ<>ó<EFBFBD><C3B3><EFBFBD>״̬<D7B4><CCAC>1-<2D><><EFBFBD>ض<EFBFBD><D8B6>˳<EFBFBD> 2-<2D><><EFBFBD>ض<EFBFBD><D8B6>˳<EFBFBD> 3-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
BOOL g_bThreadExit; // <20><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>״̬
|
|
|
|
|
|
HINSTANCE g_hInstance; // <20><><EFBFBD>̾<EFBFBD><CCBE><EFBFBD>
|
|
|
|
|
|
CONNECT_ADDRESS* g_Connection; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
HANDLE g_hEvent; // ȫ<><C8AB><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
BOOL m_bShared; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
IsRunning m_bIsRunning; // <20><><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
unsigned m_ID; // Ψһ<CEA8><D2BB>ʶ
|
|
|
|
|
|
static int m_nCount; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static CLock m_Locker;
|
|
|
|
|
|
ClientApp(CONNECT_ADDRESS*conn, IsRunning run, BOOL shared=FALSE)
|
|
|
|
|
|
{
|
|
|
|
|
|
memset(this, 0, sizeof(ClientApp));
|
|
|
|
|
|
g_Connection = new CONNECT_ADDRESS(*conn);
|
|
|
|
|
|
m_bIsRunning = run;
|
|
|
|
|
|
m_bShared = shared;
|
|
|
|
|
|
g_bThreadExit = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
std::vector<std::string> GetSharedMasterList()
|
|
|
|
|
|
{
|
|
|
|
|
|
DomainPool pool = g_Connection->ServerIP();
|
|
|
|
|
|
auto list = pool.GetIPList();
|
|
|
|
|
|
return list;
|
|
|
|
|
|
}
|
|
|
|
|
|
~ClientApp()
|
|
|
|
|
|
{
|
|
|
|
|
|
SAFE_DELETE(g_Connection);
|
|
|
|
|
|
}
|
|
|
|
|
|
ClientApp* SetID(unsigned id)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_ID = id;
|
|
|
|
|
|
return this;
|
|
|
|
|
|
}
|
|
|
|
|
|
static void AddCount(int n=1)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_Locker.Lock();
|
|
|
|
|
|
m_nCount+=n;
|
|
|
|
|
|
m_Locker.Unlock();
|
|
|
|
|
|
}
|
|
|
|
|
|
static int GetCount()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_Locker.Lock();
|
|
|
|
|
|
int n = m_nCount;
|
|
|
|
|
|
m_Locker.Unlock();
|
|
|
|
|
|
return n;
|
|
|
|
|
|
}
|
|
|
|
|
|
static void Wait()
|
|
|
|
|
|
{
|
|
|
|
|
|
while (GetCount())
|
|
|
|
|
|
Sleep(50);
|
|
|
|
|
|
}
|
|
|
|
|
|
bool IsThreadRun()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_Locker.Lock();
|
|
|
|
|
|
BOOL n = g_bThreadExit;
|
|
|
|
|
|
m_Locker.Unlock();
|
|
|
|
|
|
return FALSE == n;
|
|
|
|
|
|
}
|
|
|
|
|
|
void SetThreadRun(BOOL run = TRUE)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_Locker.Lock();
|
|
|
|
|
|
g_bThreadExit = !run;
|
|
|
|
|
|
m_Locker.Unlock();
|
|
|
|
|
|
}
|
|
|
|
|
|
void SetProcessState(State state = S_CLIENT_NORMAL)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_Locker.Lock();
|
|
|
|
|
|
g_bExit = state;
|
|
|
|
|
|
m_Locker.Unlock();
|
|
|
|
|
|
}
|
|
|
|
|
|
} ClientApp;
|
2025-04-15 21:37:01 +08:00
|
|
|
|
|
|
|
|
|
|
ClientApp* NewClientStartArg(const char* remoteAddr, IsRunning run = IsClientAppRunning, BOOL shared=FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ClientApp
|
|
|
|
|
|
DWORD WINAPI StartClient(LPVOID lParam);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ClientApp
|
|
|
|
|
|
DWORD WINAPI StartClientApp(LPVOID param);
|