mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-04 01:34:07 +00:00
Public release of the DLU server code!
Have fun!
This commit is contained in:
192
thirdparty/raknet/Source/NetworkIDManager.cpp
vendored
Normal file
192
thirdparty/raknet/Source/NetworkIDManager.cpp
vendored
Normal file
@@ -0,0 +1,192 @@
|
||||
/// \file
|
||||
///
|
||||
/// This file is part of RakNet Copyright 2003 Kevin Jenkins.
|
||||
///
|
||||
/// Usage of RakNet is subject to the appropriate license agreement.
|
||||
/// Creative Commons Licensees are subject to the
|
||||
/// license found at
|
||||
/// http://creativecommons.org/licenses/by-nc/2.5/
|
||||
/// Single application licensees are subject to the license found at
|
||||
/// http://www.jenkinssoftware.com/SingleApplicationLicense.html
|
||||
/// Custom license users are subject to the terms therein.
|
||||
/// GPL license users are subject to the GNU General Public
|
||||
/// License as published by the Free
|
||||
/// Software Foundation; either version 2 of the License, or (at your
|
||||
/// option) any later version.
|
||||
|
||||
#include "NetworkIDManager.h"
|
||||
#include "NetworkIDObject.h"
|
||||
#include "RakAssert.h"
|
||||
#include <string.h> // For memset
|
||||
|
||||
bool NetworkIDNode::operator==( const NetworkIDNode& right ) const
|
||||
{
|
||||
if ( networkID == right.networkID )
|
||||
return !0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool NetworkIDNode::operator > ( const NetworkIDNode& right ) const
|
||||
{
|
||||
if ( networkID > right.networkID )
|
||||
return !0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool NetworkIDNode::operator < ( const NetworkIDNode& right ) const
|
||||
{
|
||||
if ( networkID < right.networkID )
|
||||
return !0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
NetworkIDNode::NetworkIDNode()
|
||||
{
|
||||
object = 0;
|
||||
}
|
||||
|
||||
NetworkIDNode::NetworkIDNode( NetworkID _networkID, NetworkIDObject *_object )
|
||||
{
|
||||
networkID = _networkID;
|
||||
object = _object;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
NetworkIDObject* NetworkIDManager::GET_BASE_OBJECT_FROM_ID( NetworkID x )
|
||||
{
|
||||
if ( x == UNASSIGNED_NETWORK_ID )
|
||||
return 0;
|
||||
|
||||
#if defined(NETWORK_ID_USE_PTR_TABLE) || defined (NETWORK_ID_USE_HASH)
|
||||
// You can't use this technique in peer to peer mode. Undefine NETWORK_ID_USE_PTR_TABLE in NetworkIDManager.h
|
||||
assert(NetworkID::peerToPeerMode==false);
|
||||
return IDArray[x.localSystemAddress];
|
||||
#else
|
||||
|
||||
NetworkIDNode *n = IDTree.GetPointerToNode( NetworkIDNode( ( x ), 0 ) );
|
||||
|
||||
if ( n )
|
||||
{
|
||||
return n->object;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#endif
|
||||
|
||||
}
|
||||
//-------------------------------------------------------------------------------------
|
||||
void* NetworkIDManager::GET_OBJECT_FROM_ID( NetworkID x )
|
||||
{
|
||||
#if defined(NETWORK_ID_USE_PTR_TABLE) || defined (NETWORK_ID_USE_HASH)
|
||||
if (x.localSystemAddress==65535)
|
||||
return 0;
|
||||
|
||||
// You can't use this technique in peer to peer mode. Undefine NETWORK_ID_USE_PTR_TABLE in NetworkIDManager.h
|
||||
assert(NetworkID::peerToPeerMode==false);
|
||||
if (IDArray[x.localSystemAddress])
|
||||
{
|
||||
if (IDArray[x.localSystemAddress]->GetParent())
|
||||
{
|
||||
return IDArray[x.localSystemAddress]->GetParent();
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
// If this assert hit then this object requires a call to SetParent and it never got one.
|
||||
assert(IDArray[x.localSystemAddress]->RequiresSetParent()==false);
|
||||
#endif
|
||||
return IDArray[x.localSystemAddress];
|
||||
}
|
||||
}
|
||||
#else
|
||||
NetworkIDObject *object = (NetworkIDObject *) GET_BASE_OBJECT_FROM_ID( x );
|
||||
if (object)
|
||||
{
|
||||
if (object->GetParent())
|
||||
{
|
||||
return object->GetParent();
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
// If this assert hit then this object requires a call to SetParent and it never got one.
|
||||
assert(object->RequiresSetParent()==false);
|
||||
#endif
|
||||
return object;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
//-------------------------------------------------------------------------------------
|
||||
NetworkIDManager::NetworkIDManager(void)
|
||||
{
|
||||
calledSetIsNetworkIDAuthority=false;
|
||||
sharedNetworkID=0;
|
||||
|
||||
#if defined(NETWORK_ID_USE_PTR_TABLE) || defined (NETWORK_ID_USE_HASH)
|
||||
// Last element is reserved for UNASSIGNED_NETWORK_ID
|
||||
IDArray = (NetworkIDObject**) rakMalloc(sizeof(NetworkIDObject*) * 65534);
|
||||
memset(IDArray,0,sizeof(NetworkIDObject*)*65534);
|
||||
// You can't use this technique in peer to peer mode. Undefine NETWORK_ID_USE_PTR_TABLE in NetworkIDManager.h
|
||||
assert(NetworkID::peerToPeerMode==false);
|
||||
#endif
|
||||
}
|
||||
//-------------------------------------------------------------------------------------
|
||||
NetworkIDManager::~NetworkIDManager(void)
|
||||
{
|
||||
#if defined(NETWORK_ID_USE_PTR_TABLE) || defined (NETWORK_ID_USE_HASH)
|
||||
rakFree(IDArray);
|
||||
#endif
|
||||
}
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
void NetworkIDManager::SetIsNetworkIDAuthority(bool isAuthority)
|
||||
{
|
||||
isNetworkIDAuthority=isAuthority;
|
||||
calledSetIsNetworkIDAuthority=true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
bool NetworkIDManager::IsNetworkIDAuthority(void) const
|
||||
{
|
||||
RakAssert(calledSetIsNetworkIDAuthority);
|
||||
return isNetworkIDAuthority;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
unsigned short NetworkIDManager::GetSharedNetworkID( void )
|
||||
{
|
||||
RakAssert(calledSetIsNetworkIDAuthority);
|
||||
return sharedNetworkID;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
void NetworkIDManager::SetSharedNetworkID( unsigned short i )
|
||||
{
|
||||
RakAssert(calledSetIsNetworkIDAuthority);
|
||||
sharedNetworkID = i;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
void NetworkIDManager::SetExternalSystemAddress(SystemAddress systemAddress)
|
||||
{
|
||||
RakAssert(calledSetIsNetworkIDAuthority);
|
||||
RakAssert(systemAddress!=UNASSIGNED_SYSTEM_ADDRESS);
|
||||
externalSystemAddress=systemAddress;
|
||||
}
|
||||
//-------------------------------------------------------------------------------------
|
||||
SystemAddress NetworkIDManager::GetExternalSystemAddress(void)
|
||||
{
|
||||
RakAssert(calledSetIsNetworkIDAuthority);
|
||||
return externalSystemAddress;
|
||||
}
|
Reference in New Issue
Block a user