mirror of
https://github.com/yuanyuanxiang/SimpleRemoter.git
synced 2026-01-30 03:03:12 +08:00
style: Format source code and support grouping client
This commit is contained in:
@@ -5,68 +5,76 @@
|
||||
#include "Server.h"
|
||||
|
||||
|
||||
class IOCPUDPServer : public Server {
|
||||
struct IO_CONTEXT {
|
||||
OVERLAPPED ol = {};
|
||||
CONTEXT_UDP* pContext = nullptr;
|
||||
IO_CONTEXT() : ol({}), pContext(new CONTEXT_UDP) {
|
||||
}
|
||||
~IO_CONTEXT() {
|
||||
SAFE_DELETE(pContext);
|
||||
}
|
||||
};
|
||||
class IOCPUDPServer : public Server
|
||||
{
|
||||
struct IO_CONTEXT {
|
||||
OVERLAPPED ol = {};
|
||||
CONTEXT_UDP* pContext = nullptr;
|
||||
IO_CONTEXT() : ol({}), pContext(new CONTEXT_UDP)
|
||||
{
|
||||
}
|
||||
~IO_CONTEXT()
|
||||
{
|
||||
SAFE_DELETE(pContext);
|
||||
}
|
||||
};
|
||||
public:
|
||||
IOCPUDPServer();
|
||||
~IOCPUDPServer();
|
||||
IOCPUDPServer();
|
||||
~IOCPUDPServer();
|
||||
|
||||
int GetPort() const override {
|
||||
return m_port;
|
||||
}
|
||||
UINT StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort) override;
|
||||
VOID Send2Client(CONTEXT_OBJECT* ContextObject, PBYTE szBuffer, ULONG ulOriginalLength) override;
|
||||
VOID Destroy() override;
|
||||
virtual void UpdateMaxConnection(int maxConn) override {
|
||||
m_locker.lock();
|
||||
m_maxConn = maxConn;
|
||||
m_locker.unlock();
|
||||
}
|
||||
int GetPort() const override
|
||||
{
|
||||
return m_port;
|
||||
}
|
||||
UINT StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort) override;
|
||||
VOID Send2Client(CONTEXT_OBJECT* ContextObject, PBYTE szBuffer, ULONG ulOriginalLength) override;
|
||||
VOID Destroy() override;
|
||||
virtual void UpdateMaxConnection(int maxConn) override
|
||||
{
|
||||
m_locker.lock();
|
||||
m_maxConn = maxConn;
|
||||
m_locker.unlock();
|
||||
}
|
||||
|
||||
private:
|
||||
void WorkerThread();
|
||||
void PostRecv();
|
||||
IO_CONTEXT* AddCount(){
|
||||
m_locker.lock();
|
||||
if (m_count > m_maxConn) {
|
||||
m_locker.unlock();
|
||||
return nullptr;
|
||||
}
|
||||
IO_CONTEXT* ioCtx = new IO_CONTEXT();
|
||||
ioCtx->pContext->InitMember(m_socket, this);
|
||||
m_count++;
|
||||
m_locker.unlock();
|
||||
return ioCtx;
|
||||
}
|
||||
void DelCount() {
|
||||
m_locker.lock();
|
||||
m_count--;
|
||||
m_locker.unlock();
|
||||
}
|
||||
int GetCount() {
|
||||
m_locker.lock();
|
||||
int n = m_count;
|
||||
m_locker.unlock();
|
||||
return n;
|
||||
}
|
||||
void WorkerThread();
|
||||
void PostRecv();
|
||||
IO_CONTEXT* AddCount()
|
||||
{
|
||||
m_locker.lock();
|
||||
if (m_count > m_maxConn) {
|
||||
m_locker.unlock();
|
||||
return nullptr;
|
||||
}
|
||||
IO_CONTEXT* ioCtx = new IO_CONTEXT();
|
||||
ioCtx->pContext->InitMember(m_socket, this);
|
||||
m_count++;
|
||||
m_locker.unlock();
|
||||
return ioCtx;
|
||||
}
|
||||
void DelCount()
|
||||
{
|
||||
m_locker.lock();
|
||||
m_count--;
|
||||
m_locker.unlock();
|
||||
}
|
||||
int GetCount()
|
||||
{
|
||||
m_locker.lock();
|
||||
int n = m_count;
|
||||
m_locker.unlock();
|
||||
return n;
|
||||
}
|
||||
private:
|
||||
int m_maxConn = 10000;
|
||||
int m_port = 6543;
|
||||
int m_count = 0;
|
||||
CLocker m_locker;
|
||||
SOCKET m_socket = INVALID_SOCKET;
|
||||
HANDLE m_hIOCP = NULL;
|
||||
HANDLE m_hThread = NULL;
|
||||
bool m_running = false;
|
||||
int m_maxConn = 10000;
|
||||
int m_port = 6543;
|
||||
int m_count = 0;
|
||||
CLocker m_locker;
|
||||
SOCKET m_socket = INVALID_SOCKET;
|
||||
HANDLE m_hIOCP = NULL;
|
||||
HANDLE m_hThread = NULL;
|
||||
bool m_running = false;
|
||||
|
||||
pfnNotifyProc m_notify = nullptr;
|
||||
pfnOfflineProc m_offline = nullptr;
|
||||
pfnNotifyProc m_notify = nullptr;
|
||||
pfnOfflineProc m_offline = nullptr;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user