You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.1 KiB
97 lines
3.1 KiB
/*** |
|
* |
|
* Copyright (c) 1996-2002, Valve LLC. All rights reserved. |
|
* |
|
* This product contains software technology licensed from Id |
|
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc. |
|
* All Rights Reserved. |
|
* |
|
* Use, distribution, and modification of this source code and/or resulting |
|
* object code is restricted to non-commercial enhancements to products from |
|
* Valve LLC. All other use, distribution, or modification is prohibited |
|
* without written permission from Valve LLC. |
|
* |
|
****/ |
|
#pragma once |
|
#if !defined(NET_API_H) |
|
#define NET_API_H |
|
|
|
#include "netadr.h" |
|
|
|
#define NETAPI_REQUEST_SERVERLIST ( 0 ) // Doesn't need a remote address |
|
#define NETAPI_REQUEST_PING ( 1 ) |
|
#define NETAPI_REQUEST_RULES ( 2 ) |
|
#define NETAPI_REQUEST_PLAYERS ( 3 ) |
|
#define NETAPI_REQUEST_DETAILS ( 4 ) |
|
|
|
// Set this flag for things like broadcast requests, etc. where the engine should not |
|
// kill the request hook after receiving the first response |
|
#define FNETAPI_MULTIPLE_RESPONSE ( 1<<0 ) |
|
|
|
typedef void (*net_api_response_func_t) ( struct net_response_s *response ); |
|
|
|
#define NET_SUCCESS ( 0 ) |
|
#define NET_ERROR_TIMEOUT ( 1<<0 ) |
|
#define NET_ERROR_PROTO_UNSUPPORTED ( 1<<1 ) |
|
#define NET_ERROR_UNDEFINED ( 1<<2 ) |
|
|
|
typedef struct net_adrlist_s |
|
{ |
|
struct net_adrlist_s *next; |
|
netadr_t remote_address; |
|
} net_adrlist_t; |
|
|
|
typedef struct net_response_s |
|
{ |
|
// NET_SUCCESS or an error code |
|
int error; |
|
// Context ID |
|
int context; |
|
// Type |
|
int type; |
|
// Server that is responding to the request |
|
netadr_t remote_address; |
|
// Response RTT ping time |
|
double ping; |
|
// Key/Value pair string ( separated by backlash \ characters ) |
|
// WARNING: You must copy this buffer in the callback function, because it is freed |
|
// by the engine right after the call!!!! |
|
// ALSO: For NETAPI_REQUEST_SERVERLIST requests, this will be a pointer to a linked list of net_adrlist_t's |
|
void *response; |
|
} net_response_t; |
|
|
|
typedef struct net_status_s |
|
{ |
|
// Connected to remote server? 1 == yes, 0 otherwise |
|
int connected; |
|
// Client's IP address |
|
netadr_t local_address; |
|
// Address of remote server |
|
netadr_t remote_address; |
|
// Packet Loss ( as a percentage ) |
|
int packet_loss; |
|
// Latency, in seconds ( multiply by 1000.0 to get milliseconds ) |
|
double latency; |
|
// Connection time, in seconds |
|
double connection_time; |
|
// Rate setting ( for incoming data ) |
|
double rate; |
|
} net_status_t; |
|
|
|
typedef struct net_api_s |
|
{ |
|
// APIs |
|
void (*InitNetworking)( void ); |
|
void (*Status )( struct net_status_s *status ); |
|
void (*SendRequest)( int context, int request, int flags, double timeout, struct netadr_s *remote_address, net_api_response_func_t response ); |
|
void (*CancelRequest)( int context ); |
|
void (*CancelAllRequests)( void ); |
|
char *(*AdrToString)( struct netadr_s *a ); |
|
int ( *CompareAdr)( struct netadr_s *a, struct netadr_s *b ); |
|
int ( *StringToAdr)( char *s, struct netadr_s *a ); |
|
const char *(*ValueForKey)( const char *s, const char *key ); |
|
void (*RemoveKey)( char *s, const char *key ); |
|
void (*SetValueForKey)( char *s, const char *key, const char *value, int maxsize ); |
|
} net_api_t; |
|
|
|
#endif // NET_APIH
|
|
|