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

143 lines
5.3 KiB
C++

#include "StdAfx.h"
#include "./SunNetworkApi.h"
#include "../FrostShieldLib/shieldSecurity.h"
//! ÇÁ·ÎÁ§Æ® ÀÇÁ¸¼º
//#ifdef _DEBUG
// #pragma comment(lib, "../lib/gameShieldLib_d.lib")
//#else
// #pragma comment(lib, "../lib/gameShieldLib.lib")
//#endif
namespace sun_network_api
{
NetworkSecurity network_security_ = kNetworkSecurity_none;
//------------------------------------------------------------------------------
NetworkSecurity get_network_security()
{
return network_security_;
}
//------------------------------------------------------------------------------
void set_network_security(NetworkSecurity network_security)
{
network_security_ = network_security;
}
//------------------------------------------------------------------------------
void sun_initialize()
{
if (get_network_security() == kNetworkSecurity_Frost)
{
frostInitialize("./Frost/gameShieldDll.dll");
}
}
//------------------------------------------------------------------------------
void sun_finalize()
{
if (get_network_security() == kNetworkSecurity_Frost)
{
frostFinalize();
}
}
//------------------------------------------------------------------------------
void sun_set_username(const char* user_name)
{
if (get_network_security() == kNetworkSecurity_Frost)
{
frostSetUserName(user_name);
}
}
//------------------------------------------------------------------------------
int sun_connect(SOCKET s, const struct sockaddr* name, int namelen)
{
if (get_network_security() == kNetworkSecurity_Frost)
{
return frostConnect(s, name, namelen);
}
return connect(s, name, namelen);
}
//------------------------------------------------------------------------------
int sun_send(SOCKET s, const char* buf, int len, int flags)
{
if (get_network_security() == kNetworkSecurity_Frost)
{
return frostSend(s, buf, len, flags);
}
return send(s, buf, len, flags);
}
//------------------------------------------------------------------------------
int sun_WSASend(SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesSent,
DWORD dwFlags, LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
if (get_network_security() == kNetworkSecurity_Frost)
{
return frostWSASend(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent,
dwFlags, lpOverlapped, lpCompletionRoutine);
}
return WSASend(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent,
dwFlags, lpOverlapped, lpCompletionRoutine);
}
//------------------------------------------------------------------------------
int sun_sendto(SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen)
{
if (get_network_security() == kNetworkSecurity_Frost)
{
return frostSendto(s, buf, len, flags, to, tolen);
}
return sendto(s, buf, len, flags, to, tolen);
}
//------------------------------------------------------------------------------
int sun_recv(SOCKET s, char* buf, int len, int flags)
{
if (get_network_security() == kNetworkSecurity_Frost)
{
return frostRecv(s, buf, len, flags);
}
return recv(s, buf, len, flags);
}
//------------------------------------------------------------------------------
int sun_WSARecv(SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd,
LPDWORD lpFlags, LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
if (get_network_security() == kNetworkSecurity_Frost)
{
return frostWSARecv(s, lpBuffers, dwBufferCount, lpNumberOfBytesRecvd,
lpFlags, lpOverlapped, lpCompletionRoutine);
}
return WSARecv(s, lpBuffers, dwBufferCount, lpNumberOfBytesRecvd,
lpFlags, lpOverlapped, lpCompletionRoutine);
}
//------------------------------------------------------------------------------
int sun_recvfrom(SOCKET s, char* buf, int len, int flags, struct sockaddr* from, int* fromlen)
{
if (get_network_security() == kNetworkSecurity_Frost)
{
return frostRecvfrom(s, buf, len, flags, from, fromlen);
}
return recvfrom(s, buf, len, flags, from, fromlen);
}
#ifdef _DEBUG
//------------------------------------------------------------------------------
NetworkDebugFile::NetworkDebugFile(const char* filename, DWORD packet_size)
{
strcpy(filename_, filename);
packet_size_ = packet_size;
start_time_ = GetTickCount();
}
//------------------------------------------------------------------------------
NetworkDebugFile::~NetworkDebugFile()
{
FILE* fp = fopen(filename_, "at");
if (fp)
{
fprintf(fp, "%d, %d\n", packet_size_, GetTickCount() - start_time_);
fclose(fp);
}
}
#endif
};