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

121 lines
4.2 KiB
C

/*H*************************************************************************************/
/*!
\File dirtysessionmanager.h
\Description
DirtySessionManager handles the creation, joinning and leaving of
a session. Offers mechanism to encode and decode the session, and does some
session flags management
\Notes
\Copyright
Copyright (c) Electronic Arts 2003-2007
\Version 1.0 11/03/2003 (jbrookes) First Version
\Version 2.0 11/04/2007 (jbrookes) Removed from ProtoMangle namespace, cleanup
\Version 2.2 10/26/2009 (mclouatre) Renamed from core/include/dirtysessionmanager.h to core/include/xenon/dirtysessionmanagerxenon.h
\Version 2.3 03/26/2013 (cvienneau) Renamed from core/include/xenon/dirtysessionmanagerxenon.h to core/include/dirtysessionmanager.h
*/
/*************************************************************************************H*/
#ifndef _dirtysessionmanager_h
#define _dirtysessionmanager_h
/*!
\Moduledef DirtySessionManager DirtySessionManager
\Modulemember DirtySock
*/
//@{
/*** Include files *********************************************************************/
#include "DirtySDK/platform.h"
#include "DirtySDK/dirtysock/dirtyaddr.h"
/*** Defines ***************************************************************************/
#define DIRTYSESSIONMANAGER_FLAG_PUBLICSLOT (1)
#define DIRTYSESSIONMANAGER_FLAG_PRIVATESLOT (2)
#if defined(DIRTYCODE_PS4)
#define DIRTY_SESSION_GAME_MODE_LENGTH 257
#endif
/*** Macros ****************************************************************************/
/*** Type Definitions ******************************************************************/
typedef struct DirtySessionManagerRefT DirtySessionManagerRefT;
#if DIRTYCODE_DEBUG
//! true skill values struct
typedef struct DirtySessionManagerTrueSkillRefT //!< true skill struct used for debugging
{
double dMu;
double dSigma;
} DirtySessionManagerTrueSkillRefT;
#endif
#if defined(DIRTYCODE_PS4)
//!< data that we control within the binary blob portion of the session
typedef struct DirtySessionManagerBinaryHeaderT
{
int64_t iLobbyId;
int64_t iGameType;
} DirtySessionManagerBinaryHeaderT;
//!< data that we control within the changeable binary blob portion of the session
typedef struct DirtySessionManagerChangeableBinaryHeaderT
{
char strGameMode[DIRTY_SESSION_GAME_MODE_LENGTH];
} DirtySessionManagerChangeableBinaryHeaderT;
#endif
/*** Variables *************************************************************************/
/*** Functions *************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
// allocate module state and prepare for use
DirtySessionManagerRefT *DirtySessionManagerCreate(void);
// destroy the module and release its state
void DirtySessionManagerDestroy(DirtySessionManagerRefT *pRef);
// give time to module to do its thing (should be called periodically to allow module to perform work)
void DirtySessionManagerUpdate(DirtySessionManagerRefT *pRef);
// join one (or many) remote player(s) by specifying the session and type of slot to use
void DirtySessionManagerConnect(DirtySessionManagerRefT *pRef, const char **pSessID, uint32_t *pSlot, uint32_t uCount);
// dirtysessionmanager control
int32_t DirtySessionManagerControl(DirtySessionManagerRefT *pRef, int32_t iControl, int32_t iValue, int32_t iValue2, const void *pValue);
// get module status based on selector
int32_t DirtySessionManagerStatus(DirtySessionManagerRefT *pRef, int32_t iSelect, void *pBuf, int32_t iBufSize);
// get module status based on selector
int32_t DirtySessionManagerStatus2(DirtySessionManagerRefT *pRef, int32_t iSelect, int32_t iValue, int32_t iValue2, int32_t iValue3, void *pBuf, int32_t iBufSize);
// encode
void DirtySessionManagerEncodeSession(char *pBuffer, int32_t iBufSize, const void *pSessionInfo);
// decode
void DirtySessionManagerDecodeSession(void *pSessionInfo, const char *pBuffer);
// create the session (previously the 'sess' control selector)
int32_t DirtySessionManagerCreateSess(DirtySessionManagerRefT *pRef, uint32_t bRanked, uint32_t *uUserFlags, const char *pSession, DirtyAddrT *pLocalAddrs);
#ifdef __cplusplus
}
#endif
//@}
#endif // _dirtysessionmanager_h