Files
2022-10-26 12:25:11 +08:00

44 lines
1.3 KiB
C++

#pragma once
#ifndef NETWORK_MODULE_SESSIONPOOL_H
#define NETWORK_MODULE_SESSIONPOOL_H
//==================================================================================================
class Session;
class Session;
class SessionList;
//==================================================================================================
/// 세션들을 최대 개수만큼 미리 할당해서 관리하는 세션 풀 클래스
// 세션풀이 가지고 있던 메모리의 소멸은 세션풀에서 담당한다.
//==================================================================================================
class SessionPool
{
public:
SessionPool(DWORD max_size,
DWORD send_buffer_size, DWORD recv_buffer_size, DWORD max_packet_size,
DWORD timeout_tick, DWORD index_start, BOOL is_accept_socket);
~SessionPool();
Session* Alloc();
void Free(Session* session);
int GetLength();
DWORD GetNumberOfNodes() const;
private:
void Create(DWORD max_size,
DWORD send_buffer_size, DWORD recv_buffer_size, DWORD max_packet_size,
DWORD timeout_tick, DWORD index_start, BOOL is_accept_socket);
DWORD max_size_;
SessionList* session_list_;
};
inline DWORD SessionPool::GetNumberOfNodes() const {
return max_size_;
};
#endif //NETWORK_MODULE_SESSIONPOOL_H