97 lines
1.6 KiB
C++
97 lines
1.6 KiB
C++
#include "common.h"
|
|
#include "PseuWoW.h"
|
|
#include "ByteBuffer.h"
|
|
#include "RealmSession.h"
|
|
#include "RealmSocket.h"
|
|
#include "Network/Utility.h"
|
|
|
|
|
|
|
|
|
|
RealmSocket::RealmSocket(SocketHandler& h) : TcpSocket(h)
|
|
{
|
|
_session = NULL;
|
|
_ok = false;
|
|
}
|
|
|
|
RealmSocket::~RealmSocket()
|
|
{
|
|
this->Close();
|
|
}
|
|
|
|
bool RealmSocket::IsOk(void)
|
|
{
|
|
return _ok;
|
|
}
|
|
|
|
void RealmSocket::SetSession(RealmSession *rs)
|
|
{
|
|
_session = rs;
|
|
}
|
|
|
|
int RealmSocket::Close(void)
|
|
{
|
|
_ok = false;
|
|
return TcpSocket::Close();
|
|
}
|
|
|
|
|
|
void RealmSocket::OnRead(void)
|
|
{
|
|
TcpSocket::OnRead();
|
|
uint32 len = ibuf.GetLength();
|
|
logdev("RealmSocket::OnRead() %u bytes",len);
|
|
if(!len)
|
|
return;
|
|
ByteBuffer *pkt = new ByteBuffer(len);
|
|
uint8* data = new uint8[len];
|
|
ibuf.Read((char*)data,len);
|
|
pkt->append(data,len);
|
|
delete [] data;
|
|
_session->AddToPktQueue(pkt);
|
|
}
|
|
|
|
|
|
RealmSession *RealmSocket::GetSession(void)
|
|
{
|
|
return _session;
|
|
}
|
|
|
|
void RealmSocket::OnAccept(void)
|
|
{
|
|
logdev("RealmSocket accepted.");
|
|
}
|
|
|
|
void RealmSocket::OnConnect(void)
|
|
{
|
|
logdetail("RealmSocket connected!");
|
|
_ok = true;
|
|
}
|
|
|
|
void RealmSocket::OnConnectFailed(void)
|
|
{
|
|
logerror("Connecting to Realm failed!");
|
|
_ok = false;
|
|
}
|
|
|
|
void RealmSocket::OnException(void)
|
|
{
|
|
if(_ok)
|
|
{
|
|
logerror("RealmSocket: Exception!");
|
|
_ok = false;
|
|
}
|
|
}
|
|
|
|
void RealmSocket::OnDelete(void)
|
|
{
|
|
_ok = false;
|
|
_session->SetMustDie();
|
|
}
|
|
|
|
uint32 RealmSocket::GetMyIP(void)
|
|
{
|
|
return GetRemoteIP4();
|
|
}
|
|
|