RakNet::ConnectionGraph2 Class Reference

A one hop connection graph. More...

#include <ConnectionGraph2.h>

Inheritance diagram for RakNet::ConnectionGraph2:

RakNet::PluginInterface2

List of all members.

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)

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] The packet->SystemAddress member
[in] The packet->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] remoteSystemGuid Which system we are referring to. This only works for remote systems, not ourselves.
[out] saOut A preallocated array to hold the output list of SystemAddress. Can be 0 if you don't care.
[out] guidOut A preallocated array to hold the output list of RakNetGUID. Can be 0 if you don't care.
[in,out] outLength On 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] participantList Participants added with AddParticipant();

virtual void RakNet::ConnectionGraph2::OnClosedConnection ( const SystemAddress systemAddress,
RakNetGUID  rakNetGUID,
PI2_LostConnectionReason  lostConnectionReason 
) [protected, virtual]

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

Parameters:
[in] systemAddress The system whose connection was closed
[in] rakNetGuid The guid of the specified system
[in] lostConnectionReason How 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 
) [protected, virtual]

Called when we got a new connection

Parameters:
[in] systemAddress Address of the new connection
[in] rakNetGuid The guid of the specified system
[in] isIncoming If true, this is ID_NEW_INCOMING_CONNECTION, or the equivalent

Reimplemented from RakNet::PluginInterface2.

virtual PluginReceiveResult RakNet::ConnectionGraph2::OnReceive ( Packet packet  )  [protected, virtual]

OnReceive is called for every packet.

Parameters:
[in] packet the 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] b True 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:

Generated on Wed Feb 1 13:33:47 2012 for RakNet by  doxygen 1.5.7.1