📄 connectionhandler.h
字号:
/*
This file is part of SWAIN (http://sourceforge.net/projects/swain).
Copyright (C) 2006 Daniel Lindstr鰉 and Daniel Nilsson
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#pragma once
class ConnectionHandler;
#include "PacketFactory.h"
#include "PacketHandler.h"
#include "Packet.h"
#include "Select.h"
#include "Socket.h"
#include "Queue.h"
// FD_SETSIZE have to be changed as well in Select if MAX_SOCKETS > 64
#define MAX_SOCKETS 64
#define OBJECT_WAIT_TIME 2000
#define SERVER_PORT 5982
class ConnectionHandler
{
private:
Socket *sockets[MAX_SOCKETS];
CRITICAL_SECTION lock; // Synchronizes access to sockets
Socket *listen_socket;
Select *selector;
HANDLE listen_thread, send_thread;
bool run_t_listen, run_t_send;
PacketFactory *packetfactory;
PacketHandler *packethandler;
Queue *outgoing;
static DWORD WINAPI listen(LPVOID lpParameter);
static DWORD WINAPI send(LPVOID lpParameter);
int addSocket(Socket *s);
void removeSocket(Socket *s);
Socket *getSocket(int cid);
int getCid(Socket *s);
public:
ConnectionHandler(PacketFactory *pf);
~ConnectionHandler(void);
void setPacketHandler(PacketHandler *ph);
int connectTo(const char *addr, short port);
void sendPacket(Packet *p);
void startListen(int port);
void startSend(void);
void startReceive(void);
void stopListen(void);
void stopSend(void);
void stopReceive(void);
void startHandle(void);
void stopHandle(void);
void closeConnection(int cid);
int newConnection(char *host, int port);
int getAddresByCId(int cid);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -