RakNet
4.0
|
A one hop connection graph. More...
#include <ConnectionGraph2.h>
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) |
![]() | |
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) |
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
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
[in] | The | packet->SystemAddress member |
[in] | The | packet->guid member |
bool RakNet::ConnectionGraph2::GetAutoProcessNewConnections | ( | void | ) | const |
Returns value passed to SetAutoProcessNewConnections()
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.
[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 |
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()
[out] | participantList | Participants added with AddParticipant(); |
|
protectedvirtual |
Called when a connection is dropped because the user called RakPeer::CloseConnection() for a particular system
[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.
|
protectedvirtual |
Called when we got a new connection
[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.
|
protectedvirtual |
OnReceive is called for every packet.
[in] | packet | the packet that is being returned to the user |
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)
[in] | b | True to automatically call ProcessNewConnection() on any new connection, false to not do so. Defaults to true. |