mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
155 lines
3.3 KiB
C
155 lines
3.3 KiB
C
![]() |
/*
|
||
|
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
|