Files
libremetaverse/applications/snowcrash/snowflake/ServerList.cpp
John Hurliman a22cc1de4c * Updated all the keywords/protocol files for 1.11.3.1
* 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
2006-08-09 19:06:41 +00:00

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;
}