sltcpsessionevent.h
来自「Socketlib: 一个轻量级的C++ 封装Socket C API 网络编程」· C头文件 代码 · 共 75 行
H
75 行
//**********************************************************************
//
// Copyright (C) 2005-2007 Zhang bao yuan(bolidezhang@gmail.com).
// All rights reserved.
//
// This copy of Socketlib is licensed to you under the terms described
// in the LICENSE.txt file included in this distribution.
//
//**********************************************************************
#pragma once
#include "socketevent.h"
#include "sync/threadmutex.h"
#include "slext/smallobjectpool.h"
namespace SL
{
template <class TSession>
class CSLTcpSessionEvent : public CSocketEvent
{
public:
CSLTcpSessionEvent(void)
{
m_sessionPool.init(1024,4,1);
};
virtual ~CSLTcpSessionEvent(void)
{
m_sessionPool.clear();
};
virtual bool OnAccept(CSocketSource *pSource, SOCKET hClientSocket)
{
return true;
};
virtual bool OnInitSocket(PPER_HANDLE_DATA pSocketData)
{
TSession *p = m_sessionPool.pop();
if (p == NULL)
return false;
p->Init(pSocketData->pSocketSource,pSocketData->hSocket, 1024, 4);
pSocketData->pAttachInfo = p;
return true;
};
virtual bool OnDisconnect(CSocketSource *pSource, SOCKET hClientSocket, void *pAttachInfo)
{
if (pAttachInfo == NULL)
return false;
TSession *p = (TSession*)pAttachInfo;
p->Uninit(); //清理
m_sessionPool.push(p);
return true;
};
virtual int OnRecv(CSocketSource *pSource, SOCKET hClientSocket, void *pAttachInfo, const char *szData, int nLen)
{
if (pAttachInfo == NULL)
return 0;
TSession *p = (TSession*)pAttachInfo;
return p->OnRecv(szData, nLen);
};
protected:
SLEXT::CSmallObjectPool<TSession,SYNC::CThreadMutex> m_sessionPool;
};
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?