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
|
/*
GameSpy GHTTP SDK
Dan "Mr. Pants" Schoenblum
dan@gamespy.com
Copyright 1999-2007 GameSpy Industries, Inc
devsupport@gamespy.com
*/
#include "ghttpCallbacks.h"
#include "ghttpPost.h"
void ghiCallCompletedCallback
(
GHIConnection * connection
)
{
GHTTPBool freeBuffer;
char * buffer;
GHTTPByteCount bufferLen;
assert(connection);
#ifdef GSI_COMMON_DEBUG
if(connection->result != GHTTPSuccess)
{
gsDebugFormat(GSIDebugCat_HTTP, GSIDebugType_Network, GSIDebugLevel_WarmError,
"Socket Error: %d\n", connection->socketError);
}
#endif
// Check for no callback.
/////////////////////////
if(!connection->completedCallback)
return;
// Figure out the buffer/bufferLen parameters.
//////////////////////////////////////////////
if(connection->type == GHIGET)
{
buffer = connection->getFileBuffer.data;
}
else
{
buffer = NULL;
}
bufferLen = connection->fileBytesReceived;
// Call the callback.
/////////////////////
freeBuffer = connection->completedCallback(
connection->request,
connection->result,
buffer,
bufferLen,
connection->callbackParam);
// Check for gsifree.
//////////////////
if(buffer && !freeBuffer)
connection->getFileBuffer.dontFree = GHTTPTrue;
}
void ghiCallProgressCallback
(
GHIConnection * connection,
const char * buffer,
GHTTPByteCount bufferLen
)
{
assert(connection);
// Check for no callback.
/////////////////////////
if(!connection->progressCallback)
return;
// Call the callback.
/////////////////////
connection->progressCallback(
connection->request,
connection->state,
buffer,
bufferLen,
connection->fileBytesReceived,
connection->totalSize,
connection->callbackParam
);
}
void ghiCallPostCallback
(
GHIConnection * connection
)
{
assert(connection);
// Check for no callback.
/////////////////////////
if(!connection->postingState.callback)
return;
// Call the callback.
/////////////////////
connection->postingState.callback(
connection->request,
connection->postingState.bytesPosted,
connection->postingState.totalBytes,
connection->postingState.index,
ArrayLength(connection->postingState.states),
connection->callbackParam
);
}
|