mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-19 12:06:07 +08:00
150 lines
4.1 KiB
C++
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
|