Main Page | Class List | Directories | File List | Class Members

XPSession.h

00001 /* START_LICENSE_HEADER
00002 
00003 Copyright (C) 2000 Martin Piper, original design and program code
00004 Copyright (C) 2001-2005 Replica Software
00005 
00006 This program file is copyright (C) Replica Software and can only be used under license.
00007 For more information visit: http://www.replicanet.com/
00008 Or email: info@replicanet.com
00009 
00010 END_LICENSE_HEADER */
00011 #ifndef __XPSESSION_H__
00012 #define __XPSESSION_H__
00013 #include "RNPlatform/Inc/DLLExportAPI.h"
00014 
00015 #define _XPSESSION_VERSION 5400
00016 // All DLL versions with the same major version are compatible
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 /* These are the internal message types for session messages */
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 } // namespace RNReplicaNet
00490 
00491 #endif

Generated on Sun Oct 30 01:12:10 2005 for XPSession by  doxygen 1.4.1