Files

106 lines
2.5 KiB
C
Raw Permalink Normal View History

#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>
#include "domain_pool.h"
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>.
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;
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);