You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
/************************************************************************************************
|
|
|
|
Copyright (c) 2001 Microsoft Corporation
|
|
|
|
File Name: SockPool.hxx
|
|
Abstract: Defines the SocketPool Class
|
|
Notes:
|
|
History: 08/01/2001 Created by Hao Yu (haoyu)
|
|
|
|
************************************************************************************************/
|
|
|
|
|
|
#ifndef __POP3_SOCKET_POOL__
|
|
#define __POP3_SOCKET_POOL__
|
|
|
|
|
|
#include <IOContext.h>
|
|
#include <Ws2tcpip.h>
|
|
|
|
class CSocketPool
|
|
{
|
|
public:
|
|
CSocketPool();
|
|
~CSocketPool();
|
|
BOOL Initialize(DWORD dwMax, DWORD dwMin, DWORD dwThreshold, u_short usPort, int iBackLog);
|
|
BOOL Uninitialize();
|
|
BOOL IsMoreSocketsNeeded();
|
|
BOOL MaintainSocketCount();
|
|
BOOL AddSockets();
|
|
void DecrementFreeSocketCount();
|
|
void DecrementTotalSocketCount();
|
|
BOOL ReuseIOContext(PIO_CONTEXT pIoContext);
|
|
BOOL IsMaxSocketUsed();
|
|
|
|
private:
|
|
//Data Members
|
|
SOCKET m_sMainSocket;
|
|
IO_CONTEXT m_stMainIOContext;
|
|
LONG m_lMaxSocketCount;
|
|
LONG m_lMinSocketCount;
|
|
LONG m_lThreshold;
|
|
LONG m_lTotalSocketCount;
|
|
LONG m_lFreeSocketCount;
|
|
CRITICAL_SECTION m_csInitGuard;
|
|
BOOL m_bInit;
|
|
int m_iBackLog;
|
|
LONG m_lAddThreadToken;
|
|
int m_iSocketFamily; //For supporting IPv4 & IPv6
|
|
int m_iSocketType;
|
|
int m_iSocketProtocol;
|
|
//Functions
|
|
BOOL CreateMainSocket(u_short usPort);
|
|
BOOL AddSocketsP(DWORD dwNumOfSocket);
|
|
BOOL CreateAcceptSocket(PIO_CONTEXT pIoContext);
|
|
};
|
|
|
|
typedef CSocketPool *PCSocketPool;
|
|
|
|
|
|
#endif //__POP3_SOCKET_POOL__
|