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

95 lines
3.2 KiB
C

/*H********************************************************************************/
/*!
\File netconnlocaluser.h
\Description
Wrapper for EA::User::IEAUser functionality
\Copyright
Copyright (c) 2017 Electronic Arts Inc.
\Version 10/24/2017 (amakoukji) First Version
*/
/********************************************************************************H*/
#ifndef _netconnlocaluser_h
#define _netconnlocaluser_h
/*** Include files ****************************************************************/
/*** Defines **********************************************************************/
/*** Macros ***********************************************************************/
/*** Type Definitions *************************************************************/
struct NetConnRefT;
//! user event callback function prototype
typedef void (NetConnAddLocalUserCallbackT)(struct NetConnLocalUserRefT *pCommonRef, int32_t iLocalUserIndex, const EA::User::IEAUser *pIEAUser);
typedef void (NetConnRemoveLocalUserCallbackT)(struct NetConnLocalUserRefT *pCommonRef, int32_t iLocalUserIndex, const EA::User::IEAUser *pIEAUser);
typedef enum NetConnIEAUserEventTypeE
{
NETCONN_EVENT_IEAUSER_ADDED = 0,
NETCONN_EVENT_IEAUSER_REMOVED
} NetConnIEAUserEventTypeE;
typedef struct NetConnIEAUserEventT
{
struct NetConnIEAUserEventT *pNext; //!< linked list
const EA::User::IEAUser *pIEAUser; //!< IEAUser reference
NetConnIEAUserEventTypeE eEvent; //!< event type
int32_t iLocalUserIndex; //!< local user index
} NetConnIEAUserEventT;
typedef struct NetConnLocalUserRefT
{
// module memory group
int32_t iMemGroup; //!< module mem group id
void *pMemGroupUserData; //!< user data associated with mem group
int32_t iDebugLevel;
NetConnIEAUserEventT *pIEAUserFreeEventList; //!< list of free IEAUser
NetConnIEAUserEventT *pIEAUserEventList; //!< list of pending NetConnIEAUserEvents - populated by customers with NetConnAddLocaUser()/NetConnRemoveUser()
NetConnAddLocalUserCallbackT *pAddUserCb;
NetConnRemoveLocalUserCallbackT *pRemoveUserCb;
NetConnRefT *pNetConn; //!< parent
NetCritT crit;
} NetConnLocalUserRefT;
/*** Variables ********************************************************************/
/*** Functions ********************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
// handle shutdown functionality
void NetConnLocalUserDestroy(NetConnLocalUserRefT *pLocalUserRef);
// handle startup functionality
NetConnLocalUserRefT* NetConnLocalUserInit(NetConnRefT *pNetConn, NetConnAddLocalUserCallbackT *pAddUserCb, NetConnRemoveLocalUserCallbackT *pRemoveUserCb);
// handle add user functionality
int32_t NetConnLocalUserAdd(int32_t iLocalUserIndex, const EA::User::IEAUser *pLocalUser);
// handle remove user functionality
int32_t NetConnLocalUserRemove(int32_t iLocalUserIndex, const EA::User::IEAUser *pLocalUser);
// handle user update functionality
void NetConnLocalUserUpdate(NetConnLocalUserRefT *pLocalUserRef);
#ifdef __cplusplus
}
#endif
#endif // _netconnlocaluser_h