Kawe Mazidjatari b3a68ed095 Add EABase, EAThread and DirtySDK to R5sdk
DirtySDK (EA's Dirty Sockets library) will be used for the LiveAPI implementation, and depends on: EABase, EAThread.
2024-04-05 18:29:03 +02:00

93 lines
3.5 KiB
C

/*H********************************************************************************/
/*!
\File netconncommon.h
\Description
Cross-platform netconn data types and private functions.
\Copyright
Copyright (c) 2014 Electronic Arts Inc.
\Version 05/21/2009 (mclouatre) First Version
*/
/********************************************************************************H*/
#ifndef _netconncommon_h
#define _netconncommon_h
/*** Include files ****************************************************************/
#include "DirtySDK/dirtysock/netconn.h"
/*** Defines **********************************************************************/
// initial size of external cleanup list (in number of entries)
#define NETCONN_EXTERNAL_CLEANUP_LIST_INITIAL_CAPACITY (12)
/*** Macros ***********************************************************************/
/*** Type Definitions *************************************************************/
//! external cleanup callback function prototype
typedef int32_t(*NetConnExternalCleanupCallbackT)(void *pNetConnExternalCleanupData);
typedef struct NetConnExternalCleanupEntryT
{
void *pCleanupData; //!< pointer to data to be passed to the external cleanup callback
NetConnExternalCleanupCallbackT pCleanupCb;//!< external cleanup callback
} NetConnExternalCleanupEntryT;
typedef struct NetConnCommonRefT
{
// module memory group
int32_t iMemGroup; //!< module mem group id
void *pMemGroupUserData; //!< user data associated with mem group
int32_t iDebugLevel;
int32_t iExternalCleanupListMax; //!< maximum number of entries in the array
int32_t iExternalCleanupListCnt; //!< number of valid entries in the array
NetConnExternalCleanupEntryT *pExternalCleanupList; //!< pointer to an array of entries pending external cleanup completion
int32_t iRefCount; //!< module reference counter
NetConnAccountInfoT aAccountInfo[NETCONN_MAXLOCALUSERS]; //!< account info array
NetCritT crit;
} NetConnCommonRefT;
/*** Variables ********************************************************************/
/*** Functions ********************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
// handle common shutdown functionality
void NetConnCommonShutdown(NetConnCommonRefT *pCommonRef);
// handle common startup functionality
int32_t NetConnCommonStartup(int32_t iNetConnRefSize, const char *pParams, NetConnCommonRefT **pRef);
// add an entry to the list of external module pending successful cleanup
int32_t NetConnCommonAddToExternalCleanupList(NetConnCommonRefT *pCommonRef, NetConnExternalCleanupCallbackT pCleanupCb, void *pCleanupData);
// walk external cleanup list and try to destroy each individual entry
int32_t NetConnCommonProcessExternalCleanupList(NetConnCommonRefT *pCommonRef);
// decrement and verify the reference count for shutdown
int32_t NetConnCommonCheckRef(NetConnCommonRefT *pCommonRef);
// set module behavior based on input selector
int32_t NetConnCommonControl(NetConnCommonRefT *pCommonRef, int32_t iControl, int32_t iValue, int32_t iValue2, void *pValue, void *pValue2);
// check general network connection status (added param)
int32_t NetConnCommonStatus(NetConnCommonRefT *pCommonRef, int32_t iKind, int32_t iData, void *pBuf, int32_t iBufSize);
#ifdef __cplusplus
}
#endif
#endif // _netconcommon_h