openmohaa/code/gamespy/ghttp/ghttpCommon.h

155 lines
3.3 KiB
C
Raw Permalink Normal View History

2023-02-04 21:00:01 +01:00
/*
GameSpy GHTTP SDK
Dan "Mr. Pants" Schoenblum
dan@gamespy.com
Copyright 1999-2007 GameSpy Industries, Inc
devsupport@gamespy.com
*/
#ifndef _GHTTPCOMMON_H_
#define _GHTTPCOMMON_H_
#include "ghttp.h"
#include "ghttpConnection.h"
#ifdef __cplusplus
extern "C" {
#endif
// HTTP Line-terminator.
////////////////////////
#define CRLF "\xD\xA"
// HTTP URL Encoding
////////////////////////
#define GHI_LEGAL_URLENCODED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_@-.*"
#define GHI_DIGITS "0123456789ABCDEF"
// Default HTTP port.
/////////////////////
#define GHI_DEFAULT_PORT 80
#define GHI_DEFAULT_SECURE_PORT 443
#define GHI_DEFAULT_THROTTLE_BUFFER_SIZE 125
#define GHI_DEFAULT_THROTTLE_TIME_DELAY 250
// Proxy server.
////////////////
extern char * ghiProxyAddress;
extern unsigned short ghiProxyPort;
// Throttle settings.
/////////////////////
extern int ghiThrottleBufferSize;
extern gsi_time ghiThrottleTimeDelay;
// Our thread lock.
///////////////////
void ghiCreateLock(void);
void ghiFreeLock(void);
void ghiLock(void);
void ghiUnlock(void);
// Do logging.
//////////////
#ifdef HTTP_LOG
void ghiLogToFile
(
const char * buffer,
int len,
const char * fileName
);
#define ghiLogRequest(b,c) ghiLogToFile(b,c,"request.log");
#define ghiLogResponse(b,c) ghiLogToFile(b,c,"response.log");
#define ghiLogPost(b,c) ghiLogToFile(b,c,"post.log");
#else
#define ghiLogRequest(b,c)
#define ghiLogResponse(b,c)
#define ghiLogPost(b,c)
#endif
// Possible results from ghiDoReceive.
//////////////////////////////////////
typedef enum
{
GHIRecvData, // Data was received.
GHINoData, // No data was available.
GHIConnClosed, // The connection was closed.
GHIError // There was a socket error.
} GHIRecvResult;
// Receive some data.
/////////////////////
GHIRecvResult ghiDoReceive
(
GHIConnection * connection,
char buffer[],
int * bufferLen
);
// Do a send on the connection's socket.
// Returns number of bytes sent (0 or more).
// If error, returns (-1).
////////////////////////////////////////////
int ghiDoSend
(
GHIConnection * connection,
const char * buffer,
int len
);
// Results for ghtTrySendThenBuffer.
////////////////////////////////////
typedef enum
{
GHITrySendError, // There was an error sending.
GHITrySendSent, // Everything was sent.
GHITrySendBuffered // Some or all of the data was buffered.
} GHITrySendResult;
// Sends whatever it can on the socket.
// Buffers whatever can't be sent in the sendBuffer.
////////////////////////////////////////////////////
GHITrySendResult ghiTrySendThenBuffer
(
GHIConnection * connection,
const char * buffer,
int len
);
// Set the proxy server
////////////////////////
GHTTPBool ghiSetProxy
(
const char * server
);
// Set the proxy server for a specific request
////////////////////////
GHTTPBool ghiSetRequestProxy
(
GHTTPRequest request,
const char * server
);
// Set the throttle settings.
/////////////////////////////
void ghiThrottleSettings
(
int bufferSize,
gsi_time timeDelay
);
// Decrypt data from the decode buffer into the receive buffer.
///////////////////////////////////////////////////////////////
GHTTPBool ghiDecryptReceivedData(struct GHIConnection * connection);
#ifdef __cplusplus
}
#endif
#endif