22 #ifndef __RAK_PEER_INTERFACE_H
23 #define __RAK_PEER_INTERFACE_H
37 class PluginInterface2;
39 struct RakNetStatistics;
40 struct RakNetBandwidth;
41 class RouterInterface;
42 class NetworkIDManager;
69 virtual StartupResult Startup(
unsigned int maxConnections,
SocketDescriptor *socketDescriptors,
unsigned socketDescriptorCount,
int threadPriority=-99999 )=0;
80 virtual bool InitializeSecurity(
const char *publicKey,
const char *privateKey,
bool bRequireClientKey =
false )=0;
84 virtual void DisableSecurity(
void )=0;
90 virtual void AddToSecurityExceptionList(
const char *ip)=0;
94 virtual void RemoveFromSecurityExceptionList(
const char *ip)=0;
98 virtual bool IsInSecurityExceptionList(
const char *ip)=0;
105 virtual void SetMaximumIncomingConnections(
unsigned short numberAllowed )=0;
109 virtual unsigned int GetMaximumIncomingConnections(
void )
const=0;
113 virtual unsigned short NumberOfConnections(
void)
const=0;
119 virtual void SetIncomingPassword(
const char* passwordData,
int passwordDataLength )=0;
124 virtual void GetIncomingPassword(
char* passwordData,
int *passwordDataLength )=0;
144 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,
SLNet::TimeMS timeoutTime=0 )=0;
157 virtual ConnectionAttemptResult ConnectWithSocket(
const char* host,
unsigned short remotePort,
const char *passwordData,
int passwordDataLength,
RakNetSocket2* socket,
PublicKey *publicKey=0,
unsigned sendConnectionAttemptCount=12,
unsigned timeBetweenSendConnectionAttemptsMS=500,
SLNet::TimeMS timeoutTime=0)=0;
170 virtual void Shutdown(
unsigned int blockDuration,
unsigned char orderingChannel=0,
PacketPriority disconnectionNotificationPriority=
LOW_PRIORITY )=0;
174 virtual bool IsActive(
void )
const=0;
179 virtual bool GetConnectionList(
SystemAddress *remoteSystems,
unsigned short *numberOfSystems )
const=0;
184 virtual uint32_t GetNextSendReceipt(
void)=0;
189 virtual uint32_t IncrementNextSendReceipt(
void)=0;
210 virtual void SendLoopback(
const char *data,
const int length )=0;
252 virtual Packet* Receive(
void )=0;
256 virtual void DeallocatePacket(
Packet *packet )=0;
259 virtual unsigned int GetMaximumNumberOfPeers(
void )
const=0;
267 virtual void CloseConnection(
const AddressOrGUID target,
bool sendDisconnectionNotification,
unsigned char orderingChannel=0,
PacketPriority disconnectionNotificationPriority=
LOW_PRIORITY )=0;
278 virtual void CancelConnectionAttempt(
const SystemAddress target )=0;
283 virtual int GetIndexFromSystemAddress(
const SystemAddress systemAddress )
const=0;
289 virtual SystemAddress GetSystemAddressFromIndex(
unsigned int index )=0;
294 virtual RakNetGUID GetGUIDFromIndex(
unsigned int index )=0;
305 virtual void AddToBanList(
const char *IP,
SLNet::TimeMS milliseconds=0 )=0;
309 virtual void RemoveFromBanList(
const char *IP )=0;
312 virtual void ClearBanList(
void )=0;
317 virtual bool IsBanned(
const char *IP )=0;
322 virtual void SetLimitIPConnectionFrequency(
bool b)=0;
337 virtual bool Ping(
const char* host,
unsigned short remotePort,
bool onlyReplyOnAcceptingConnections,
unsigned connectionSocketIndex=0 )=0;
342 virtual int GetAveragePing(
const AddressOrGUID systemIdentifier )=0;
347 virtual int GetLastPing(
const AddressOrGUID systemIdentifier )
const=0;
352 virtual int GetLowestPing(
const AddressOrGUID systemIdentifier )
const=0;
358 virtual void SetOccasionalPing(
bool doPing )=0;
372 virtual void SetOfflinePingResponse(
const char *data,
const unsigned int length )=0;
378 virtual void GetOfflinePingResponse(
char **data,
unsigned int *length )=0;
391 virtual void SetInternalID(
SystemAddress systemAddress,
int index=0)=0;
399 virtual const RakNetGUID GetMyGUID(
void)
const=0;
402 virtual SystemAddress GetMyBoundAddress(
const int socketIndex=0)=0;
405 static uint64_t Get64BitUniqueRandomNumber(
void);
427 virtual bool GetClientPublicKeyFromSystemAddress(
const SystemAddress input,
char *client_public_key )
const=0;
443 virtual int GetMTUSize(
const SystemAddress target )
const=0;
446 virtual unsigned GetNumberOfAddresses(
void )=0;
451 virtual const char* GetLocalIP(
unsigned int index )=0;
456 virtual bool IsLocalIP(
const char *ip )=0;
461 virtual void AllowConnectionResponseIPMigration(
bool allow )=0;
472 virtual bool AdvertiseSystem(
const char *host,
unsigned short remotePort,
const char *data,
int dataLength,
unsigned connectionSocketIndex=0 )=0;
479 virtual void SetSplitMessageProgressInterval(
int interval)=0;
483 virtual int GetSplitMessageProgressInterval(
void)
const=0;
489 virtual void SetUnreliableTimeout(
SLNet::TimeMS timeoutMS)=0;
494 virtual void SendTTL(
const char* host,
unsigned short remotePort,
int ttl,
unsigned connectionSocketIndex=0 )=0;
512 virtual void PushBackPacket(
Packet *packet,
bool pushAtHead )=0;
524 virtual Packet* AllocatePacket(
unsigned dataSize)=0;
544 virtual void SetUserUpdateThread(
void (*_userUpdateThreadPtr)(
RakPeerInterface *,
void *),
void *_userUpdateThreadData)=0;
553 virtual void SetIncomingDatagramEventHandler(
bool (*_incomingDatagramEventHandler)(
RNS2RecvStruct *) )=0;
564 virtual void ApplyNetworkSimulator(
float packetloss,
unsigned short minExtraPing,
unsigned short extraPingVariance)=0;
570 virtual void SetPerConnectionOutgoingBandwidthLimit(
unsigned maxBitsPerSecond )=0;
574 virtual bool IsNetworkSimulatorActive(
void )=0;
587 virtual bool GetStatistics(
const unsigned int index,
RakNetStatistics *rns )=0;
596 virtual unsigned int GetReceiveBufferSize(
void)=0;
608 virtual bool RunUpdateCycle(
BitStream &updateBitStream )=0;
611 virtual bool SendOutOfBand(
const char *host,
unsigned short remotePort,
const char *data,
BitSize_t dataLength,
unsigned connectionSocketIndex=0 )=0;