• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

RakPeerInterface.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 #ifndef __RAK_PEER_INTERFACE_H
00010 #define __RAK_PEER_INTERFACE_H
00011 
00012 #include "PacketPriority.h"
00013 #include "RakNetTypes.h"
00014 #include "RakMemoryOverride.h"
00015 #include "Export.h"
00016 #include "DS_List.h"
00017 #include "RakNetSmartPtr.h"
00018 #include "RakNetSocket.h"
00019 
00020 // Forward declarations
00021 namespace RakNet
00022 {
00023         class BitStream;
00024 }
00025 class PluginInterface2;
00026 struct RPCMap;
00027 struct RakNetStatistics;
00028 struct RakNetBandwidth;
00029 class RouterInterface;
00030 class NetworkIDManager;
00031 
00035 class RAK_DLL_EXPORT RakPeerInterface
00036 {
00037 public:
00039         virtual ~RakPeerInterface()     {}
00040 
00041         // --------------------------------------------------------------------------------------------Major Low Level Functions - Functions needed by most users--------------------------------------------------------------------------------------------
00054         virtual bool Startup( unsigned short maxConnections, int _threadSleepTimer, SocketDescriptor *socketDescriptors, unsigned socketDescriptorCount, int threadPriority=-99999 )=0;
00055 
00065         virtual void InitializeSecurity(const char *pubKeyE, const char *pubKeyN, const char *privKeyP, const char *privKeyQ )=0;
00066 
00069         virtual void DisableSecurity( void )=0;
00070 
00075         virtual void AddToSecurityExceptionList(const char *ip)=0;
00076 
00079         virtual void RemoveFromSecurityExceptionList(const char *ip)=0;
00080 
00083         virtual bool IsInSecurityExceptionList(const char *ip)=0;
00084 
00090         virtual void SetMaximumIncomingConnections( unsigned short numberAllowed )=0;
00091 
00094         virtual unsigned short GetMaximumIncomingConnections( void ) const=0;
00095 
00098         virtual unsigned short NumberOfConnections(void) const=0;
00099 
00104         virtual void SetIncomingPassword( const char* passwordData, int passwordDataLength )=0;
00105 
00109         virtual void GetIncomingPassword( char* passwordData, int *passwordDataLength  )=0;
00110 
00126         virtual bool Connect( const char* host, unsigned short remotePort, const char *passwordData, int passwordDataLength, unsigned connectionSocketIndex=0, unsigned sendConnectionAttemptCount=12, unsigned timeBetweenSendConnectionAttemptsMS=500, RakNetTime timeoutTime=0 )=0;
00127 
00138         virtual bool ConnectWithSocket(const char* host, unsigned short remotePort, const char *passwordData, int passwordDataLength, RakNetSmartPtr<RakNetSocket> socket, unsigned sendConnectionAttemptCount=12, unsigned timeBetweenSendConnectionAttemptsMS=500, RakNetTime timeoutTime=0)=0;
00139 
00144         //virtual bool Console2LobbyConnect( void *networkServiceId, const char *passwordData, int passwordDataLength )=0;
00145 
00151         virtual void Shutdown( unsigned int blockDuration, unsigned char orderingChannel=0, PacketPriority disconnectionNotificationPriority=LOW_PRIORITY )=0;
00152 
00155         virtual bool IsActive( void ) const=0;
00156 
00160         virtual bool GetConnectionList( SystemAddress *remoteSystems, unsigned short *numberOfSystems ) const=0;
00161 
00165         virtual uint32_t GetNextSendReceipt(void)=0;
00166 
00170         virtual uint32_t IncrementNextSendReceipt(void)=0;
00171 
00184         virtual uint32_t Send( const char *data, const int length, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast, uint32_t forceReceipt=0 )=0;
00185 
00191         virtual void SendLoopback( const char *data, const int length )=0;
00192 
00203         virtual uint32_t Send( const RakNet::BitStream * bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast, uint32_t forceReceipt=0 )=0;
00204 
00225         virtual uint32_t SendList( const char **data, const int *lengths, const int numParameters, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast, uint32_t forceReceipt=0 )=0;
00226 
00233         virtual Packet* Receive( void )=0;
00234 
00237         virtual void DeallocatePacket( Packet *packet )=0;
00238 
00240         // TODO - rename for RakNet 3.0
00241         virtual unsigned short GetMaximumNumberOfPeers( void ) const=0;
00242 
00243         // --------------------------------------------------------------------------------------------Remote Procedure Call Functions - Functions to initialize and perform RPC--------------------------------------------------------------------------------------------
00249         virtual void RegisterAsRemoteProcedureCall( const char* uniqueID, void ( *functionPointer ) ( RPCParameters *rpcParms ) )=0;
00250 
00257         virtual void RegisterClassMemberRPC( const char* uniqueID, void *functionPointer )=0;
00258 
00263         virtual void UnregisterAsRemoteProcedureCall( const char* uniqueID )=0;
00264 
00269         virtual void SetNetworkIDManager( NetworkIDManager *manager )=0;
00270 
00272         virtual NetworkIDManager *GetNetworkIDManager(void) const=0;
00273 
00289         virtual bool RPC( const char* uniqueID, const char *data, BitSize_t bitLength, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast, RakNetTime *includedTimestamp, NetworkID networkID, RakNet::BitStream *replyFromTarget )=0;
00290         
00308         virtual bool RPC( const char* uniqueID, const RakNet::BitStream *bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast, RakNetTime *includedTimestamp, NetworkID networkID, RakNet::BitStream *replyFromTarget )=0;
00309         
00310         // -------------------------------------------------------------------------------------------- Connection Management Functions--------------------------------------------------------------------------------------------
00316         virtual void CloseConnection( const SystemAddress target, bool sendDisconnectionNotification, unsigned char orderingChannel=0, PacketPriority disconnectionNotificationPriority=LOW_PRIORITY )=0;
00317 
00321         virtual void CancelConnectionAttempt( const SystemAddress target )=0;
00322 
00325         virtual bool IsConnectionAttemptPending( const SystemAddress systemAddress )=0;
00326 
00332         virtual bool IsConnected(const AddressOrGUID systemIdentifier, bool includeInProgress=false, bool includeDisconnecting=false)=0;
00333 
00337         virtual int GetIndexFromSystemAddress( const SystemAddress systemAddress ) const=0;
00338 
00343         virtual SystemAddress GetSystemAddressFromIndex( int index )=0;
00344 
00348         virtual RakNetGUID GetGUIDFromIndex( int index )=0;
00349 
00354         virtual void GetSystemList(DataStructures::List<SystemAddress> &addresses, DataStructures::List<RakNetGUID> &guids)=0;
00355 
00359         virtual void AddToBanList( const char *IP, RakNetTime milliseconds=0 )=0;
00360 
00363         virtual void RemoveFromBanList( const char *IP )=0;
00364 
00366         virtual void ClearBanList( void )=0;
00367 
00371         virtual bool IsBanned( const char *IP )=0;
00372 
00376         virtual void SetLimitIPConnectionFrequency(bool b)=0;
00377 
00378         // --------------------------------------------------------------------------------------------Pinging Functions - Functions dealing with the automatic ping mechanism--------------------------------------------------------------------------------------------
00382         virtual void Ping( const SystemAddress target )=0;
00383 
00391         virtual bool Ping( const char* host, unsigned short remotePort, bool onlyReplyOnAcceptingConnections, unsigned connectionSocketIndex=0 )=0;
00392 
00396         virtual int GetAveragePing( const AddressOrGUID systemIdentifier )=0;
00397 
00401         virtual int GetLastPing( const AddressOrGUID systemIdentifier ) const=0;
00402 
00406         virtual int GetLowestPing( const AddressOrGUID systemIdentifier ) const=0;
00407 
00412         virtual void SetOccasionalPing( bool doPing )=0;
00413 
00414         // --------------------------------------------------------------------------------------------Static Data Functions - Functions dealing with API defined synchronized memory--------------------------------------------------------------------------------------------
00420         virtual void SetOfflinePingResponse( const char *data, const unsigned int length )=0;
00421 
00426         virtual void GetOfflinePingResponse( char **data, unsigned int *length )=0;
00427 
00428         //--------------------------------------------------------------------------------------------Network Functions - Functions dealing with the network in general--------------------------------------------------------------------------------------------
00433         virtual SystemAddress GetInternalID( const SystemAddress systemAddress=UNASSIGNED_SYSTEM_ADDRESS, const int index=0 ) const=0;
00434 
00438         virtual SystemAddress GetExternalID( const SystemAddress target ) const=0;
00439 
00447         virtual const RakNetGUID& GetGuidFromSystemAddress( const SystemAddress input ) const=0;
00448 
00454         virtual SystemAddress GetSystemAddressFromGuid( const RakNetGUID input ) const=0;
00455 
00460         virtual void SetTimeoutTime( RakNetTime timeMS, const SystemAddress target )=0;
00461 
00464         virtual RakNetTime GetTimeoutTime( const SystemAddress target )=0;
00465 
00476         // virtual bool SetMTUSize( int size, const SystemAddress target=UNASSIGNED_SYSTEM_ADDRESS )=0;
00477 
00481         virtual int GetMTUSize( const SystemAddress target ) const=0;
00482 
00484         virtual unsigned GetNumberOfAddresses( void )=0;
00485 
00489         virtual const char* GetLocalIP( unsigned int index )=0;
00490 
00494         virtual bool IsLocalIP( const char *ip )=0;
00495 
00499         virtual void AllowConnectionResponseIPMigration( bool allow )=0;
00500 
00510         virtual bool AdvertiseSystem( const char *host, unsigned short remotePort, const char *data, int dataLength, unsigned connectionSocketIndex=0 )=0;
00511 
00517         virtual void SetSplitMessageProgressInterval(int interval)=0;
00518 
00521         virtual int GetSplitMessageProgressInterval(void) const=0;
00522 
00527         virtual void SetUnreliableTimeout(RakNetTime timeoutMS)=0;
00528 
00532         virtual void SendTTL( const char* host, unsigned short remotePort, int ttl, unsigned connectionSocketIndex=0 )=0;
00533 
00534         // --------------------------------------------------------------------------------------------Compression Functions - Functions related to the compression layer--------------------------------------------------------------------------------------------
00539         virtual void SetCompileFrequencyTable( bool doCompile )=0;
00540 
00547         virtual bool GetOutgoingFrequencyTable( unsigned int outputFrequencyTable[ 256 ] )=0;
00548 
00559         virtual bool GenerateCompressionLayer( unsigned int inputFrequencyTable[ 256 ], bool inputLayer )=0;
00560 
00565         virtual bool DeleteCompressionLayer( bool inputLayer )=0;
00566 
00569         virtual float GetCompressionRatio( void ) const=0;
00570 
00573         virtual float GetDecompressionRatio( void ) const=0;
00574 
00575         // -------------------------------------------------------------------------------------------- Plugin Functions--------------------------------------------------------------------------------------------
00579         virtual void AttachPlugin( PluginInterface2 *plugin )=0;
00580 
00583         virtual void DetachPlugin( PluginInterface2 *messageHandler )=0;
00584 
00585         // --------------------------------------------------------------------------------------------Miscellaneous Functions--------------------------------------------------------------------------------------------
00589         virtual void PushBackPacket( Packet *packet, bool pushAtHead )=0;
00590 
00592         // \param[in] routerInterface The router to use to route messages to systems not directly connected to this system.
00593         virtual void SetRouterInterface( RouterInterface *routerInterface )=0;
00594 
00596         // \param[in] routerInterface The router to use to route messages to systems not directly connected to this system.
00597         virtual void RemoveRouterInterface( RouterInterface *routerInterface )=0;
00598 
00603         virtual void ChangeSystemAddress(RakNetGUID guid, SystemAddress systemAddress)=0;
00604 
00609         virtual Packet* AllocatePacket(unsigned dataSize)=0;
00610 
00616         virtual RakNetSmartPtr<RakNetSocket> GetSocket( const SystemAddress target )=0;
00617 
00621         virtual void GetSockets( DataStructures::List<RakNetSmartPtr<RakNetSocket> > &sockets )=0;
00622 
00623         virtual void WriteOutOfBandHeader(RakNet::BitStream *bitStream)=0;
00624 
00628         virtual void SetUserUpdateThread(void (*_userUpdateThreadPtr)(RakPeerInterface *, void *), void *_userUpdateThreadData)=0;
00629 
00630         // --------------------------------------------------------------------------------------------Network Simulator Functions--------------------------------------------------------------------------------------------
00639         virtual void ApplyNetworkSimulator( float packetloss, unsigned short minExtraPing, unsigned short extraPingVariance)=0;
00640 
00645         virtual void SetPerConnectionOutgoingBandwidthLimit( unsigned maxBitsPerSecond )=0;
00646 
00649         virtual bool IsNetworkSimulatorActive( void )=0;
00650 
00651         // --------------------------------------------------------------------------------------------Statistical Functions - Functions dealing with API performance--------------------------------------------------------------------------------------------
00652 
00659         virtual RakNetStatistics * const GetStatistics( const SystemAddress systemAddress, RakNetStatistics *rns=0 )=0;
00660         virtual bool GetStatistics( const int index, RakNetStatistics *rns )=0;
00661 
00663         virtual unsigned int GetReceiveBufferSize(void)=0;
00664 
00665         // --------------------------------------------------------------------------------------------EVERYTHING AFTER THIS COMMENT IS FOR INTERNAL USE ONLY--------------------------------------------------------------------------------------------
00667         virtual char *GetRPCString( const char *data, const BitSize_t bitSize, const SystemAddress systemAddress)=0;
00668 
00670         virtual bool SendOutOfBand(const char *host, unsigned short remotePort, const char *data, BitSize_t dataLength, unsigned connectionSocketIndex=0 )=0;
00671 
00672 };
00673 
00674 #endif

Generated on Thu Sep 30 2010 01:27:26 for RakNet by  doxygen 1.7.1