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;