00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __XPSESSION_H__
00012 #define __XPSESSION_H__
00013 #include "RNPlatform/Inc/DLLExportAPI.h"
00014
00015 #define _XPSESSION_VERSION 5400
00016
00017 #define _XPSESSION_DLLVERSIONMAJOR 9
00018 #define _XPSESSION_DLLVERSIONMINOR 0
00019
00020 #include <vector>
00021 #include <string>
00022
00023 #include "RNXPURL/Inc/Transport.h"
00024
00025 namespace RNReplicaNet
00026 {
00027
00028 const int kXPSessionUnknownID = -1;
00029 const int kXPSessionBroadcastID = -2;
00030
00031
00032 const unsigned char kXPSessionPacketType_Unreliable = 0;
00033 const unsigned char kXPSessionPacketType_Reliable = (1<<0);
00034 const unsigned char kXPSessionPacketType_Certain = (1<<1);
00035
00049 class XPSESSIONDLL_API XPSession
00050 {
00051 public:
00052
00056 enum Error
00057 {
00058 kXPSession_EOK = 0,
00059 kXPSession_EERROR = -1,
00060 kXPSession_ETRANSPORT_CLOSED = -2,
00061 kXPSession_ETRANSPORT_ERROR = -3
00062 };
00063
00067 XPSession() {};
00068
00073 virtual ~XPSession() {};
00074
00079 static XPSession *Allocate(void);
00080
00085 virtual void Create(const std::string name) = 0;
00086
00092 virtual void Create(const std::string name,const std::string protocols) = 0;
00093
00099 virtual std::string ExportURL(const bool shortAddress = true) = 0;
00100
00105 virtual void Join(const std::string url) = 0;
00106
00110 virtual void Find(void) = 0;
00111
00116 virtual void Find(const std::string protocols) = 0;
00117
00122 virtual std::string EnumerateFound(void) = 0;
00123
00128 virtual int GetGameChannel(void) = 0;
00129
00134 virtual void SetGameChannel(const int channel = TransportAnyGameChannel) = 0;
00135
00140 virtual int GetSessionID(void) = 0;
00141
00146 virtual bool IsStable(void) = 0;
00147
00153 virtual Error GetStatus(void) = 0;
00154
00163 virtual Error GetSessionErrorReason(void) = 0;
00164
00174 virtual void DataSendToSession(const int sessionid,const char *data,const int length,const bool reliable = true,const bool certain = false) = 0;
00175
00182 virtual void DataSendToSessionUnreliable(const int sessionid,const char *data,const int length) = 0;
00183
00190 virtual void DataSendToSessionReliable(const int sessionid,const char *data,const int length) = 0;
00191
00198 virtual void DataSendToSessionCertain(const int sessionid,const char *data,const int length) = 0;
00199
00208 virtual bool DataReceive(int *const fromsessionid,char *const data,int *const length,unsigned char *const type = 0) = 0;
00209
00214 virtual bool IsMaster(void) = 0;
00215
00220 virtual int GetJoiner(void) = 0;
00221
00226 virtual int GetLeaver(void) = 0;
00227
00232 virtual float GetTime(void) = 0;
00233
00238 virtual float GetLocalTime(void) = 0;
00239
00244 virtual float GetNetworkSendRate(void) = 0;
00245
00250 virtual float GetNetworkReceiveRate(void) = 0;
00251
00256 virtual int GetNetworkPacketsLost(void) = 0;
00257
00265 virtual void Poll(void) = 0;
00266
00272 virtual void SetPollLayerBelow(bool enable = true) = 0;
00273
00278 virtual bool GetPollLayerBelow(void) = 0;
00279
00286 virtual void SetManualPoll(void) = 0;
00287
00295 virtual void SetAutomaticPoll(void) = 0;
00296
00300 virtual void SetManualPollXPURL(void) = 0;
00301
00305 virtual void SetAutomaticPollXPURL(void) = 0;
00306
00307
00313 virtual void SetCanSpider(const bool canSpider = true) = 0;
00314
00319 virtual bool GetCanSpider(void) = 0;
00320
00327 virtual void SetCanBecomeMaster(const bool canBeMaster = true) = 0;
00328
00333 virtual bool GetCanBecomeMaster(void) = 0;
00334
00339 virtual float GetLatencyToMasterSession(void) = 0;
00340
00345 virtual void SetLatencyRecalculationDelay(const float seconds = 1.0f) = 0;
00346
00351 virtual void SetEncryption(const bool enable = false) = 0;
00352
00356 virtual bool GetEncryption(void) = 0;
00357
00358
00363 virtual void Disconnect(const int sessionID = kXPSessionUnknownID) = 0;
00364
00369 virtual bool GetPreConnectStatus(void) = 0;
00370
00381 virtual void SetPreConnect(const bool enable = false) = 0;
00382
00387 virtual bool GetPreConnect(void) = 0;
00388
00392 virtual void PreConnectHasFinished(void) = 0;
00393
00398 virtual void SetAutomaticPacketCompression(const bool enable = false) = 0;
00399
00404 virtual bool GetAutomaticPacketCompression(void) = 0;
00405
00412 virtual void GetCompressionStatistics(int *const before=0,int *const after=0,const bool reset = false) = 0;
00413
00421 virtual void GetMergedStatistics(int *const sent=0,int *const received=0,const bool reset = false) = 0;
00422
00427 virtual int GetMasterSessionID(void) = 0;
00428
00435 virtual std::string GetURLFromSessionID(const int sessionID) = 0;
00436
00442 virtual void SetClientOnly(const bool isClient = false) = 0;
00443
00448 virtual bool GetClientOnly(void) = 0;
00449
00460 virtual bool GetBandwidthFromSessionID(const int sessionID,Transport::Bandwidth *const bandwidth,int *const output,int *const input) = 0;
00461
00466 virtual void SetAllowConnections(const bool allow = true) = 0;
00467
00472 virtual bool GetAllowConnections(void) = 0;
00473
00478 virtual void SetNodeBuffers(const bool enable = false) = 0;
00479
00484 virtual bool GetNodeBuffers(void) = 0;
00485
00486 private:
00487 };
00488
00489 }
00490
00491 #endif