mxoemu/Reality/Source/MarginHandler.cpp
rajkosto 3de69bc911 Damn it TW you broke half of the multi-user stuff...had to fix it all back.
Also modified Sockets library not to deconstruct margin client objects on MXO's half-closed connection after session establishment.
2010-08-11 15:23:10 +02:00

81 lines
No EOL
2.3 KiB
C++

// ***************************************************************************
//
// Reality - The Matrix Online Server Emulator
// Copyright (C) 2006-2010 Rajko Stojadinovic
// http://mxoemu.info
//
// ---------------------------------------------------------------------------
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ---------------------------------------------------------------------------
//
// ***************************************************************************
#include "MarginHandler.h"
#include "Common.h"
#include "MarginSocket.h"
MarginHandler::MarginHandler()
:SocketHandler()
{
}
MarginHandler::~MarginHandler()
{
}
vector<MarginSocket*> MarginHandler::FindByCharacterUID( uint64 charUID )
{
vector<MarginSocket*> tempVect;
for (socket_m::iterator it = m_sockets.begin(); it != m_sockets.end(); it++)
{
Socket *p = it->second;
if (p == NULL)
continue;
TcpSocket *tcpSock = dynamic_cast<TcpSocket *>(p);
if (tcpSock == NULL)
continue;
MarginSocket *margSock = dynamic_cast<MarginSocket *>(tcpSock);
if (margSock == NULL)
continue;
if (margSock->GetCharUID() == charUID)
{
tempVect.push_back(margSock);
}
}
return tempVect;
}
class MarginSocket *MarginHandler::FindBySessionId( uint32 sessionId )
{
for (socket_m::iterator it = m_sockets.begin(); it != m_sockets.end(); it++)
{
Socket *p = it->second;
if (p == NULL)
continue;
TcpSocket *tcpSock = dynamic_cast<TcpSocket *>(p);
if (tcpSock == NULL)
continue;
MarginSocket *margSock = dynamic_cast<MarginSocket *>(tcpSock);
if (margSock == NULL)
continue;
if (margSock->GetSessionId() == sessionId)
return margSock;
}
return NULL;
}