mirror of
https://github.com/ValveSoftware/GameNetworkingSockets.git
synced 2026-05-29 16:20:34 +00:00
Rename SteamDatagramTransportLock to SteamNetworkingGlobalLock.
This is the start of some refactoring for more granular locking.
This commit is contained in:
@@ -47,8 +47,8 @@ CSteamNetworkingMessages *CSteamNetworkingSockets::GetSteamNetworkingMessages()
|
||||
// Already exist?
|
||||
if ( !m_pSteamNetworkingMessages )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock;
|
||||
SteamDatagramTransportLock::SetLongLockWarningThresholdMS( "CreateSteamNetworkingMessages", 10 );
|
||||
SteamNetworkingGlobalLock scopeLock;
|
||||
SteamNetworkingGlobalLock::SetLongLockWarningThresholdMS( "CreateSteamNetworkingMessages", 10 );
|
||||
m_pSteamNetworkingMessages = new CSteamNetworkingMessages( *this );
|
||||
if ( !m_pSteamNetworkingMessages->BInit() )
|
||||
{
|
||||
@@ -109,7 +109,7 @@ bool CSteamNetworkingMessages::BInit()
|
||||
|
||||
void CSteamNetworkingMessages::FreeResources()
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( "CSteamNetworkingMessages::FreeResources" );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( "CSteamNetworkingMessages::FreeResources" );
|
||||
|
||||
// Destroy all of our sessions. This will detach all of our connections
|
||||
FOR_EACH_HASHMAP( m_mapSessions, i )
|
||||
@@ -156,7 +156,7 @@ void CSteamNetworkingMessages::FreeResources()
|
||||
|
||||
CSteamNetworkingMessages::~CSteamNetworkingMessages()
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock;
|
||||
SteamNetworkingGlobalLock scopeLock;
|
||||
|
||||
FreeResources();
|
||||
|
||||
@@ -175,7 +175,7 @@ CSteamNetworkingMessages::~CSteamNetworkingMessages()
|
||||
void CSteamNetworkingMessages::ConnectionStatusChangedCallback( SteamNetConnectionStatusChangedCallback_t *pInfo )
|
||||
{
|
||||
// These callbacks should happen synchronously, while we have the lock
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( "CSteamNetworkingMessages::ConnectionStatusChangedCallback" );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( "CSteamNetworkingMessages::ConnectionStatusChangedCallback" );
|
||||
|
||||
// New connection?
|
||||
if ( pInfo->m_eOldState == k_ESteamNetworkingConnectionState_None )
|
||||
@@ -235,7 +235,7 @@ EResult CSteamNetworkingMessages::SendMessageToUser( const SteamNetworkingIdenti
|
||||
return k_EResultInvalidSteamID;
|
||||
}
|
||||
|
||||
SteamDatagramTransportLock scopeLock( "SendMessageToUser" );
|
||||
SteamNetworkingGlobalLock scopeLock( "SendMessageToUser" );
|
||||
SteamNetworkingMessagesSession *pSess = FindOrCreateSession( identityRemote );
|
||||
SteamNetworkingMicroseconds usecNow = SteamNetworkingSockets_GetLocalTimestamp();
|
||||
|
||||
@@ -324,7 +324,7 @@ EResult CSteamNetworkingMessages::SendMessageToUser( const SteamNetworkingIdenti
|
||||
|
||||
int CSteamNetworkingMessages::ReceiveMessagesOnChannel( int nLocalChannel, SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "ReceiveMessagesOnChannel" );
|
||||
SteamNetworkingGlobalLock scopeLock( "ReceiveMessagesOnChannel" );
|
||||
|
||||
// Pull out all messages from the poll group into per-channel queues
|
||||
if ( m_pPollGroup )
|
||||
@@ -356,7 +356,7 @@ int CSteamNetworkingMessages::ReceiveMessagesOnChannel( int nLocalChannel, Steam
|
||||
|
||||
bool CSteamNetworkingMessages::AcceptSessionWithUser( const SteamNetworkingIdentity &identityRemote )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "AcceptSessionWithUser" );
|
||||
SteamNetworkingGlobalLock scopeLock( "AcceptSessionWithUser" );
|
||||
SteamNetworkingMessagesSession *pSession = FindSession( identityRemote );
|
||||
if ( !pSession )
|
||||
return false;
|
||||
@@ -375,7 +375,7 @@ bool CSteamNetworkingMessages::AcceptSessionWithUser( const SteamNetworkingIdent
|
||||
|
||||
bool CSteamNetworkingMessages::CloseSessionWithUser( const SteamNetworkingIdentity &identityRemote )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "CloseSessionWithUser" );
|
||||
SteamNetworkingGlobalLock scopeLock( "CloseSessionWithUser" );
|
||||
SteamNetworkingMessagesSession *pSession = FindSession( identityRemote );
|
||||
if ( !pSession )
|
||||
return false;
|
||||
@@ -388,7 +388,7 @@ bool CSteamNetworkingMessages::CloseSessionWithUser( const SteamNetworkingIdenti
|
||||
|
||||
bool CSteamNetworkingMessages::CloseChannelWithUser( const SteamNetworkingIdentity &identityRemote, int nChannel )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "CloseChannelWithUser" );
|
||||
SteamNetworkingGlobalLock scopeLock( "CloseChannelWithUser" );
|
||||
SteamNetworkingMessagesSession *pSession = FindSession( identityRemote );
|
||||
if ( !pSession )
|
||||
return false;
|
||||
@@ -427,7 +427,7 @@ bool CSteamNetworkingMessages::CloseChannelWithUser( const SteamNetworkingIdenti
|
||||
|
||||
ESteamNetworkingConnectionState CSteamNetworkingMessages::GetSessionConnectionInfo( const SteamNetworkingIdentity &identityRemote, SteamNetConnectionInfo_t *pConnectionInfo, SteamNetworkingQuickConnectionStatus *pQuickStatus )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "GetSessionConnectionInfo" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetSessionConnectionInfo" );
|
||||
if ( pConnectionInfo )
|
||||
memset( pConnectionInfo, 0, sizeof(*pConnectionInfo) );
|
||||
if ( pQuickStatus )
|
||||
@@ -449,7 +449,7 @@ ESteamNetworkingConnectionState CSteamNetworkingMessages::GetSessionConnectionIn
|
||||
|
||||
SteamNetworkingMessagesSession *CSteamNetworkingMessages::FindSession( const SteamNetworkingIdentity &identityRemote )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
int h = m_mapSessions.Find( identityRemote );
|
||||
if ( h == m_mapSessions.InvalidIndex() )
|
||||
return nullptr;
|
||||
@@ -483,7 +483,7 @@ CSteamNetworkingMessages::Channel *CSteamNetworkingMessages::FindOrCreateChannel
|
||||
|
||||
void CSteamNetworkingMessages::DestroySession( const SteamNetworkingIdentity &identityRemote )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( "CSteamNetworkingMessages::DestroySession" );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( "CSteamNetworkingMessages::DestroySession" );
|
||||
int h = m_mapSessions.Find( identityRemote );
|
||||
if ( h == m_mapSessions.InvalidIndex() )
|
||||
return;
|
||||
|
||||
@@ -126,7 +126,7 @@ static void EnsureConfigValueTableInitted()
|
||||
{
|
||||
if ( s_bConfigValueTableInitted )
|
||||
return;
|
||||
SteamDatagramTransportLock scopeLock;
|
||||
SteamNetworkingGlobalLock scopeLock;
|
||||
if ( s_bConfigValueTableInitted )
|
||||
return;
|
||||
|
||||
@@ -330,7 +330,7 @@ CSteamNetworkingSockets::CSteamNetworkingSockets( CSteamNetworkingUtils *pSteamN
|
||||
|
||||
CSteamNetworkingSockets::~CSteamNetworkingSockets()
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
Assert( !m_bHaveLowLevelRef ); // Called destructor directly? Use Destroy()!
|
||||
}
|
||||
|
||||
@@ -369,7 +369,7 @@ bool CSteamNetworkingSockets::BInitLowLevel( SteamNetworkingErrMsg &errMsg )
|
||||
|
||||
void CSteamNetworkingSockets::KillConnections()
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( "CSteamNetworkingSockets::KillConnections" );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( "CSteamNetworkingSockets::KillConnections" );
|
||||
|
||||
// Warn messages interface that it needs to clean up. We need to do this
|
||||
// because that class has pointers to objects that we are about to destroy.
|
||||
@@ -415,7 +415,7 @@ void CSteamNetworkingSockets::KillConnections()
|
||||
|
||||
void CSteamNetworkingSockets::Destroy()
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( "CSteamNetworkingSockets::Destroy" );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( "CSteamNetworkingSockets::Destroy" );
|
||||
|
||||
FreeResources();
|
||||
|
||||
@@ -477,7 +477,7 @@ bool CSteamNetworkingSockets::BHasAnyListenSockets() const
|
||||
|
||||
bool CSteamNetworkingSockets::GetIdentity( SteamNetworkingIdentity *pIdentity )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "GetIdentity" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetIdentity" );
|
||||
InternalGetIdentity();
|
||||
if ( pIdentity )
|
||||
*pIdentity = m_identity;
|
||||
@@ -499,7 +499,7 @@ int CSteamNetworkingSockets::GetSecondsUntilCertExpiry() const
|
||||
|
||||
bool CSteamNetworkingSockets::GetCertificateRequest( int *pcbBlob, void *pBlob, SteamNetworkingErrMsg &errMsg )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "GetCertificateRequest" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetCertificateRequest" );
|
||||
|
||||
// If we don't have a private key, generate one now.
|
||||
CECSigningPublicKey pubKey;
|
||||
@@ -557,7 +557,7 @@ bool CSteamNetworkingSockets::SetCertificate( const void *pCertificate, int cbCe
|
||||
return false;
|
||||
}
|
||||
|
||||
SteamDatagramTransportLock scopeLock( "SetCertificate" );
|
||||
SteamNetworkingGlobalLock scopeLock( "SetCertificate" );
|
||||
|
||||
// Crack the cert, and check the signature. If *we* aren't even willing
|
||||
// to trust it, assume that our peers won't either
|
||||
@@ -670,7 +670,7 @@ bool CSteamNetworkingSockets::SetCertificate( const void *pCertificate, int cbCe
|
||||
|
||||
ESteamNetworkingAvailability CSteamNetworkingSockets::InitAuthentication()
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "InitAuthentication" );
|
||||
SteamNetworkingGlobalLock scopeLock( "InitAuthentication" );
|
||||
|
||||
// Check/fetch prerequisites
|
||||
AuthenticationNeeded();
|
||||
@@ -854,7 +854,7 @@ void CSteamNetworkingSockets::CertRequestFailed( ESteamNetworkingAvailability eC
|
||||
|
||||
ESteamNetworkingAvailability CSteamNetworkingSockets::GetAuthenticationStatus( SteamNetAuthenticationStatus_t *pDetails )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock;
|
||||
SteamNetworkingGlobalLock scopeLock;
|
||||
|
||||
// Return details, if requested
|
||||
if ( pDetails )
|
||||
@@ -866,7 +866,7 @@ ESteamNetworkingAvailability CSteamNetworkingSockets::GetAuthenticationStatus( S
|
||||
|
||||
HSteamListenSocket CSteamNetworkingSockets::CreateListenSocketIP( const SteamNetworkingIPAddr &localAddr, int nOptions, const SteamNetworkingConfigValue_t *pOptions )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "CreateListenSocketIP" );
|
||||
SteamNetworkingGlobalLock scopeLock( "CreateListenSocketIP" );
|
||||
SteamDatagramErrMsg errMsg;
|
||||
|
||||
CSteamNetworkListenSocketDirectUDP *pSock = new CSteamNetworkListenSocketDirectUDP( this );
|
||||
@@ -884,7 +884,7 @@ HSteamListenSocket CSteamNetworkingSockets::CreateListenSocketIP( const SteamNet
|
||||
|
||||
HSteamNetConnection CSteamNetworkingSockets::ConnectByIPAddress( const SteamNetworkingIPAddr &address, int nOptions, const SteamNetworkingConfigValue_t *pOptions )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "ConnectByIPAddress" );
|
||||
SteamNetworkingGlobalLock scopeLock( "ConnectByIPAddress" );
|
||||
CSteamNetworkConnectionUDP *pConn = new CSteamNetworkConnectionUDP( this );
|
||||
if ( !pConn )
|
||||
return k_HSteamNetConnection_Invalid;
|
||||
@@ -902,7 +902,7 @@ HSteamNetConnection CSteamNetworkingSockets::ConnectByIPAddress( const SteamNetw
|
||||
|
||||
EResult CSteamNetworkingSockets::AcceptConnection( HSteamNetConnection hConn )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "AcceptConnection" );
|
||||
SteamNetworkingGlobalLock scopeLock( "AcceptConnection" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hConn );
|
||||
if ( !pConn )
|
||||
{
|
||||
@@ -916,7 +916,7 @@ EResult CSteamNetworkingSockets::AcceptConnection( HSteamNetConnection hConn )
|
||||
|
||||
bool CSteamNetworkingSockets::CloseConnection( HSteamNetConnection hConn, int nReason, const char *pszDebug, bool bEnableLinger )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "CloseConnection" );
|
||||
SteamNetworkingGlobalLock scopeLock( "CloseConnection" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hConn );
|
||||
if ( !pConn )
|
||||
return false;
|
||||
@@ -928,7 +928,7 @@ bool CSteamNetworkingSockets::CloseConnection( HSteamNetConnection hConn, int nR
|
||||
|
||||
bool CSteamNetworkingSockets::CloseListenSocket( HSteamListenSocket hSocket )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "CloseListenSocket" );
|
||||
SteamNetworkingGlobalLock scopeLock( "CloseListenSocket" );
|
||||
CSteamNetworkListenSocketBase *pSock = GetListenSocketByHandle( hSocket );
|
||||
if ( !pSock )
|
||||
return false;
|
||||
@@ -941,7 +941,7 @@ bool CSteamNetworkingSockets::CloseListenSocket( HSteamListenSocket hSocket )
|
||||
|
||||
bool CSteamNetworkingSockets::SetConnectionUserData( HSteamNetConnection hPeer, int64 nUserData )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "SetConnectionUserData" );
|
||||
SteamNetworkingGlobalLock scopeLock( "SetConnectionUserData" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hPeer );
|
||||
if ( !pConn )
|
||||
return false;
|
||||
@@ -951,7 +951,7 @@ bool CSteamNetworkingSockets::SetConnectionUserData( HSteamNetConnection hPeer,
|
||||
|
||||
int64 CSteamNetworkingSockets::GetConnectionUserData( HSteamNetConnection hPeer )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "GetConnectionUserData" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetConnectionUserData" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hPeer );
|
||||
if ( !pConn )
|
||||
return -1;
|
||||
@@ -960,7 +960,7 @@ int64 CSteamNetworkingSockets::GetConnectionUserData( HSteamNetConnection hPeer
|
||||
|
||||
void CSteamNetworkingSockets::SetConnectionName( HSteamNetConnection hPeer, const char *pszName )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "SetConnectionName" );
|
||||
SteamNetworkingGlobalLock scopeLock( "SetConnectionName" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hPeer );
|
||||
if ( !pConn )
|
||||
return;
|
||||
@@ -969,7 +969,7 @@ void CSteamNetworkingSockets::SetConnectionName( HSteamNetConnection hPeer, cons
|
||||
|
||||
bool CSteamNetworkingSockets::GetConnectionName( HSteamNetConnection hPeer, char *pszName, int nMaxLen )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "GetConnectionName" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetConnectionName" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hPeer );
|
||||
if ( !pConn )
|
||||
return false;
|
||||
@@ -979,7 +979,7 @@ bool CSteamNetworkingSockets::GetConnectionName( HSteamNetConnection hPeer, char
|
||||
|
||||
EResult CSteamNetworkingSockets::SendMessageToConnection( HSteamNetConnection hConn, const void *pData, uint32 cbData, int nSendFlags, int64 *pOutMessageNumber )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "SendMessageToConnection" );
|
||||
SteamNetworkingGlobalLock scopeLock( "SendMessageToConnection" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hConn );
|
||||
if ( !pConn )
|
||||
return k_EResultInvalidParam;
|
||||
@@ -988,7 +988,7 @@ EResult CSteamNetworkingSockets::SendMessageToConnection( HSteamNetConnection hC
|
||||
|
||||
void CSteamNetworkingSockets::SendMessages( int nMessages, SteamNetworkingMessage_t *const *pMessages, int64 *pOutMessageNumberOrResult )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "SendMessages" );
|
||||
SteamNetworkingGlobalLock scopeLock( "SendMessages" );
|
||||
SteamNetworkingMicroseconds usecNow = SteamNetworkingSockets_GetLocalTimestamp();
|
||||
|
||||
vstd::small_vector<CSteamNetworkConnectionBase *,64 > vecConnectionsToCheck;
|
||||
@@ -1035,7 +1035,7 @@ void CSteamNetworkingSockets::SendMessages( int nMessages, SteamNetworkingMessag
|
||||
|
||||
EResult CSteamNetworkingSockets::FlushMessagesOnConnection( HSteamNetConnection hConn )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "FlushMessagesOnConnection" );
|
||||
SteamNetworkingGlobalLock scopeLock( "FlushMessagesOnConnection" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hConn );
|
||||
if ( !pConn )
|
||||
return k_EResultInvalidParam;
|
||||
@@ -1044,7 +1044,7 @@ EResult CSteamNetworkingSockets::FlushMessagesOnConnection( HSteamNetConnection
|
||||
|
||||
int CSteamNetworkingSockets::ReceiveMessagesOnConnection( HSteamNetConnection hConn, SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "ReceiveMessagesOnConnection" );
|
||||
SteamNetworkingGlobalLock scopeLock( "ReceiveMessagesOnConnection" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hConn );
|
||||
if ( !pConn )
|
||||
return -1;
|
||||
@@ -1053,7 +1053,7 @@ int CSteamNetworkingSockets::ReceiveMessagesOnConnection( HSteamNetConnection hC
|
||||
|
||||
HSteamNetPollGroup CSteamNetworkingSockets::CreatePollGroup()
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "CreatePollGroup" );
|
||||
SteamNetworkingGlobalLock scopeLock( "CreatePollGroup" );
|
||||
CSteamNetworkPollGroup *pPollGroup = new CSteamNetworkPollGroup( this );
|
||||
pPollGroup->AssignHandleAndAddToGlobalTable();
|
||||
return pPollGroup->m_hPollGroupSelf;
|
||||
@@ -1061,7 +1061,7 @@ HSteamNetPollGroup CSteamNetworkingSockets::CreatePollGroup()
|
||||
|
||||
bool CSteamNetworkingSockets::DestroyPollGroup( HSteamNetPollGroup hPollGroup )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "DestroyPollGroup" );
|
||||
SteamNetworkingGlobalLock scopeLock( "DestroyPollGroup" );
|
||||
CSteamNetworkPollGroup *pPollGroup = GetPollGroupByHandle( hPollGroup );
|
||||
if ( !pPollGroup )
|
||||
return false;
|
||||
@@ -1071,7 +1071,7 @@ bool CSteamNetworkingSockets::DestroyPollGroup( HSteamNetPollGroup hPollGroup )
|
||||
|
||||
bool CSteamNetworkingSockets::SetConnectionPollGroup( HSteamNetConnection hConn, HSteamNetPollGroup hPollGroup )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "SetConnectionPollGroup" );
|
||||
SteamNetworkingGlobalLock scopeLock( "SetConnectionPollGroup" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hConn );
|
||||
if ( !pConn )
|
||||
return false;
|
||||
@@ -1095,7 +1095,7 @@ bool CSteamNetworkingSockets::SetConnectionPollGroup( HSteamNetConnection hConn,
|
||||
|
||||
int CSteamNetworkingSockets::ReceiveMessagesOnPollGroup( HSteamNetPollGroup hPollGroup, SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "ReceiveMessagesOnPollGroup" );
|
||||
SteamNetworkingGlobalLock scopeLock( "ReceiveMessagesOnPollGroup" );
|
||||
CSteamNetworkPollGroup *pPollGroup = GetPollGroupByHandle( hPollGroup );
|
||||
if ( !pPollGroup )
|
||||
return -1;
|
||||
@@ -1105,7 +1105,7 @@ int CSteamNetworkingSockets::ReceiveMessagesOnPollGroup( HSteamNetPollGroup hPol
|
||||
#ifdef STEAMNETWORKINGSOCKETS_STEAMCLIENT
|
||||
int CSteamNetworkingSockets::ReceiveMessagesOnListenSocketLegacyPollGroup( HSteamListenSocket hSocket, SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "ReceiveMessagesOnListenSocket" );
|
||||
SteamNetworkingGlobalLock scopeLock( "ReceiveMessagesOnListenSocket" );
|
||||
CSteamNetworkListenSocketBase *pSock = GetListenSocketByHandle( hSocket );
|
||||
if ( !pSock )
|
||||
return -1;
|
||||
@@ -1115,7 +1115,7 @@ int CSteamNetworkingSockets::ReceiveMessagesOnListenSocketLegacyPollGroup( HStea
|
||||
|
||||
bool CSteamNetworkingSockets::GetConnectionInfo( HSteamNetConnection hConn, SteamNetConnectionInfo_t *pInfo )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "GetConnectionInfo" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetConnectionInfo" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hConn );
|
||||
if ( !pConn )
|
||||
return false;
|
||||
@@ -1126,7 +1126,7 @@ bool CSteamNetworkingSockets::GetConnectionInfo( HSteamNetConnection hConn, Stea
|
||||
|
||||
bool CSteamNetworkingSockets::GetQuickConnectionStatus( HSteamNetConnection hConn, SteamNetworkingQuickConnectionStatus *pStats )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "GetQuickConnectionStatus" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetQuickConnectionStatus" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hConn );
|
||||
if ( !pConn )
|
||||
return false;
|
||||
@@ -1141,7 +1141,7 @@ int CSteamNetworkingSockets::GetDetailedConnectionStatus( HSteamNetConnection hC
|
||||
|
||||
// Only hold the lock for as long as we need.
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "GetDetailedConnectionStatus" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetDetailedConnectionStatus" );
|
||||
CSteamNetworkConnectionBase *pConn = GetConnectionByHandleForAPI( hConn );
|
||||
if ( !pConn )
|
||||
return -1;
|
||||
@@ -1160,7 +1160,7 @@ int CSteamNetworkingSockets::GetDetailedConnectionStatus( HSteamNetConnection hC
|
||||
|
||||
bool CSteamNetworkingSockets::GetListenSocketAddress( HSteamListenSocket hSocket, SteamNetworkingIPAddr *pAddress )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "GetListenSocketAddress" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetListenSocketAddress" );
|
||||
CSteamNetworkListenSocketBase *pSock = GetListenSocketByHandle( hSocket );
|
||||
if ( !pSock )
|
||||
return false;
|
||||
@@ -1169,7 +1169,7 @@ bool CSteamNetworkingSockets::GetListenSocketAddress( HSteamListenSocket hSocket
|
||||
|
||||
bool CSteamNetworkingSockets::CreateSocketPair( HSteamNetConnection *pOutConnection1, HSteamNetConnection *pOutConnection2, bool bUseNetworkLoopback, const SteamNetworkingIdentity *pIdentity1, const SteamNetworkingIdentity *pIdentity2 )
|
||||
{
|
||||
SteamDatagramTransportLock scopeLock( "CreateSocketPair" );
|
||||
SteamNetworkingGlobalLock scopeLock( "CreateSocketPair" );
|
||||
|
||||
// Assume failure
|
||||
*pOutConnection1 = k_HSteamNetConnection_Invalid;
|
||||
@@ -1221,7 +1221,7 @@ bool CSteamNetworkingSockets::BCertHasIdentity() const
|
||||
|
||||
bool CSteamNetworkingSockets::SetCertificateAndPrivateKey( const void *pCert, int cbCert, void *pPrivateKey, int cbPrivateKey )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( "SetCertificateAndPrivateKey" );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( "SetCertificateAndPrivateKey" );
|
||||
|
||||
m_msgCert.Clear();
|
||||
m_msgSignedCert.Clear();
|
||||
@@ -1338,7 +1338,7 @@ void CSteamNetworkingSockets::RunCallbacks()
|
||||
|
||||
void CSteamNetworkingSockets::InternalQueueCallback( int nCallback, int cbCallback, const void *pvCallback, void *fnRegisteredFunctionPtr )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
if ( !fnRegisteredFunctionPtr )
|
||||
return;
|
||||
@@ -1734,7 +1734,7 @@ bool CSteamNetworkingUtils::SetConfigValue( ESteamNetworkingConfigValue eValue,
|
||||
if ( pEntry == nullptr )
|
||||
return false;
|
||||
|
||||
SteamDatagramTransportLock scopeLock( "SetConfigValue" );
|
||||
SteamNetworkingGlobalLock scopeLock( "SetConfigValue" );
|
||||
|
||||
switch ( pEntry->m_eDataType )
|
||||
{
|
||||
@@ -1777,7 +1777,7 @@ ESteamNetworkingGetConfigValueResult CSteamNetworkingUtils::GetConfigValue(
|
||||
if ( pOutDataType )
|
||||
*pOutDataType = pEntry->m_eDataType;
|
||||
|
||||
SteamDatagramTransportLock scopeLock( "GetConfigValue" );
|
||||
SteamNetworkingGlobalLock scopeLock( "GetConfigValue" );
|
||||
|
||||
switch ( pEntry->m_eDataType )
|
||||
{
|
||||
@@ -1974,7 +1974,7 @@ static CSteamNetworkingSockets *s_pSteamNetworkingSockets = nullptr;
|
||||
|
||||
STEAMNETWORKINGSOCKETS_INTERFACE bool GameNetworkingSockets_Init( const SteamNetworkingIdentity *pIdentity, SteamNetworkingErrMsg &errMsg )
|
||||
{
|
||||
SteamDatagramTransportLock lock( "GameNetworkingSockets_Init" );
|
||||
SteamNetworkingGlobalLock lock( "GameNetworkingSockets_Init" );
|
||||
|
||||
// Already initted?
|
||||
if ( s_pSteamNetworkingSockets )
|
||||
@@ -1997,7 +1997,7 @@ STEAMNETWORKINGSOCKETS_INTERFACE bool GameNetworkingSockets_Init( const SteamNet
|
||||
|
||||
STEAMNETWORKINGSOCKETS_INTERFACE void GameNetworkingSockets_Kill()
|
||||
{
|
||||
SteamDatagramTransportLock lock( "GameNetworkingSockets_Kill" );
|
||||
SteamNetworkingGlobalLock lock( "GameNetworkingSockets_Kill" );
|
||||
if ( s_pSteamNetworkingSockets )
|
||||
{
|
||||
s_pSteamNetworkingSockets->Destroy();
|
||||
|
||||
@@ -1272,7 +1272,7 @@ void CSteamNetworkConnectionBase::CertRequestFailed( ESteamNetConnectionEnd nCon
|
||||
|
||||
bool CSteamNetworkConnectionBase::BRecvCryptoHandshake( const CMsgSteamDatagramCertificateSigned &msgCert, const CMsgSteamDatagramSessionCryptInfoSigned &msgSessionInfo, bool bServer )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( "BRecvCryptoHandshake" );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( "BRecvCryptoHandshake" );
|
||||
SteamNetworkingErrMsg errMsg;
|
||||
|
||||
// Have we already done key exchange?
|
||||
|
||||
@@ -62,7 +62,7 @@ int g_nSteamDatagramSocketBufferSize = 256*1024;
|
||||
#else
|
||||
static std::recursive_timed_mutex s_steamDatagramTransportMutex;
|
||||
#endif
|
||||
int SteamDatagramTransportLock::s_nLocked;
|
||||
int SteamNetworkingGlobalLock::s_nLocked;
|
||||
static SteamNetworkingMicroseconds s_usecWhenLocked;
|
||||
static std::thread::id s_threadIDLockOwner;
|
||||
static SteamNetworkingMicroseconds s_usecLongLockWarningThreshold;
|
||||
@@ -75,7 +75,7 @@ static void (*s_fLockAcquiredCallback)( const char *tags, SteamNetworkingMicrose
|
||||
static void (*s_fLockHeldCallback)( const char *tags, SteamNetworkingMicroseconds usecWaited );
|
||||
static SteamNetworkingMicroseconds s_usecLockWaitWarningThreshold = 2*1000;
|
||||
|
||||
void SteamDatagramTransportLock::AddTag( const char *pszTag )
|
||||
void SteamNetworkingGlobalLock::AddTag( const char *pszTag )
|
||||
{
|
||||
if ( !pszTag || s_nCurrentLockTags >= k_nMaxCurrentLockTags )
|
||||
return;
|
||||
@@ -94,7 +94,7 @@ void SteamDatagramTransportLock::AddTag( const char *pszTag )
|
||||
++s_nCurrentLockTags;
|
||||
}
|
||||
|
||||
void SteamDatagramTransportLock::OnLocked( const char *pszTag, SteamNetworkingMicroseconds usecTimeStartedLocking )
|
||||
void SteamNetworkingGlobalLock::OnLocked( const char *pszTag, SteamNetworkingMicroseconds usecTimeStartedLocking )
|
||||
{
|
||||
++s_nLocked;
|
||||
SteamNetworkingMicroseconds usecNow = SteamNetworkingSockets_GetLocalTimestamp();
|
||||
@@ -131,7 +131,7 @@ void SteamDatagramTransportLock::OnLocked( const char *pszTag, SteamNetworkingMi
|
||||
AddTag( pszTag );
|
||||
}
|
||||
|
||||
void SteamDatagramTransportLock::Lock( const char *pszTag )
|
||||
void SteamNetworkingGlobalLock::Lock( const char *pszTag )
|
||||
{
|
||||
SteamNetworkingMicroseconds usecTimeStartedLocking;
|
||||
#ifdef MSVC_STL_MUTEX_WORKAROUND
|
||||
@@ -147,7 +147,7 @@ void SteamDatagramTransportLock::Lock( const char *pszTag )
|
||||
OnLocked( pszTag, usecTimeStartedLocking );
|
||||
}
|
||||
|
||||
bool SteamDatagramTransportLock::TryLock( const char *pszTag, int msTimeout )
|
||||
bool SteamNetworkingGlobalLock::TryLock( const char *pszTag, int msTimeout )
|
||||
{
|
||||
SteamNetworkingMicroseconds usecTimeStartedLocking = SteamNetworkingSockets_GetLocalTimestamp();
|
||||
#ifdef MSVC_STL_MUTEX_WORKAROUND
|
||||
@@ -161,7 +161,7 @@ bool SteamDatagramTransportLock::TryLock( const char *pszTag, int msTimeout )
|
||||
return true;
|
||||
}
|
||||
|
||||
void SteamDatagramTransportLock::Unlock()
|
||||
void SteamNetworkingGlobalLock::Unlock()
|
||||
{
|
||||
char tags[ 256 ];
|
||||
|
||||
@@ -232,7 +232,7 @@ void SteamDatagramTransportLock::Unlock()
|
||||
}
|
||||
}
|
||||
|
||||
void SteamDatagramTransportLock::SetLongLockWarningThresholdMS( const char *pszTag, int msWarningThreshold )
|
||||
void SteamNetworkingGlobalLock::SetLongLockWarningThresholdMS( const char *pszTag, int msWarningThreshold )
|
||||
{
|
||||
AssertHeldByCurrentThread( pszTag );
|
||||
SteamNetworkingMicroseconds usecWarningThreshold = SteamNetworkingMicroseconds{msWarningThreshold}*1000;
|
||||
@@ -243,13 +243,13 @@ void SteamDatagramTransportLock::SetLongLockWarningThresholdMS( const char *pszT
|
||||
}
|
||||
}
|
||||
|
||||
void SteamDatagramTransportLock::AssertHeldByCurrentThread()
|
||||
void SteamNetworkingGlobalLock::AssertHeldByCurrentThread()
|
||||
{
|
||||
Assert( s_nLocked > 0 ); // NOTE: This could succeed even if another thread has the lock
|
||||
Assert( s_threadIDLockOwner == std::this_thread::get_id() );
|
||||
}
|
||||
|
||||
void SteamDatagramTransportLock::AssertHeldByCurrentThread( const char *pszTag )
|
||||
void SteamNetworkingGlobalLock::AssertHeldByCurrentThread( const char *pszTag )
|
||||
{
|
||||
Assert( s_nLocked > 0 ); // NOTE: This could succeed even if another thread has the lock
|
||||
if ( s_threadIDLockOwner == std::this_thread::get_id() )
|
||||
@@ -303,7 +303,7 @@ ISteamNetworkingSocketsRunWithLock::~ISteamNetworkingSocketsRunWithLock() {}
|
||||
bool ISteamNetworkingSocketsRunWithLock::RunOrQueue( const char *pszTag )
|
||||
{
|
||||
// Check if lock is available immediately
|
||||
if ( !SteamDatagramTransportLock::TryLock( pszTag, 0 ) )
|
||||
if ( !SteamNetworkingGlobalLock::TryLock( pszTag, 0 ) )
|
||||
{
|
||||
Queue( pszTag );
|
||||
return false;
|
||||
@@ -316,7 +316,7 @@ bool ISteamNetworkingSocketsRunWithLock::RunOrQueue( const char *pszTag )
|
||||
Run();
|
||||
|
||||
// Go ahead and unlock now
|
||||
SteamDatagramTransportLock::Unlock();
|
||||
SteamNetworkingGlobalLock::Unlock();
|
||||
|
||||
// Self destruct
|
||||
delete this;
|
||||
@@ -365,7 +365,7 @@ void ISteamNetworkingSocketsRunWithLock::ServiceQueue()
|
||||
for ( ISteamNetworkingSocketsRunWithLock *pItem: vecTempQueue )
|
||||
{
|
||||
// Make sure we hold the lock, and also set the tag for debugging purposes
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( pItem->m_pszTag );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( pItem->m_pszTag );
|
||||
|
||||
// Do the work and nuke
|
||||
pItem->Run();
|
||||
@@ -540,7 +540,7 @@ public:
|
||||
|
||||
// Add a tag. If we end up holding the lock for a long time, this tag
|
||||
// will tell us how many packets were sent
|
||||
SteamDatagramTransportLock::AddTag( "SendUDPacket" );
|
||||
SteamNetworkingGlobalLock::AddTag( "SendUDPacket" );
|
||||
|
||||
// Convert address to BSD interface
|
||||
struct sockaddr_storage destAddress;
|
||||
@@ -637,7 +637,7 @@ public:
|
||||
|
||||
void LagPacket( bool bSend, const CRawUDPSocketImpl *pSock, const netadr_t &adr, int msDelay, int nChunks, const iovec *pChunks )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( "LagPacket" );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( "LagPacket" );
|
||||
|
||||
int cbPkt = 0;
|
||||
for ( int i = 0 ; i < nChunks ; ++i )
|
||||
@@ -835,7 +835,7 @@ bool IRawUDPSocket::BSendRawPacket( const void *pPkt, int cbPkt, const netadr_t
|
||||
|
||||
bool IRawUDPSocket::BSendRawPacketGather( int nChunks, const iovec *pChunks, const netadr_t &adrTo ) const
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
// Silently ignore a request to send a packet anytime we're in the process of shutting down the system
|
||||
if ( s_nLowLevelSupportRefCount.load(std::memory_order_acquire) <= 0 )
|
||||
@@ -877,7 +877,7 @@ bool IRawUDPSocket::BSendRawPacketGather( int nChunks, const iovec *pChunks, con
|
||||
|
||||
void IRawUDPSocket::Close()
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread( "IRawUDPSocket::Close" );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread( "IRawUDPSocket::Close" );
|
||||
CRawUDPSocketImpl *self = static_cast<CRawUDPSocketImpl *>( this );
|
||||
|
||||
/// Clear the callback, to ensure that no further callbacks will be executed.
|
||||
@@ -1008,7 +1008,7 @@ static CRawUDPSocketImpl *OpenRawUDPSocketInternal( CRecvPacketCallback callback
|
||||
{
|
||||
// Creating a socket *should* be fast, but sometimes the OS might need to do some work.
|
||||
// We shouldn't do this too often, give it a little extra time.
|
||||
SteamDatagramTransportLock::SetLongLockWarningThresholdMS( "OpenRawUDPSocketInternal", 100 );
|
||||
SteamNetworkingGlobalLock::SetLongLockWarningThresholdMS( "OpenRawUDPSocketInternal", 100 );
|
||||
|
||||
// Make sure have been initialized
|
||||
if ( s_nLowLevelSupportRefCount.load(std::memory_order_acquire) <= 0 )
|
||||
@@ -1185,8 +1185,8 @@ static bool PollRawUDPSockets( int nMaxTimeoutMS, bool bManualPoll )
|
||||
{
|
||||
// This should only ever be called from our one thread proc,
|
||||
// and we assume that it will have locked the lock exactly once.
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
Assert( SteamDatagramTransportLock::s_nLocked == 1 );
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
Assert( SteamNetworkingGlobalLock::s_nLocked == 1 );
|
||||
|
||||
const int nSocketsToPoll = s_vecRawSockets.Count();
|
||||
|
||||
@@ -1238,7 +1238,7 @@ static bool PollRawUDPSockets( int nMaxTimeoutMS, bool bManualPoll )
|
||||
#endif
|
||||
|
||||
// Release lock while we're asleep
|
||||
SteamDatagramTransportLock::Unlock();
|
||||
SteamNetworkingGlobalLock::Unlock();
|
||||
|
||||
// Shutdown request?
|
||||
if ( s_nLowLevelSupportRefCount.load(std::memory_order_acquire) <= 0 || s_bManualPollMode != bManualPoll )
|
||||
@@ -1263,7 +1263,7 @@ static bool PollRawUDPSockets( int nMaxTimeoutMS, bool bManualPoll )
|
||||
|
||||
// Try to acquire the lock. But don't wait forever, in case the other thread has the lock
|
||||
// and then makes a shutdown request while we're waiting on the lock here.
|
||||
if ( SteamDatagramTransportLock::TryLock( "ServiceThread", 250 ) )
|
||||
if ( SteamNetworkingGlobalLock::TryLock( "ServiceThread", 250 ) )
|
||||
break;
|
||||
|
||||
// The only time this really should happen is a relatively rare race condition
|
||||
@@ -1368,7 +1368,7 @@ static bool PollRawUDPSockets( int nMaxTimeoutMS, bool bManualPoll )
|
||||
|
||||
// Add a tag. If we end up holding the lock for a long time, this tag
|
||||
// will tell us how many packets were processed
|
||||
SteamDatagramTransportLock::AddTag( "RecvUDPPacket" );
|
||||
SteamNetworkingGlobalLock::AddTag( "RecvUDPPacket" );
|
||||
|
||||
// Check for simulating random packet loss
|
||||
if ( RandomBoolWithOdds( g_Config_FakePacketLoss_Recv.Get() ) )
|
||||
@@ -1440,7 +1440,7 @@ static bool PollRawUDPSockets( int nMaxTimeoutMS, bool bManualPoll )
|
||||
|
||||
void ProcessPendingDestroyClosedRawUDPSockets()
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
for ( CRawUDPSocketImpl *pSock: s_vecRawSocketsPendingDeletion )
|
||||
{
|
||||
@@ -1465,8 +1465,8 @@ void ProcessPendingDestroyClosedRawUDPSockets()
|
||||
//
|
||||
static bool SteamNetworkingSockets_InternalPoll( int msWait, bool bManualPoll )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread(); // We should own the lock
|
||||
Assert( SteamDatagramTransportLock::s_nLocked == 1 ); // exactly once
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread(); // We should own the lock
|
||||
Assert( SteamNetworkingGlobalLock::s_nLocked == 1 ); // exactly once
|
||||
|
||||
// Figure out how long to sleep
|
||||
IThinker *pNextThinker = Thinker_GetNextScheduled();
|
||||
@@ -1520,13 +1520,13 @@ static bool SteamNetworkingSockets_InternalPoll( int msWait, bool bManualPoll )
|
||||
return false;
|
||||
}
|
||||
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread(); // We should own the lock
|
||||
Assert( SteamDatagramTransportLock::s_nLocked == 1 ); // exactly once
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread(); // We should own the lock
|
||||
Assert( SteamNetworkingGlobalLock::s_nLocked == 1 ); // exactly once
|
||||
|
||||
// Shutdown request?
|
||||
if ( s_nLowLevelSupportRefCount.load(std::memory_order_acquire) <= 0 || s_bManualPollMode != bManualPoll )
|
||||
{
|
||||
SteamDatagramTransportLock::Unlock();
|
||||
SteamNetworkingGlobalLock::Unlock();
|
||||
return false; // Shutdown request, we have released the lock
|
||||
}
|
||||
|
||||
@@ -1619,7 +1619,7 @@ static void SteamNetworkingThreadProc()
|
||||
{
|
||||
if ( s_nLowLevelSupportRefCount.load(std::memory_order_acquire) <= 0 || s_bManualPollMode )
|
||||
return;
|
||||
} while ( !SteamDatagramTransportLock::TryLock( "ServiceThread", 10 ) );
|
||||
} while ( !SteamNetworkingGlobalLock::TryLock( "ServiceThread", 10 ) );
|
||||
|
||||
// Random number generator may be per thread! Make sure and see it for
|
||||
// this thread, if so
|
||||
@@ -1633,7 +1633,7 @@ static void SteamNetworkingThreadProc()
|
||||
// If they activate manual poll mode, then bail!
|
||||
if ( s_bManualPollMode )
|
||||
{
|
||||
SteamDatagramTransportLock::Unlock();
|
||||
SteamNetworkingGlobalLock::Unlock();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1704,7 +1704,7 @@ static void DedicatedBoundSocketCallback( const void *pPkt, int cbPkt, const net
|
||||
|
||||
IBoundUDPSocket *OpenUDPSocketBoundToHost( const netadr_t &adrRemote, CRecvPacketCallback callback, SteamDatagramErrMsg &errMsg )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
// Select local address to use.
|
||||
// Since we know the remote host, let's just always use a single-stack socket
|
||||
@@ -1727,7 +1727,7 @@ IBoundUDPSocket *OpenUDPSocketBoundToHost( const netadr_t &adrRemote, CRecvPacke
|
||||
|
||||
bool CreateBoundSocketPair( CRecvPacketCallback callback1, CRecvPacketCallback callback2, IBoundUDPSocket **ppOutSockets, SteamDatagramErrMsg &errMsg )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
SteamNetworkingIPAddr localAddr;
|
||||
|
||||
@@ -1783,7 +1783,7 @@ void CSharedSocket::CallbackRecvPacket( const void *pPkt, int cbPkt, const netad
|
||||
|
||||
bool CSharedSocket::BInit( const SteamNetworkingIPAddr &localAddr, CRecvPacketCallback callbackDefault, SteamDatagramErrMsg &errMsg )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
Kill();
|
||||
|
||||
@@ -1798,7 +1798,7 @@ bool CSharedSocket::BInit( const SteamNetworkingIPAddr &localAddr, CRecvPacketCa
|
||||
|
||||
void CSharedSocket::Kill()
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
m_callbackDefault.m_fnCallback = nullptr;
|
||||
if ( m_pRawSock )
|
||||
@@ -1814,7 +1814,7 @@ void CSharedSocket::Kill()
|
||||
|
||||
void CSharedSocket::CloseRemoteHostByIndex( int idx )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
delete m_mapRemoteHosts[ idx ];
|
||||
m_mapRemoteHosts[idx] = nullptr; // just for grins
|
||||
@@ -1823,7 +1823,7 @@ void CSharedSocket::CloseRemoteHostByIndex( int idx )
|
||||
|
||||
IBoundUDPSocket *CSharedSocket::AddRemoteHost( const netadr_t &adrRemote, CRecvPacketCallback callback )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
if ( m_mapRemoteHosts.HasElement( adrRemote ) )
|
||||
{
|
||||
@@ -1840,7 +1840,7 @@ IBoundUDPSocket *CSharedSocket::AddRemoteHost( const netadr_t &adrRemote, CRecvP
|
||||
|
||||
void CSharedSocket::RemoteHost::Close()
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
int idx = m_pOwner->m_mapRemoteHosts.Find( m_adr );
|
||||
if ( idx == m_pOwner->m_mapRemoteHosts.InvalidIndex() || m_pOwner->m_mapRemoteHosts[idx] != this )
|
||||
@@ -1877,7 +1877,7 @@ void ReallySpewTypeFmt( int eType, const char *pMsg, ... )
|
||||
|
||||
bool BSteamNetworkingSocketsLowLevelAddRef( SteamDatagramErrMsg &errMsg )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
// Make sure and call time function at least once
|
||||
// just before we start up our thread, so we don't lurch
|
||||
@@ -1895,7 +1895,7 @@ bool BSteamNetworkingSocketsLowLevelAddRef( SteamDatagramErrMsg &errMsg )
|
||||
|
||||
// Give us a extra time here. This is a one-time init function and the OS might
|
||||
// need to load up libraries and stuff.
|
||||
SteamDatagramTransportLock::SetLongLockWarningThresholdMS( "BSteamNetworkingSocketsLowLevelAddRef", 500 );
|
||||
SteamNetworkingGlobalLock::SetLongLockWarningThresholdMS( "BSteamNetworkingSocketsLowLevelAddRef", 500 );
|
||||
|
||||
// Initialize COM
|
||||
#ifdef _XBOX_ONE
|
||||
@@ -1993,7 +1993,7 @@ bool BSteamNetworkingSocketsLowLevelAddRef( SteamDatagramErrMsg &errMsg )
|
||||
{
|
||||
s_bInstalledAtExitHandler = true;
|
||||
atexit( []{
|
||||
SteamDatagramTransportLock scopeLock( "atexit" );
|
||||
SteamNetworkingGlobalLock scopeLock( "atexit" );
|
||||
|
||||
// Static destruction is about to happen. If we have a thread,
|
||||
// we need to nuke it
|
||||
@@ -2008,7 +2008,7 @@ bool BSteamNetworkingSocketsLowLevelAddRef( SteamDatagramErrMsg &errMsg )
|
||||
|
||||
void SteamNetworkingSocketsLowLevelDecRef()
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
// Last user is now done?
|
||||
int nLastRefCount = s_nLowLevelSupportRefCount.fetch_sub(1, std::memory_order_acq_rel);
|
||||
@@ -2022,7 +2022,7 @@ void SteamNetworkingSocketsLowLevelDecRef()
|
||||
// There is a potential race condition / deadlock with the service thread,
|
||||
// that might cause us to have to wait for it to timeout. And the OS
|
||||
// might need to do stuff when we close a bunch of sockets (and WSACleanup)
|
||||
SteamDatagramTransportLock::SetLongLockWarningThresholdMS( "SteamNetworkingSocketsLowLevelDecRef", 500 );
|
||||
SteamNetworkingGlobalLock::SetLongLockWarningThresholdMS( "SteamNetworkingSocketsLowLevelDecRef", 500 );
|
||||
|
||||
if ( s_vecRawSockets.IsEmpty() )
|
||||
{
|
||||
@@ -2165,7 +2165,7 @@ STEAMNETWORKINGSOCKETS_INTERFACE void SteamNetworkingSockets_SetManualPollMode(
|
||||
{
|
||||
if ( s_bManualPollMode == bFlag )
|
||||
return;
|
||||
SteamDatagramTransportLock scopeLock( "SteamNetworkingSockets_SetManualPollMode" );
|
||||
SteamNetworkingGlobalLock scopeLock( "SteamNetworkingSockets_SetManualPollMode" );
|
||||
s_bManualPollMode = bFlag;
|
||||
|
||||
// Check for starting/stopping the thread
|
||||
@@ -2198,7 +2198,7 @@ STEAMNETWORKINGSOCKETS_INTERFACE void SteamNetworkingSockets_Poll( int msMaxWait
|
||||
}
|
||||
Assert( s_nLowLevelSupportRefCount.load(std::memory_order_acquire) > 0 );
|
||||
|
||||
while ( !SteamDatagramTransportLock::TryLock( "SteamNetworkingSockets_Poll", 1 ) )
|
||||
while ( !SteamNetworkingGlobalLock::TryLock( "SteamNetworkingSockets_Poll", 1 ) )
|
||||
{
|
||||
if ( --msMaxWaitTime <= 0 )
|
||||
return;
|
||||
@@ -2206,7 +2206,7 @@ STEAMNETWORKINGSOCKETS_INTERFACE void SteamNetworkingSockets_Poll( int msMaxWait
|
||||
|
||||
bool bStillLocked = SteamNetworkingSockets_InternalPoll( msMaxWaitTime, true );
|
||||
if ( bStillLocked )
|
||||
SteamDatagramTransportLock::Unlock();
|
||||
SteamNetworkingGlobalLock::Unlock();
|
||||
}
|
||||
|
||||
STEAMNETWORKINGSOCKETS_INTERFACE void SteamNetworkingSockets_SetLockWaitWarningThreshold( SteamNetworkingMicroseconds usecTheshold )
|
||||
|
||||
@@ -304,10 +304,10 @@ extern void SteamNetworkingSocketsLowLevelDecRef();
|
||||
/// Scope lock object used to synchronize access to internal data structures. We use a global lock,
|
||||
/// even though in some cases it might not be necessary, to simplify the code, since in most cases
|
||||
/// there will be very little contention and the should be held only for a short amount of time.
|
||||
struct SteamDatagramTransportLock
|
||||
struct SteamNetworkingGlobalLock
|
||||
{
|
||||
inline SteamDatagramTransportLock( const char *pszTag = nullptr ) { Lock( pszTag ); }
|
||||
inline ~SteamDatagramTransportLock() { Unlock(); }
|
||||
inline SteamNetworkingGlobalLock( const char *pszTag = nullptr ) { Lock( pszTag ); }
|
||||
inline ~SteamNetworkingGlobalLock() { Unlock(); }
|
||||
static void Lock( const char *pszTag );
|
||||
static bool TryLock( const char *pszTag, int msTimeout );
|
||||
static void Unlock();
|
||||
|
||||
@@ -509,7 +509,7 @@ void CSteamNetworkConnectionP2P::CheckInitICE()
|
||||
{
|
||||
SteamNetworkingErrMsg errMsg;
|
||||
tried = true;
|
||||
SteamDatagramTransportLock::SetLongLockWarningThresholdMS( "LoadICEDll", 500 );
|
||||
SteamNetworkingGlobalLock::SetLongLockWarningThresholdMS( "LoadICEDll", 500 );
|
||||
static const char pszExportFunc[] = "CreateWebRTCICESession";
|
||||
|
||||
#if defined( _WINDOWS )
|
||||
@@ -761,7 +761,7 @@ void CSteamNetworkConnectionP2P::DestroyICENow()
|
||||
#ifdef STEAMNETWORKINGSOCKETS_ENABLE_ICE
|
||||
void CSteamNetworkConnectionP2P::ICEFailed( int nReasonCode, const char *pszReason )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
// Remember reason code, if we didn't already set one
|
||||
if ( GetICEFailureCode() == 0 )
|
||||
@@ -2203,7 +2203,7 @@ HSteamListenSocket CSteamNetworkingSockets::CreateListenSocketP2P( int nLocalVir
|
||||
return k_HSteamListenSocket_Invalid;
|
||||
}
|
||||
|
||||
SteamDatagramTransportLock scopeLock( "CreateListenSocketP2P" );
|
||||
SteamNetworkingGlobalLock scopeLock( "CreateListenSocketP2P" );
|
||||
|
||||
CSteamNetworkListenSocketP2P *pSock = InternalCreateListenSocketP2P( nLocalVirtualPort, nOptions, pOptions );
|
||||
if ( pSock )
|
||||
@@ -2277,7 +2277,7 @@ HSteamNetConnection CSteamNetworkingSockets::ConnectP2P( const SteamNetworkingId
|
||||
return k_HSteamNetConnection_Invalid;
|
||||
}
|
||||
|
||||
SteamDatagramTransportLock scopeLock( "ConnectP2P" );
|
||||
SteamNetworkingGlobalLock scopeLock( "ConnectP2P" );
|
||||
CSteamNetworkConnectionBase *pConn = InternalConnectP2PDefaultSignaling( identityRemote, nRemoteVirtualPort, nOptions, pOptions );
|
||||
if ( pConn )
|
||||
return pConn->m_hConnectionSelf;
|
||||
@@ -2370,7 +2370,7 @@ HSteamNetConnection CSteamNetworkingSockets::ConnectP2PCustomSignaling( ISteamNe
|
||||
if ( !pSignaling )
|
||||
return k_HSteamNetConnection_Invalid;
|
||||
|
||||
SteamDatagramTransportLock scopeLock( "ConnectP2PCustomSignaling" );
|
||||
SteamNetworkingGlobalLock scopeLock( "ConnectP2PCustomSignaling" );
|
||||
CSteamNetworkConnectionBase *pConn = InternalConnectP2P( pSignaling, pPeerIdentity, nRemoteVirtualPort, nOptions, pOptions );
|
||||
if ( pConn )
|
||||
return pConn->m_hConnectionSelf;
|
||||
@@ -2551,7 +2551,7 @@ bool CSteamNetworkingSockets::InternalReceivedP2PSignal( const void *pMsg, int c
|
||||
int nLogLevel = m_connectionConfig.m_LogLevel_P2PRendezvous.Get();
|
||||
|
||||
// Grab the lock now. (We might not have previously held it.)
|
||||
SteamDatagramTransportLock lock( "ReceivedP2PSignal" );
|
||||
SteamNetworkingGlobalLock lock( "ReceivedP2PSignal" );
|
||||
|
||||
SteamNetworkingMicroseconds usecNow = SteamNetworkingSockets_GetLocalTimestamp();
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ void CConnectionTransportP2PICE::Init()
|
||||
return;
|
||||
}
|
||||
|
||||
SteamDatagramTransportLock::SetLongLockWarningThresholdMS( "CConnectionTransportP2PICE::Init", 50 );
|
||||
SteamNetworkingGlobalLock::SetLongLockWarningThresholdMS( "CConnectionTransportP2PICE::Init", 50 );
|
||||
|
||||
ICESessionConfig cfg;
|
||||
|
||||
@@ -717,7 +717,7 @@ void CConnectionTransportP2PICE::OnData( const void *pPkt, size_t nSize )
|
||||
|
||||
// See if we can process this packet (and anything queued before us)
|
||||
// immediately
|
||||
if ( SteamDatagramTransportLock::TryLock( "ICE Data", 0 ) )
|
||||
if ( SteamNetworkingGlobalLock::TryLock( "ICE Data", 0 ) )
|
||||
{
|
||||
// We can process the data now!
|
||||
//SpewMsg( "CConnectionTransportP2PICE::OnData %d bytes, process immediate\n", (int)nSize );
|
||||
@@ -733,7 +733,7 @@ void CConnectionTransportP2PICE::OnData( const void *pPkt, size_t nSize )
|
||||
|
||||
// And now process this packet
|
||||
ProcessPacket( (const uint8_t*)pPkt, cbPkt, usecNow );
|
||||
SteamDatagramTransportLock::Unlock();
|
||||
SteamNetworkingGlobalLock::Unlock();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1779,7 +1779,7 @@ EUnsignedCert CSteamNetworkConnectionlocalhostLoopback::AllowLocalUnsignedCert()
|
||||
|
||||
bool CSteamNetworkConnectionlocalhostLoopback::APICreateSocketPair( CSteamNetworkingSockets *pSteamNetworkingSocketsInterface, CSteamNetworkConnectionlocalhostLoopback *pConn[2], const SteamNetworkingIdentity pIdentity[2] )
|
||||
{
|
||||
SteamDatagramTransportLock::AssertHeldByCurrentThread();
|
||||
SteamNetworkingGlobalLock::AssertHeldByCurrentThread();
|
||||
|
||||
SteamDatagramErrMsg errMsg;
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ static void DebugOutput( ESteamNetworkingSocketsDebugOutputType eType, const cha
|
||||
// is occasionally triggering this assert. Just ignroe that one
|
||||
// error for now.
|
||||
// Yes, this is a kludge.
|
||||
if ( strstr( pszMsg, "SteamDatagramTransportLock held for" ) )
|
||||
if ( strstr( pszMsg, "SteamNetworkingGlobalLock held for" ) )
|
||||
return;
|
||||
|
||||
assert( !"TEST FAILED" );
|
||||
|
||||
Reference in New Issue
Block a user