wsproxy/server/wsproxy/kcpsession.h
aozhiwei 892af52a25 1
2023-04-23 15:45:47 +08:00

38 lines
1009 B
C++

#pragma once
#include <a8/udpsession.h>
#include <a8/udplistener.h>
#include "ikcp.h"
class KcpSession
{
public:
void Init(a8::UdpListener* udp_listener, int socket_handle, a8::UdpPacket* pkt);
void UnInit();
void Update();
void SendClientMsg(char* buf, int buf_len);
void OnRecvPacket(a8::UdpPacket* pkt);
const sockaddr_in& GetAddr() const { return remote_addr_; }
a8::UdpListener* GetUdpListener() { return udp_listener_; }
void UpdateInput();
int GetSocketHandle() { return socket_handle_; }
long long GetSecretKey() { return secret_key_; }
private:
void DecodePacket(char* buf, int& offset, unsigned int buflen);
private:
long long init_tick_ = 0;
long long secret_key_ = 0;
a8::UdpListener* udp_listener_ = nullptr;
ikcpcb* kcp_ = nullptr;
int socket_handle_ = 0;
long long remote_key_ = 0;
sockaddr_in remote_addr_ = {};
char* recv_buff_ = nullptr;
int recv_bufflen_ = 0;
int max_packet_len_ = 1024 * 64 *2;
};