11 #include "RNPlatform/Inc/MemoryTracking.h"
12 #ifndef __REPLICANET_H__
13 #define __REPLICANET_H__
15 #define _REPLICANET_VERSION 7300
19 #include "RNXPURL/Inc/Transport.h"
20 #include "RNPlatform/Inc/SysTime.h"
22 namespace RNReplicaNet
26 class ReplicaNetPrivate;
27 struct s_RO_RegistryBlock;
28 struct DataBlockReason;
32 class DynamicMessageHelper;
34 const int kReplicaNetUnknownUniqueID = -1;
35 const int kReplicaNetBroadcastID = -2;
36 const int kReplicaNetRecordID = -3;
120 kReplicaNet_ETRANSPORT_CLOSED = -2,
121 kReplicaNet_ETRANSPORT_ERROR = -3,
122 kReplicaNet_EEND_RECORDING = -4
127 kPacket_Unreliable = 0,
128 kPacket_Reliable = 1,
190 void SessionCreate(
const std::string name,
const std::string protocols);
262 virtual SysTimeType
GetTime(
void);
363 void GiveOwnership(ReplicaObject *
const object,
const int sessionID);
451 kMigrateObjectsToNewMaster
532 float GetTotalLoad(
int sessionID = kReplicaNetUnknownUniqueID);
554 ReplicaObject *
ObjectListFind(
const int sessionID,
const int uniqueID);
590 void Disconnect(
const int sessionID = kReplicaNetUnknownUniqueID);
643 void DataSend(
const int sessionid,
const void *data,
const int length,
const PacketType type = kPacket_Reliable,
const unsigned int band = 0);
653 bool DataReceive(
int *
const fromsessionid,
void *
const data,
int *
const length,PacketType *
const type = 0);
662 bool DataReceivePeek(
int *
const fromsessionid,
int *
const length,PacketType *
const type = 0);
709 void GetMergedStatistics(
int *
const sent=0,
int *
const received=0,
const bool reset =
false);
746 bool GetBandwidthFromSessionID(
const int sessionID,Transport::Bandwidth *
const bandwidth,
int *
const output,
int *
const input);
757 virtual ReplicaObject *
CallBackAllocate(
const int classID,
const int sessionID,
const int uniqueID);
906 int GetMaximumDataSize(
void)
const;
917 int GetPacketCompressionLevel(
void);
918 int GetLargePacketCompressionLevel(
void);
935 friend class ReplicaObject;
936 friend class ReplicaNetPrivate;
937 friend class ReplicaNetDLLRegister;
943 void AddObject(ReplicaObject *
const object);
952 void RemoveObject(ReplicaObject *
const object,
const bool sendDelete =
true);
958 bool GetMakeMaster(
void);
964 int GetMakeUniqueID(
void);
970 int GetMakeSessionID(
void);
972 void LoadChangedForObject(ReplicaObject *
object,
float previousLoad,
float newLoad);
976 ReplicaNetPrivate* mPrivateReplicaNet;
978 void AddItem(s_RO_RegistryBlock *block);
986 ReplicaObject* AllocateReplicaObject(
const int class_id,
const int sessionid,
const int uniqueid,
const int reflect = kReplicaNetUnknownUniqueID);
988 void ReplicaObjectDataSend(
const int sessionid,
const void *data,
const int length,
const ReplicaNet::PacketType type = ReplicaNet::kPacket_Reliable,ReplicaObject *source = 0,
const unsigned int band = 0);
1005 extern void *_gReplicaNet_PreRegisterReplicasFunc;
void SetOnSessionError(const OnError whatToDo=kMigrateObjects)
void ObjectListBeginIterate(void)
void GetCompressionStatistics(int *const before=0, int *const after=0, const bool reset=false)
void SetSessionIDCallback(const bool enable=false)
virtual void JoinerSessionIDPost(const int sessionID)
void StopSessionRecord(void)
virtual ReplicaObject * CallBackAllocate(const int classID, const int sessionID, const int uniqueID)
void RequestOwnership(ReplicaObject *const object)
Definition: ReplicaNet.h:994
void SetMaximumLoad(float load=0.0f)
void SetManualPollXPURL(void)
void SessionJoin(const std::string url)
void GetMergedStatistics(int *const sent=0, int *const received=0, const bool reset=false)
float GetTotalLoad(int sessionID=kReplicaNetUnknownUniqueID)
virtual void CallbackMasterSessionIDChanged(const int previousSessionID)
Error
Definition: ReplicaNet.h:116
virtual void JoinerSessionIDPre(const int sessionID)
void SetPlaybackSpeed(const float speed=1.0f)
void SetAutomaticPollXPURL(void)
void SetMaximumDataSize(const int bytes=64 *1024)
virtual int CallbackGetSessionID(void)
static void SetCurrentReplicaNet(ReplicaNet *const replicanet)
void SessionCreate(const std::string name)
std::string GetURLFromSessionID(const int sessionID)
void SetObserver(ReplicaObject *const object=0)
void SetClientOnly(const bool isClient=false)
void StopSessionPlayback(void)
bool PlaybackAdvanceTo(const SysTimeType time)
float GetLatencyToSessionID(const int sessionID)
virtual ReplicaObject * CallBackDelete(ReplicaObject *object)
ReplicaObject * GetObserver(void)
bool GetPollLayerBelowForXPSession(void)
std::string SessionEnumerateFound(void)
void ObjectListFinishIterate(void)
virtual void PreRegisterReplicas(void)
float GetLatencyToMasterSession(void)
float GetNetworkReceiveRate(void)
bool GetSessionRecord(void) const
int GetNetworkPacketsRejected(void)
void SetPreConnect(const bool enable=false)
void SetCanAcceptObjects(bool accept=true)
bool DataReceive(int *const fromsessionid, void *const data, int *const length, PacketType *const type=0)
bool GetAllowConnections(void)
ReplicaObject * ObjectListFind(const int sessionID, const int uniqueID)
virtual void CallbackPlaybackAdvanceToFinished(void)
virtual void LeaverSessionIDPost(const int sessionID)
float GetMaximumLoad(int sessionID=kReplicaNetUnknownUniqueID)
void SetPacketCompressionLevel(const int level=10)
bool GetPreConnectStatus(void)
bool GetAutomaticPacketCompression(void)
Definition: ReplicaNet.h:118
Error GetSessionErrorReason(void)
static ReplicaNet * GetCurrentReplicaNet(void)
void SetGameChannel(const int channel=TransportAnyGameChannel)
bool BeginSessionRecord(void)
bool GetBandwidthFromSessionID(const int sessionID, Transport::Bandwidth *const bandwidth, int *const output, int *const input)
void SetPollLayerBelow(bool enable=true)
bool DataReceivePeek(int *const fromsessionid, int *const length, PacketType *const type=0)
void SetDataBlockUpdatePolicy(const bool automatic=true)
bool GetDataRetention(void) const
int GetNetworkPacketsLost(void)
bool GetCanBecomeMaster(void)
void SetTransparentPacketCompression(const int level=0)
void SetManualPollXPSession(void)
Definition: ReplicaNet.h:110
virtual SysTimeType GetTime(void)
void SetLatencyRecalculationDelay(const float seconds=1.0f)
void ProcessDataBlockUpdate(void)
void SetEncryption(const bool enable=false)
virtual bool CallbackSessionRecord(const void *data, const int length)
Definition: ReplicaNet.h:119
void SetLoadBalancing(const bool enable=false)
virtual SysTimeType GetLocalTime(void)
bool GetCanAcceptObjects(void)
virtual bool CallbackSessionPlayback(void *data, const int length)
void SetAutomaticPoll(void)
void DataSend(const int sessionid, const void *data, const int length, const PacketType type=kPacket_Reliable, const unsigned int band=0)
virtual void LeaverSessionIDPre(const int sessionID)
void SetCanSpider(const bool canSpider=true)
virtual int CallbackGetObjectUniqueID(ReplicaObject *object)
bool GetNodeBuffers(void)
void SetPlaybackAllowMasterReplicaObjects(const bool allow=false)
bool GetPlaybackAllowMasterReplicaObjects(void)
void SetDataRetention(const bool enable=false)
int GetTransparentPacketCompression(void)
void SetAutomaticPollXPSession(void)
bool GetSessionPlayback(void) const
ReplicaObject * ObjectListIterate(void)
void SetLargePacketCompressionLevel(const int level=5)
bool BeginSessionPlayback(void)
void SetAllowConnections(const bool allow=true)
bool GetDataBlockUpdatePolicy(void) const
void GiveOwnership(ReplicaObject *const object, const int sessionID)
void PreConnectHasFinished(void)
float GetNetworkSendRate(void)
void SetPollLayerBelowForXPSession(bool enable=true)
std::string SessionExportURL(void)
void Disconnect(const int sessionID=kReplicaNetUnknownUniqueID)
bool GetLoadBalancing(void)
void SetNodeBuffers(const bool enable=false)
void SetAutomaticPacketCompression(const bool enable=false)
int GetMasterSessionID(void)
OnError GetOnSessionErrorMigrateObjects(void)
void SetCanBecomeMaster(const bool canBeMaster=true)
bool GetPollLayerBelow(void)