![]() |
Shadowrun: Awakened 29 September 2011 - Build 871
|
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.