JNetLibray
|
클라이언트 기능이 구체화된 'JNetCore' 하위 클래스, 동일 LAN 구간 서버로의 연결 요청과 패킷 송수신(ConnectToServer, OnRecv, SendPacket) 추상화 더 자세히 ...
#include <JNetCore.h>
Public 멤버 함수 | |
JNetClient (const char *serverIP, uint16 serverPort, PACKET_CODE packetCode_LAN, uint32 numOfIocpConcurrentThrd, uint16 numOfIocpWorkerThrd, size_t tlsMemPoolUnitCnt, size_t tlsMemPoolUnitCapacity, uint32 memPoolBuffAllocSize, uint32 sessionRecvBuffSize, bool calcTpsThread) | |
bool | Start (bool connectToServer=true) |
void | Stop () |
![]() | |
JNetCore (uint16 maximumOfSessions, uint32 numOfIocpConcurrentThrd, uint16 numOfIocpWorkerThrd, size_t tlsMemPoolUnitCnt, size_t tlsMemPoolUnitCapacity, uint32 memPoolBuffAllocSize, uint32 sessionRecvBuffSize, bool calcTpsThread) | |
~JNetCore () | |
bool | Start () |
void | Stop () |
uint16 | GetCurrentSessions () |
int64 | GetCurrentAllocatedMemUnitCnt () |
int | GetSessionCount () |
UINT | GetAcceptTPS () |
UINT | GetRecvTPS () |
UINT | GetSendTPS () |
UINT64 | GetTotalAcceptTransaction () |
UINT64 | GetTotalRecvTransaction () |
UINT64 | GetTotalSendTransaction () |
void | IncrementRecvTransactions (bool threadSafe, UINT incre) |
void | IncrementSendTransactions (bool threadSafe, UINT incre) |
void | IncrementAcceptTransactions (bool threadSafe=false, UINT incre=1) |
Protected 멤버 함수 | |
bool | ConnectToServer () |
JBuffer * | AllocSerialSendBuff (PACKET_LEN len) |
bool | SendPacket (JBuffer *sendPktPtr, bool postToWorker=false) |
bool | SendPacketBlocking (JBuffer *sendPktPtr) |
bool | BufferSendPacket (JBuffer *sendPktPtr) |
virtual void | OnConnectionToServer ()=0 |
virtual void | OnDisconnectionFromServer ()=0 |
virtual void | OnRecv (JBuffer &recvBuff)=0 |
![]() | |
void | PrintLibraryInfoOnConsole () |
JNetSession * | CreateNewSession (SOCKET sock) |
하위 클래스에서 세션 객체 생성 요청을 위해 호출하는 함수 | |
bool | RegistSessionToIOCP (JNetSession *session) |
하위 클래스에서 세션 객체를 IOCP 등록을 위해 호출하는 함수 | |
bool | DeleteSession (SessionID64 sessionID) |
세션 제거 요청 함수 | |
void | Disconnect (SessionID64 sessionID) |
bool | SendPacket (SessionID64 sessionID, JBuffer *sendPktPtr, bool postToWorker=false) |
패킷 송신 요청 함수 | |
bool | SendPacketBlocking (SessionID64 sessionID, JBuffer *sendPktPtr) |
동기식 송신 요청 함수 | |
bool | BufferSendPacket (SessionID64 sessionID, JBuffer *sendPktPtr) |
세션 송신 버퍼 큐에 버퍼링(삽입만 진행) | |
bool | SendBufferedPacket (SessionID64 sessionID, bool postToWorker=false) |
세션 송신 버퍼 큐 내 송신 패킷 직렬화 버퍼에 대한 일괄 송신 작업 수행 | |
DWORD | AllocTlsMemPool () |
직렬화 패킷 버퍼 Tls 풀 할당 함수 | |
JBuffer * | AllocSerialBuff () |
직렬화 패킷 버퍼 할당 요청 wrapper | |
void | FreeSerialBuff (JBuffer *buff) |
직렬화 패킷 버퍼 반환 wrapper | |
void | AddRefSerialBuff (JBuffer *buff) |
직렬화 패킷 버퍼 참조 카운트 증가 wrapper | |
virtual bool | OnWorkerThreadCreate (HANDLE thHnd) |
Start() 함수 내 IOCP 작업자 스레드 생성(CREATE_SUSPENDED) 후 호출되는 이벤트 함수 | |
virtual void | OnAllWorkerThreadCreate () |
Start() 함수 내 요청된 수 만큼 IOCP 작업자 스레드를 생성한 후 함수를 빠져나오기 전 호출되는 이벤트 함수 | |
virtual void | OnWorkerThreadStart () |
개별 IOCP 작업자 스레드의 수행 흐름 초입부(WorkerThreadFunc 함수 초입부)에 호출되는 이벤트 함수, 개별 작업자 스레드의 초기화를 독립적으로 수행하도록 재정의 가능 | |
virtual void | OnWorkerThreadEnd () |
개별 IOCP 작업자 스레드가 종료(작업자 함수 return) 전 호출되는 이벤트 함수 | |
virtual void | OnError () |
Private 멤버 함수 | |
virtual void | OnRecvCompletion (SessionID64 sessionID, JBuffer &recvRingBuffer) override |
IOCP 작업자 스레드의 수신 완료 시 대상 세션의 수신 버퍼의 enqueue 오프셋 제어 후 호출되는 이벤트 함수 | |
virtual void | OnSessionLeave (SessionID64 sessionID) override |
JNetCore 단 세션이 제거된 후 호출되는 이벤트 함수 | |
Private 속성 | |
SOCKET | m_ConnectSock |
클라이언트 연결 소켓 | |
SessionID64 | m_ServerSessionID64 |
연결 서버 세션 ID | |
const char * | m_ServerIP |
서버 IP | |
uint16 | m_ServerPort |
서버 Port | |
PACKET_CODE | m_PacketCode_LAN |
LAN 구간 패킷 코드 | |
추가로 상속된 멤버들 | |
![]() | |
bool | m_CalcTpsFlag |
클라이언트 기능이 구체화된 'JNetCore' 하위 클래스, 동일 LAN 구간 서버로의 연결 요청과 패킷 송수신(ConnectToServer, OnRecv, SendPacket) 추상화
|
inline |
bool JNetClient::Start | ( | bool | connectToServer = true | ) |
void JNetClient::Stop | ( | ) |
|
protected |
|
inlineprotected |
|
protected |
|
protected |
|
protected |
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
overrideprivatevirtual |
IOCP 작업자 스레드의 수신 완료 시 대상 세션의 수신 버퍼의 enqueue 오프셋 제어 후 호출되는 이벤트 함수
IOCP 작업자 스레드의 수신 완료 시 대상 세션의 수신 버퍼의 enqueue 오프셋 제어 후 호출되는 함수이다. JNetCore는 순전히 IOCP 작업자 스레드와 세션 관리 및 송수신의 책임만을 제공하기에 수신 이후의 작업을 하위 클래스에서 정의하도록 순수 가상 함수로써 강제하였다. OnRecvCompletion 함수의 반환 이후 해당 세션의 수신 버퍼가 수신 요청되기에 OnRecvCompletion 함수에서는 수신 버퍼에 대한 작업자 스레드 간의 경쟁은 없다. 따라서 단지 수신 버퍼의 참조만을 전달하여 복사 비용 발생을 방지하였다.
sessionID | 세션 아이디(uint64) |
recvRingBuffer | 세션의 수신 버퍼 참조 |
jnet::JNetCore를 구현.
|
inlineoverrideprivatevirtual |
JNetCore 단 세션이 제거된 후 호출되는 이벤트 함수
sessionID | 세션 아이디(uint64) |
관리되는 세션이 제거된 후 호출되는 함수이다. 호출 시점에서 sessionID는 이미 제거된 세션 ID이며, 유효하지 않다. 콘텐츠 서버와 같은 하위 클래스에서 sessionID를 기반으로 한 데이터를 해당 함수 재정의에서 제거하는 등 정리 작업을 수행할 수 있다.
jnet::JNetCore(으)로부터 재구현되었습니다.
|
private |
클라이언트 연결 소켓
|
private |
연결 서버 세션 ID
|
private |
서버 IP
|
private |
서버 Port
|
private |
LAN 구간 패킷 코드