RakNet  4.0
Public Member Functions | Protected Member Functions | List of all members
RakNet::ConnectionGraph2 Class Reference

A one hop connection graph. More...

#include <ConnectionGraph2.h>

Inheritance diagram for RakNet::ConnectionGraph2:
RakNet::PluginInterface2

Public Member Functions

bool GetConnectionListForRemoteSystem (RakNetGUID remoteSystemGuid, SystemAddress *saOut, RakNetGUID *guidOut, unsigned int *outLength)
 Given a remote system identified by RakNetGUID, return the list of SystemAddresses and RakNetGUIDs they are connected to.
 
bool ConnectionExists (RakNetGUID g1, RakNetGUID g2)
 Returns if g1 is connected to g2.
 
uint16_t GetPingBetweenSystems (RakNetGUID g1, RakNetGUID g2) const
 Returns the average ping between two systems in the connection graph. Returns -1 if no connection exists between those systems.
 
RakNetGUID GetLowestAveragePingSystem (void) const
 
void SetAutoProcessNewConnections (bool b)
 If called with false, then new connections are only added to the connection graph when you call ProcessNewConnection();.
 
bool GetAutoProcessNewConnections (void) const
 Returns value passed to SetAutoProcessNewConnections()
 
void AddParticipant (const SystemAddress &systemAddress, RakNetGUID rakNetGUID)
 If you call SetAutoProcessNewConnections(false);, then you will need to manually call ProcessNewConnection() on new connections.
 
void GetParticipantList (DataStructures::OrderedList< RakNetGUID, RakNetGUID > &participantList)
 
- Public Member Functions inherited from RakNet::PluginInterface2
virtual void OnAttach (void)
 Called when the interface is attached.
 
virtual void OnDetach (void)
 Called when the interface is detached.
 
virtual void Update (void)
 Update is called every time a packet is checked for .
 
virtual void OnRakPeerStartup (void)
 Called when RakPeer is initialized.
 
virtual void OnRakPeerShutdown (void)
 Called when RakPeer is shutdown.
 
virtual void OnFailedConnectionAttempt (Packet *packet, PI2_FailedConnectionAttemptReason failedConnectionAttemptReason)
 
virtual bool UsesReliabilityLayer (void) const
 
virtual void OnDirectSocketSend (const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)
 
virtual void OnDirectSocketReceive (const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)
 
virtual void OnReliabilityLayerNotification (const char *errorMessage, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress, bool isError)
 
virtual void OnInternalPacket (InternalPacket *internalPacket, unsigned frameNumber, SystemAddress remoteSystemAddress, RakNet::TimeMS time, int isSend)
 
virtual void OnAck (unsigned int messageNumber, SystemAddress remoteSystemAddress, RakNet::TimeMS time)
 
virtual void OnPushBackPacket (const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)
 

Protected Member Functions

virtual void OnClosedConnection (const SystemAddress &systemAddress, RakNetGUID rakNetGUID, PI2_LostConnectionReason lostConnectionReason)
 
virtual void OnNewConnection (const SystemAddress &systemAddress, RakNetGUID rakNetGUID, bool isIncoming)
 
virtual PluginReceiveResult OnReceive (Packet *packet)
 

Detailed Description

A one hop connection graph.

Sends ID_REMOTE_CONNECTION_LOST, ID_REMOTE_DISCONNECTION_NOTIFICATION, ID_REMOTE_NEW_INCOMING_CONNECTION
All identifiers are followed by SystemAddress, then RakNetGUID Also stores the list for you, which you can access with GetConnectionListForRemoteSystem

Member Function Documentation

void RakNet::ConnectionGraph2::AddParticipant ( const SystemAddress systemAddress,
RakNetGUID  rakNetGUID 
)

If you call SetAutoProcessNewConnections(false);, then you will need to manually call ProcessNewConnection() on new connections.

On ID_NEW_INCOMING_CONNECTION or ID_CONNECTION_REQUEST_ACCEPTED, adds that system to the graph Do not call ProcessNewConnection() manually otherwise

Parameters
[in]Thepacket->SystemAddress member
[in]Thepacket->guid member
bool RakNet::ConnectionGraph2::GetAutoProcessNewConnections ( void  ) const

Returns value passed to SetAutoProcessNewConnections()

Returns
Value passed to SetAutoProcessNewConnections(), or the default of true if it was never called
bool RakNet::ConnectionGraph2::GetConnectionListForRemoteSystem ( RakNetGUID  remoteSystemGuid,
SystemAddress saOut,
RakNetGUID guidOut,
unsigned int *  outLength 
)

Given a remote system identified by RakNetGUID, return the list of SystemAddresses and RakNetGUIDs they are connected to.

Parameters
[in]remoteSystemGuidWhich system we are referring to. This only works for remote systems, not ourselves.
[out]saOutA preallocated array to hold the output list of SystemAddress. Can be 0 if you don't care.
[out]guidOutA preallocated array to hold the output list of RakNetGUID. Can be 0 if you don't care.
[in,out]outLengthOn input, the size of saOut and guidOut. On output, modified to reflect the number of elements actually written
Returns
True if remoteSystemGuid was found. Otherwise false, and saOut, guidOut remain unchanged. outLength will be set to 0.
RakNetGUID RakNet::ConnectionGraph2::GetLowestAveragePingSystem ( void  ) const

Returns the system with the lowest average ping among all its connections. If you need one system in the peer to peer group to relay data, have the FullyConnectedMesh2 host call this function after host migration, and use that system

void RakNet::ConnectionGraph2::GetParticipantList ( DataStructures::OrderedList< RakNetGUID, RakNetGUID > &  participantList)

Get the participants added with AddParticipant()

Parameters
[out]participantListParticipants added with AddParticipant();
virtual void RakNet::ConnectionGraph2::OnClosedConnection ( const SystemAddress systemAddress,
RakNetGUID  rakNetGUID,
PI2_LostConnectionReason  lostConnectionReason 
)
protectedvirtual

Called when a connection is dropped because the user called RakPeer::CloseConnection() for a particular system

Parameters
[in]systemAddressThe system whose connection was closed
[in]rakNetGuidThe guid of the specified system
[in]lostConnectionReasonHow the connection was closed: manually, connection lost, or notification of disconnection

Reimplemented from RakNet::PluginInterface2.

virtual void RakNet::ConnectionGraph2::OnNewConnection ( const SystemAddress systemAddress,
RakNetGUID  rakNetGUID,
bool  isIncoming 
)
protectedvirtual

Called when we got a new connection

Parameters
[in]systemAddressAddress of the new connection
[in]rakNetGuidThe guid of the specified system
[in]isIncomingIf true, this is ID_NEW_INCOMING_CONNECTION, or the equivalent

Reimplemented from RakNet::PluginInterface2.

virtual PluginReceiveResult RakNet::ConnectionGraph2::OnReceive ( Packet packet)
protectedvirtual

OnReceive is called for every packet.

Parameters
[in]packetthe packet that is being returned to the user
Returns
True to allow the game and other plugins to get this message, false to absorb it

Reimplemented from RakNet::PluginInterface2.

void RakNet::ConnectionGraph2::SetAutoProcessNewConnections ( bool  b)

If called with false, then new connections are only added to the connection graph when you call ProcessNewConnection();.

This is useful if you want to perform validation before connecting a system to a mesh, or if you want a submesh (for example a server cloud)

Parameters
[in]bTrue to automatically call ProcessNewConnection() on any new connection, false to not do so. Defaults to true.

The documentation for this class was generated from the following file: