1
0
mirror of https://github.com/alliedmodders/hl2sdk.git synced 2025-09-19 12:06:07 +08:00
Files
hl2sdk/public/networksystem/inetworksystem.h

150 lines
4.1 KiB
C++

//===== Copyright (c) 1996-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose:
//
//===========================================================================//
#ifndef INETWORKSYSTEM_H
#define INETWORKSYSTEM_H
#ifdef _WIN32
#pragma once
#endif
#include "tier0/platform.h"
#include "appframework/IAppSystem.h"
#include "inetchannel.h"
#include "tier1/bitbuf.h"
class IConnectionlessPacketHandler;
class INetworkConfigChanged;
class INetworkPacketFilter;
class INetworkFileDownloadFilter;
class INetworkFileSendCompleted;
class INetworkPrepareStartupParams;
class IPeerToPeerCallbacks;
class ISteamP2PAllowConnection;
class INetworkChannelNotify;
class NetScratchBuffer_t;
class CMsgSteamDatagramGameServerAuthTicket;
class CUtlStringToken;
class CPeerToPeerAddress;
enum ENSAddressType
{
kAddressDirect,
kAddressP2P,
kAddressProxiedGameServer,
kAddressProxiedClient,
kAddressMax
};
class ns_address
{
public:
const netadr_t &GetAddress() const { return m_Address; }
const CSteamID& GetSteamID() const { return m_ID; }
const uint16 GetRemotePort() const { return m_nRemotePort; }
ENSAddressType GetAddressType() const { return m_AddressType; }
private:
netadr_t m_Address;
CSteamID m_ID;
uint16 m_nRemotePort;
int m_Unknown;
ENSAddressType m_AddressType;
};
enum
{
NS_CLIENT = 0, // client socket
NS_SERVER, // server socket
NS_HLTV,
NS_P2P,
MAX_SOCKETS
};
enum ESteamP2PConnectionOwner {};
// Reverse engineered interface: return types may be wrong
abstract_class INetworkSystem : public IAppSystem
{
public:
virtual void InitGameServer() = 0;
virtual void ShutdownGameServer() = 0;
virtual int CreateSocket( int, int, int, int, int, const char * ) = 0;
virtual void OpenSocket( int sock ) = 0;
virtual void ConnectSocket( int sock, const netadr_t &adr ) = 0;
virtual bool IsSocketOpen( int sock ) = 0;
virtual void CloseSocket( int sock ) = 0;
virtual void EnableLoopbackBetweenSockets( int sock1, int sock2 ) = 0;
virtual void SetDefaultBroadcastPort( int port ) = 0;
virtual void PollSocket( int sock, IConnectionlessPacketHandler * ) = 0;
virtual void unk001() = 0;
virtual INetChannel *CreateNetChannel( int sock, const ns_address *adr, uint32 steam_handle, const char *, uint32, uint32 ) = 0;
virtual void RemoveNetChannel( INetChannel *netchan, bool ) = 0;
virtual bool RemoveNetChannelByAddress( int, const ns_address *adr ) = 0;
virtual void PrintNetworkStats() = 0;
virtual void unk101() = 0;
virtual void unk102() = 0;
virtual const char *DescribeSocket( int sock ) = 0;
virtual bool IsValidSocket( int sock ) = 0;
virtual void BufferToBufferCompress( uint8 *pDest, int &nDestSize, uint8 *pIn, unsigned int nInSize ) = 0;
virtual void BufferToBufferDecompress( uint8 *pDest, int &nDestSize, uint8 *pIn, unsigned int nInSize ) = 0;
virtual netadr_t &GetPublicAdr() = 0;
virtual netadr_t &GetLocalAdr() = 0;
virtual float GetFakeLag( int sock ) = 0;
virtual uint16 GetUDPPort( int sock ) = 0;
virtual void unk201() = 0;
virtual void unk202() = 0;
virtual void CloseAllSockets() = 0;
virtual NetScratchBuffer_t *GetScratchBuffer( void ) = 0;
virtual void PutScratchBuffer( NetScratchBuffer_t * ) = 0;
// Returns SteamNetworkingUtils004 interface
virtual void *GetSteamNetworkUtils() = 0;
// Returns SteamApi SteamNetworkingSockets012 interface
virtual void *GetSteamUserNetworkingSockets() = 0;
// Returns GameServer SteamNetworkingSockets012 interface
virtual void *GetSteamGameServerNetworkingSockets() = 0;
// Returns either User or GameServer SteamNetworkingSockets012 interface
virtual void *GetSteamNetworkingSockets() = 0;
// Returns SteamNetworkingMessages002 interface
virtual void *GetSteamNetworkingMessages() = 0;
virtual void unk301() = 0;
virtual void unk302() = 0;
virtual void RejectConnection( uint32 steam_handle, ENetworkDisconnectionReason reason, void * = nullptr ) = 0;
virtual void unk401() = 0;
virtual void unk402() = 0;
virtual void InitNetworkSystem() = 0;
virtual void unk501() = 0;
virtual void unk502() = 0;
virtual ~INetworkSystem() = 0;
};
DECLARE_TIER2_INTERFACE( INetworkSystem, g_pNetworkSystem );
#endif // INETWORKSYSTEM_H