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

67 lines
1.5 KiB
C++

#include "StdAfx.h"
#include "ShopSession.h"
#include "SessionList.h"
CShopSession::CShopSession(void): WBANetwork::ServerSession(262144, 262144)
{
_instance(CSessionList);
}
CShopSession::~CShopSession(void)
{
_releaseinstance(CSessionList);
}
void CShopSession::OnAccept()
{
BILLING_LOG(WZPUBLIC::LEVEL_INFO, "接收客户端 (%d) (%s)", (int)this, GetIPAddress());
SetKeepAlive(1, 3 * 60 * 1000, 10 * 1000);
_instance(CSessionList)->Add((DWORD_PTR)this);
BILLING_LOG(WZPUBLIC::LEVEL_INFO, "当前会话 (%d)", _instance(CSessionList)->GetSize());
}
void CShopSession::OnClose(DWORD error)
{
BILLING_LOG(WZPUBLIC::LEVEL_INFO, "客户端连接关闭 (%d) (%s)", (int)this, GetIPAddress());
_instance(CSessionList)->Remove((DWORD_PTR)this);
BILLING_LOG(WZPUBLIC::LEVEL_INFO, "当前会话 (%d)", _instance(CSessionList)->GetSize());
}
void CShopSession::OnSend( int size )
{
BILLING_LOG(WZPUBLIC::LEVEL_INFO, "数据已发送 (%d)", size);
}
bool CShopSession::SendData(void* buffer, DWORD size)
{
WBANetwork::SEND_RET ret;
for(int i = 0 ; i < 100 ; i++)
{
SendPacket(buffer, size, ret);
if(WBANetwork::SUCESS == ret) return true;
else if(WBANetwork::FAILD_NULL == ret || WBANetwork::FAILD_CLOSED == ret)
{
BILLING_LOG(WZPUBLIC::LEVEL_ERROR, "发送失败 [连接关闭或未创建]");
return false;
}
else
{
Sleep(10);
Flush();
}
}
BILLING_LOG(WZPUBLIC::LEVEL_ERROR, "发送失败 [缓冲区溢出]");
return false;
}
void CShopSession::OnReceive( PBYTE buffer, int size )
{
_instance(CProtocolInvoker)->ProcessCommand((DWORD_PTR)this, buffer);
}