Files
ls-2019-source/extra/LS_Service/LS_controller/cSession.cpp
T
2026-11-07 13:30:45 +07:00

81 lines
1.5 KiB
C++

#include "stdafx.h"
#include "cSession.h"
#include "../include/IIocpContext.h"
void tinet_ntoa(uint32 IP, TCHAR* buffer)
{
SOCKADDR_IN sockAddr;
sockAddr.sin_addr.s_addr = IP;
#ifdef UNICODE
char szIP[16];
strcpy_s(szIP, sizeof(szIP), inet_ntoa(sockAddr.sin_addr));
uint32 length = MultiByteToWideChar(CP_ACP, 0, szIP, sizeof(szIP)-1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, szIP, sizeof(szIP)-1, buffer, length);
buffer[length] = NULL;
#else
strcpy_s(buffer, sizeof(buffer), inet_ntoa(sockAddr.sin_addr));
#endif
}
void cSession::OnConnect()
{
TCHAR szIP[64];
tinet_ntoa(GetContext()->GetIP(), szIP);
TransferEnd();
Debug(_T("@¼ÒÄÏ Á¢¼Ó(%s)\n"), szIP);
}
void cSession::OnDisconnect()
{
TransferEnd();
Debug(_T("@¼ÒÄÏ Á¢¼ÓÇØÁ¦\n"));
}
BOOL cSession::TransferBegin(const TCHAR* file, const uint32 length)
{
if(!m_transfer)
{
m_transfer = TRUE;
if(length > G_MAXFILESIZE)
m_buffer.Resize(G_MAXFILESIZE*2);
else
m_buffer.Resize(length);
m_transferLength = 0;
ZeroMemory(m_file, sizeof(m_file));
CopyMemory(m_file, file, sizeof(m_file));
return TRUE;
}
return FALSE;
}
BOOL cSession::TransferDo(const uint8* buffer, const uint32 length)
{
if(m_transfer)
{
m_transferLength += length;
return m_buffer.Append(buffer, length);
}
return FALSE;
}
void cSession::TransferWrite()
{
if(m_transfer)
{
m_buffer.Erase();
}
}
void cSession::TransferEnd()
{
m_transfer = FALSE;
m_buffer.Erase();
ZeroMemory(m_file, sizeof(m_file));
}