1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
/*
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
|