2023-02-04 21:00:01 +01:00
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "sciInterface.h"
|
|
|
|
|
|
|
|
|
|
|
|
/* PRIVATE INTERFACE FUNCTIONS -- SCMAIN.C CONTAINS PUBLIC INTERFACE */
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2024-09-19 10:52:47 +02:00
|
|
|
// This is declared as an extern so it can be overridden when testing
|
2023-02-04 21:00:01 +01:00
|
|
|
#define SC_SERVICE_URL_FORMAT "http://%s.comp.pubsvs." GSI_DOMAIN_NAME "/CompetitionService/CompetitionService.asmx"
|
|
|
|
char scServiceURL[SC_SERVICE_MAX_URL_LEN] = "";
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
SCResult sciInterfaceCreate(SCInterface** theInterfaceOut)
|
|
|
|
{
|
|
|
|
#ifdef GSI_SC_STATIC_MEM
|
|
|
|
static SCInterface gStaticInterface;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
GS_ASSERT(theInterfaceOut != NULL);
|
|
|
|
|
|
|
|
// Check to see if the availability check has been performed and if it has
|
|
|
|
// set the service URL prepended with the gamename
|
|
|
|
if (__GSIACResult == GSIACAvailable)
|
|
|
|
{
|
|
|
|
if (scServiceURL[0] == '\0')
|
|
|
|
snprintf(scServiceURL, SC_SERVICE_MAX_URL_LEN, SC_SERVICE_URL_FORMAT, __GSIACGamename);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return SCResult_NO_AVAILABILITY_CHECK;
|
|
|
|
|
|
|
|
#ifdef GSI_SC_STATIC_MEM
|
|
|
|
*theInterfaceOut = &gStaticInterface;
|
|
|
|
#else
|
|
|
|
*theInterfaceOut = (SCInterface*)gsimalloc(sizeof(SCInterface));
|
|
|
|
if (*theInterfaceOut == NULL)
|
|
|
|
{
|
|
|
|
return SCResult_OUT_OF_MEMORY;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
GS_ASSERT(*theInterfaceOut != NULL);
|
|
|
|
memset(*theInterfaceOut, 0, sizeof(SCInterface));
|
|
|
|
return SCResult_NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
SCResult sciInterfaceInit(SCInterface* theInterface)
|
|
|
|
{
|
|
|
|
SCResult anInitResult = SCResult_NO_ERROR;
|
|
|
|
|
|
|
|
GS_ASSERT(theInterface != NULL);
|
|
|
|
|
|
|
|
anInitResult = sciWsInit(&theInterface->mWebServices, theInterface);
|
|
|
|
if (anInitResult != SCResult_NO_ERROR)
|
|
|
|
{
|
|
|
|
return anInitResult;
|
|
|
|
}
|
|
|
|
|
|
|
|
memset(theInterface->mSessionId, 0, sizeof(theInterface->mSessionId));
|
|
|
|
memset(theInterface->mConnectionId, 0, sizeof(theInterface->mConnectionId));
|
|
|
|
|
|
|
|
theInterface->mInit = gsi_true;
|
|
|
|
return SCResult_NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
void sciInterfaceDestroy(SCInterface* theInterface)
|
|
|
|
{
|
|
|
|
GS_ASSERT(theInterface != NULL);
|
|
|
|
GS_ASSERT(theInterface->mInit);
|
|
|
|
|
|
|
|
sciWsDestroy(&theInterface->mWebServices);
|
|
|
|
|
|
|
|
memset(theInterface->mSessionId, 0, sizeof(theInterface->mSessionId));
|
|
|
|
memset(theInterface->mConnectionId, 0, sizeof(theInterface->mConnectionId));
|
|
|
|
theInterface->mSessionId[0] = 0xde;
|
|
|
|
theInterface->mSessionId[1] = 0xad;
|
|
|
|
theInterface->mConnectionId[0] = 0xde;
|
|
|
|
theInterface->mConnectionId[1] = 0xad;
|
|
|
|
|
|
|
|
theInterface->mInit = gsi_false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
void sciInterfaceSetSessionId(SCInterface * theInterface, const char * theSessionId)
|
|
|
|
{
|
|
|
|
GS_ASSERT(theInterface != NULL);
|
|
|
|
|
|
|
|
if (theSessionId == NULL)
|
|
|
|
theInterface->mSessionId[0] = '\0';
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GS_ASSERT(strlen(theSessionId) < sizeof(theInterface->mSessionId));
|
|
|
|
strcpy((char *)theInterface->mSessionId, theSessionId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
void sciInterfaceSetConnectionId(SCInterface * theInterface, const char * theConnectionId)
|
|
|
|
{
|
|
|
|
GS_ASSERT(theInterface != NULL);
|
|
|
|
|
|
|
|
if (theConnectionId == NULL)
|
|
|
|
theInterface->mConnectionId[0] = '\0';
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GS_ASSERT(strlen(theConnectionId) < sizeof(theInterface->mConnectionId));
|
|
|
|
strcpy((char *)theInterface->mConnectionId, theConnectionId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|