Shadowrun: Awakened 29 September 2011 - Build 871
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 namespace RakNet
00021 {
00022 // Forward declarations
00023 class BitStream;
00024 class PluginInterface2;
00025 struct RPCMap;
00026 struct RakNetStatistics;
00027 struct RakNetBandwidth;
00028 class RouterInterface;
00029 class NetworkIDManager;
00030 
00034 class RAK_DLL_EXPORT RakPeerInterface
00035 {
00036 public:
00037     // GetInstance() and DestroyInstance(instance*)
00038     STATIC_FACTORY_DECLARATIONS(RakPeerInterface)
00039 
00040     
00041     virtual ~RakPeerInterface() {}
00042 
00043     // --------------------------------------------------------------------------------------------Major Low Level Functions - Functions needed by most users--------------------------------------------------------------------------------------------
00055     virtual StartupResult Startup( unsigned short maxConnections, SocketDescriptor *socketDescriptors, unsigned socketDescriptorCount, int threadPriority=-99999 )=0;
00056 
00066     virtual bool InitializeSecurity( const char *publicKey, const char *privateKey, bool bRequireClientKey = false )=0;
00067 
00070     virtual void DisableSecurity( void )=0;
00071 
00076     virtual void AddToSecurityExceptionList(const char *ip)=0;
00077 
00080     virtual void RemoveFromSecurityExceptionList(const char *ip)=0;
00081 
00084     virtual bool IsInSecurityExceptionList(const char *ip)=0;
00085 
00091     virtual void SetMaximumIncomingConnections( unsigned short numberAllowed )=0;
00092 
00095     virtual unsigned short GetMaximumIncomingConnections( void ) const=0;
00096 
00099     virtual unsigned short NumberOfConnections(void) const=0;
00100 
00105     virtual void SetIncomingPassword( const char* passwordData, int passwordDataLength )=0;
00106 
00110     virtual void GetIncomingPassword( char* passwordData, int *passwordDataLength  )=0;
00111 
00130     virtual ConnectionAttemptResult Connect( const char* host, unsigned short remotePort, const char *passwordData, int passwordDataLength, PublicKey *publicKey=0, unsigned connectionSocketIndex=0, unsigned sendConnectionAttemptCount=12, unsigned timeBetweenSendConnectionAttemptsMS=500, RakNet::TimeMS timeoutTime=0 )=0;
00131 
00143     virtual ConnectionAttemptResult ConnectWithSocket(const char* host, unsigned short remotePort, const char *passwordData, int passwordDataLength, RakNetSmartPtr<RakNetSocket> socket, PublicKey *publicKey=0, unsigned sendConnectionAttemptCount=12, unsigned timeBetweenSendConnectionAttemptsMS=500, RakNet::TimeMS timeoutTime=0)=0;
00144 
00149     //virtual bool Console2LobbyConnect( void *networkServiceId, const char *passwordData, int passwordDataLength )=0;
00150 
00156     virtual void Shutdown( unsigned int blockDuration, unsigned char orderingChannel=0, PacketPriority disconnectionNotificationPriority=LOW_PRIORITY )=0;
00157 
00160     virtual bool IsActive( void ) const=0;
00161 
00165     virtual bool GetConnectionList( SystemAddress *remoteSystems, unsigned short *numberOfSystems ) const=0;
00166 
00170     virtual uint32_t GetNextSendReceipt(void)=0;
00171 
00175     virtual uint32_t IncrementNextSendReceipt(void)=0;
00176 
00189     virtual uint32_t Send( const char *data, const int length, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast, uint32_t forceReceiptNumber=0 )=0;
00190 
00196     virtual void SendLoopback( const char *data, const int length )=0;
00197 
00208     virtual uint32_t Send( const RakNet::BitStream * bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast, uint32_t forceReceiptNumber=0 )=0;
00209 
00230     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 forceReceiptNumber=0 )=0;
00231 
00238     virtual Packet* Receive( void )=0;
00239 
00242     virtual void DeallocatePacket( Packet *packet )=0;
00243 
00245     virtual unsigned short GetMaximumNumberOfPeers( void ) const=0;
00246 
00247     // -------------------------------------------------------------------------------------------- Connection Management Functions--------------------------------------------------------------------------------------------
00253     virtual void CloseConnection( const AddressOrGUID target, bool sendDisconnectionNotification, unsigned char orderingChannel=0, PacketPriority disconnectionNotificationPriority=LOW_PRIORITY )=0;
00254 
00259     virtual ConnectionState GetConnectionState(const AddressOrGUID systemIdentifier)=0;
00260 
00264     virtual void CancelConnectionAttempt( const SystemAddress target )=0;
00265 
00269     virtual int GetIndexFromSystemAddress( const SystemAddress systemAddress ) const=0;
00270 
00275     virtual SystemAddress GetSystemAddressFromIndex( int index )=0;
00276 
00280     virtual RakNetGUID GetGUIDFromIndex( int index )=0;
00281 
00286     virtual void GetSystemList(DataStructures::List<SystemAddress> &addresses, DataStructures::List<RakNetGUID> &guids) const=0;
00287 
00291     virtual void AddToBanList( const char *IP, RakNet::TimeMS milliseconds=0 )=0;
00292 
00295     virtual void RemoveFromBanList( const char *IP )=0;
00296 
00298     virtual void ClearBanList( void )=0;
00299 
00303     virtual bool IsBanned( const char *IP )=0;
00304 
00308     virtual void SetLimitIPConnectionFrequency(bool b)=0;
00309 
00310     // --------------------------------------------------------------------------------------------Pinging Functions - Functions dealing with the automatic ping mechanism--------------------------------------------------------------------------------------------
00314     virtual void Ping( const SystemAddress target )=0;
00315 
00323     virtual bool Ping( const char* host, unsigned short remotePort, bool onlyReplyOnAcceptingConnections, unsigned connectionSocketIndex=0 )=0;
00324 
00328     virtual int GetAveragePing( const AddressOrGUID systemIdentifier )=0;
00329 
00333     virtual int GetLastPing( const AddressOrGUID systemIdentifier ) const=0;
00334 
00338     virtual int GetLowestPing( const AddressOrGUID systemIdentifier ) const=0;
00339 
00344     virtual void SetOccasionalPing( bool doPing )=0;
00345 
00346     // --------------------------------------------------------------------------------------------Static Data Functions - Functions dealing with API defined synchronized memory--------------------------------------------------------------------------------------------
00352     virtual void SetOfflinePingResponse( const char *data, const unsigned int length )=0;
00353 
00358     virtual void GetOfflinePingResponse( char **data, unsigned int *length )=0;
00359 
00360     //--------------------------------------------------------------------------------------------Network Functions - Functions dealing with the network in general--------------------------------------------------------------------------------------------
00366     virtual SystemAddress GetInternalID( const SystemAddress systemAddress=UNASSIGNED_SYSTEM_ADDRESS, const int index=0 ) const=0;
00367 
00371     virtual SystemAddress GetExternalID( const SystemAddress target ) const=0;
00372 
00374     virtual const RakNetGUID GetMyGUID(void)=0;
00375 
00377     virtual SystemAddress GetMyBoundAddress(const int socketIndex=0)=0;
00378 
00380     static uint64_t Get64BitUniqueRandomNumber(void);
00381 
00389     virtual const RakNetGUID& GetGuidFromSystemAddress( const SystemAddress input ) const=0;
00390 
00396     virtual SystemAddress GetSystemAddressFromGuid( const RakNetGUID input ) const=0;
00397 
00402     virtual bool GetClientPublicKeyFromSystemAddress( const SystemAddress input, char *client_public_key ) const=0;
00403 
00409     virtual void SetTimeoutTime( RakNet::TimeMS timeMS, const SystemAddress target )=0;
00410 
00413     virtual RakNet::TimeMS GetTimeoutTime( const SystemAddress target )=0;
00414 
00418     virtual int GetMTUSize( const SystemAddress target ) const=0;
00419 
00421     virtual unsigned GetNumberOfAddresses( void )=0;
00422 
00426     virtual const char* GetLocalIP( unsigned int index )=0;
00427 
00431     virtual bool IsLocalIP( const char *ip )=0;
00432 
00436     virtual void AllowConnectionResponseIPMigration( bool allow )=0;
00437 
00447     virtual bool AdvertiseSystem( const char *host, unsigned short remotePort, const char *data, int dataLength, unsigned connectionSocketIndex=0 )=0;
00448 
00454     virtual void SetSplitMessageProgressInterval(int interval)=0;
00455 
00458     virtual int GetSplitMessageProgressInterval(void) const=0;
00459 
00464     virtual void SetUnreliableTimeout(RakNet::TimeMS timeoutMS)=0;
00465 
00469     virtual void SendTTL( const char* host, unsigned short remotePort, int ttl, unsigned connectionSocketIndex=0 )=0;
00470 
00471     // -------------------------------------------------------------------------------------------- Plugin Functions--------------------------------------------------------------------------------------------
00475     virtual void AttachPlugin( PluginInterface2 *plugin )=0;
00476 
00479     virtual void DetachPlugin( PluginInterface2 *messageHandler )=0;
00480 
00481     // --------------------------------------------------------------------------------------------Miscellaneous Functions--------------------------------------------------------------------------------------------
00485     virtual void PushBackPacket( Packet *packet, bool pushAtHead )=0;
00486 
00491     virtual void ChangeSystemAddress(RakNetGUID guid, const SystemAddress &systemAddress)=0;
00492 
00497     virtual Packet* AllocatePacket(unsigned dataSize)=0;
00498 
00504     virtual RakNetSmartPtr<RakNetSocket> GetSocket( const SystemAddress target )=0;
00505 
00509     virtual void GetSockets( DataStructures::List<RakNetSmartPtr<RakNetSocket> > &sockets )=0;
00510     virtual void ReleaseSockets( DataStructures::List<RakNetSmartPtr<RakNetSocket> > &sockets )=0;
00511 
00512     virtual void WriteOutOfBandHeader(RakNet::BitStream *bitStream)=0;
00513 
00517     virtual void SetUserUpdateThread(void (*_userUpdateThreadPtr)(RakPeerInterface *, void *), void *_userUpdateThreadData)=0;
00518 
00519     // --------------------------------------------------------------------------------------------Network Simulator Functions--------------------------------------------------------------------------------------------
00528     virtual void ApplyNetworkSimulator( float packetloss, unsigned short minExtraPing, unsigned short extraPingVariance)=0;
00529 
00534     virtual void SetPerConnectionOutgoingBandwidthLimit( unsigned maxBitsPerSecond )=0;
00535 
00538     virtual bool IsNetworkSimulatorActive( void )=0;
00539 
00540     // --------------------------------------------------------------------------------------------Statistical Functions - Functions dealing with API performance--------------------------------------------------------------------------------------------
00541 
00548     virtual RakNetStatistics * GetStatistics( const SystemAddress systemAddress, RakNetStatistics *rns=0 )=0;
00549     virtual bool GetStatistics( const int index, RakNetStatistics *rns )=0;
00550 
00552     virtual unsigned int GetReceiveBufferSize(void)=0;
00553 
00554     // --------------------------------------------------------------------------------------------EVERYTHING AFTER THIS COMMENT IS FOR INTERNAL USE ONLY--------------------------------------------------------------------------------------------
00555     
00557     virtual bool SendOutOfBand(const char *host, unsigned short remotePort, const char *data, BitSize_t dataLength, unsigned connectionSocketIndex=0 )=0;
00558 
00559 }
00560 // #if defined(SN_TARGET_PSP2)
00561 // __attribute__((aligned(8)))
00562 // #endif
00563 ;
00564 
00565 } // namespace RakNet
00566 
00567 #endif

Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.

GNU Lesser General Public License 3 Sourceforge.net