* Moved snowcrash to the applications directory * Removed the Release folder from SLIRC git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@133 52acb1d6-8a22-11de-b505-999d5b087335
111 lines
1.8 KiB
C++
111 lines
1.8 KiB
C++
#include "StdAfx.h"
|
|
#include ".\ServerList.h"
|
|
|
|
CServerList::CServerList(void)
|
|
{
|
|
m_lpServers = NULL;
|
|
m_bAddedUserServer = false;
|
|
}
|
|
|
|
CServerList::~CServerList(void)
|
|
{
|
|
FreeServers();
|
|
}
|
|
|
|
void CServerList::FreeServers(void)
|
|
{
|
|
CServer *server = m_lpServers;
|
|
|
|
while (server)
|
|
{
|
|
if (server->m_lpNext)
|
|
{
|
|
server = server->m_lpNext;
|
|
|
|
if (server->m_lpPrev)
|
|
SAFE_DELETE(server->m_lpPrev);
|
|
}
|
|
else
|
|
SAFE_DELETE(server);
|
|
}
|
|
|
|
m_lpServers = NULL;
|
|
}
|
|
|
|
bool CServerList::AddServer(CServer *lpServer)
|
|
{
|
|
CServer *server = NULL;
|
|
|
|
if (m_lpServers)
|
|
{
|
|
server = m_lpServers;
|
|
|
|
while (server->m_lpNext)
|
|
server = server->m_lpNext;
|
|
|
|
server->m_lpNext = lpServer;
|
|
|
|
if (!server->m_lpNext) return false;
|
|
|
|
server->m_lpNext->m_lpNext = NULL;
|
|
server->m_lpNext->m_lpPrev = server;
|
|
|
|
if (!m_bAddedUserServer)
|
|
{
|
|
m_bAddedUserServer = true;
|
|
lpServer->m_nType = SERVER_TYPE_USER;
|
|
lpServer->SetSimName("User Server");
|
|
}
|
|
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
server = lpServer;
|
|
|
|
if (!server) return false;
|
|
|
|
m_lpServers = server;
|
|
m_lpServers->m_lpNext = NULL;
|
|
m_lpServers->m_lpPrev = NULL;
|
|
|
|
if (!m_bAddedUserServer)
|
|
{
|
|
m_bAddedUserServer = true;
|
|
lpServer->m_nType = SERVER_TYPE_USER;
|
|
lpServer->SetSimName("User Server");
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
CServer *CServerList::FindServer(struct sockaddr_in *address)
|
|
{
|
|
CServer *server = m_lpServers;
|
|
|
|
while (server)
|
|
{
|
|
if (!memcmp(&server->m_address, address, sizeof(server->m_address)))
|
|
return server;
|
|
server = server->m_lpNext;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
CServer *CServerList::FindServer(int nType)
|
|
{
|
|
CServer *server = m_lpServers;
|
|
|
|
while (server)
|
|
{
|
|
if (server->m_nType == nType)
|
|
return server;
|
|
server = server->m_lpNext;
|
|
}
|
|
|
|
return NULL;
|
|
} |