代码拉取完成,页面将自动刷新
同步操作将从 gavingqf/kcp 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#pragma once
/*
* connection manager.
*/
#include "type.h"
#include <functional>
#include "connection_map.h"
#include "asio/asio.hpp"
namespace KCP {
class CConnectionMgr : asio::noncopyable {
public:
// server connection mgr
CConnectionMgr(asio::io_service& ioService, const std::string& ip, uint16 port);
CConnectionMgr(asio::io_service& ioService);
virtual ~CConnectionMgr();
typedef std::function<event_callback_t> callback_func;
enum eMode {
// server mode.
mode_server = 0,
// client mode
mode_client,
};
public:
void update();
void set_callback(const std::function<event_callback_t>& func);
int event_callback_func(CConnection* conn, eEventType eventType, const char* msg, int len);
void stop();
void disconnect(CConnection* conn, const std::string& msg);
// async send udp data.
void send_udp(const char* msg, int len, const udp::endpoint& endpoint);
// find connection.
CConnection* find(uint32 conv);
// server or client mode
void setMode(eMode mode) { m_mode = mode; }
eMode getMode() { return m_mode; }
// send establish pack
void sendEstablishPack(uint32 convId, const udp::endpoint& endPoint);
size_t allConnectionSize() const { return this->m_connections.AllCount(); }
public:
// kcp disconnection
void handleKCPDisconnect(CConnection* conn, const std::string& msg);
// kcp recv data
int handleKCPData(CConnection* conn, const char* msg, int len);
// kcp connection
void handleKCPConnect(CConnection* conn, const char* msg, int len);
private:
// async recv request.
void startAsyncRecv();
// handle udp connection.
void handleConnectPack(const std::string& data, const udp::endpoint& endPoint);
// handle udp data packet.
bool handleDataPack(const std::string& data, const udp::endpoint& endPoint);
// check connection packet.
bool checkConnectPack(const std::string& data);
private:
// server or client mode
eMode m_mode;
callback_func m_eventCallback;
// udp socket
udp::socket m_udpSocket;
// !!remote address
udp::endpoint m_endPoint;
// connect list.
CConnectionMap m_connections;
// udp recv buff
char m_recvBuff[KCP_PACKET_MAX_SIZE];
};
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。