A connection graph. Each peer will know about all other peers. More...
#include <ConnectionGraph.h>
Inherits PluginInterface2.
A connection graph. Each peer will know about all other peers.
Definition at line 36 of file ConnectionGraph.h.
ConnectionGraph::ConnectionGraph | ( | ) |
ConnectionGraph::~ConnectionGraph | ( | ) | [virtual] |
void ConnectionGraph::AddAndRelayConnection | ( | DataStructures::OrderedList< SystemAddress, SystemAddress > & | ignoreList, | |
const SystemAddressAndGroupId & | conn1, | |||
const SystemAddressAndGroupId & | conn2, | |||
unsigned short | ping, | |||
RakPeerInterface * | peer | |||
) | [protected] |
Definition at line 485 of file ConnectionGraph.cpp.
void ConnectionGraph::AddNewConnection | ( | RakPeerInterface * | peer, | |
SystemAddress | systemAddress, | |||
RakNetGUID | guid, | |||
ConnectionGraphGroupID | groupId | |||
) |
Adds a new connection to the connection graph from this system to the specified system. Also assigns a group identifier for that system.
Only used and valid when SetAutoAddNewConnections(false) is called. Call this for this system sometime after getting ID_NEW_INCOMING_CONNECTION or ID_CONNECTION_REQUEST_ACCEPTED for systems that contain a connection graph Groups are sets of one or more nodes in the total graph We only add to the graph groups which we subscribe to
[in] | peer | The instance of RakPeer to send through |
[in] | systemAddress | The system that is connected to us. |
[in] | guid | The system that is connected to us. |
[in] | groupId | Just a number representing a group. Important: 0 is reserved to mean unassigned group ID and is assigned to all systems added with SetAutoAddNewConnections(true) |
Definition at line 193 of file ConnectionGraph.cpp.
void ConnectionGraph::AddParticipant | ( | SystemAddress | systemAddress | ) | [protected] |
Definition at line 480 of file ConnectionGraph.cpp.
void ConnectionGraph::BroadcastGraphUpdate | ( | DataStructures::OrderedList< SystemAddress, SystemAddress > & | ignoreList, | |
RakPeerInterface * | peer | |||
) | [protected] |
Definition at line 541 of file ConnectionGraph.cpp.
void ConnectionGraph::DeleteFromPeerList | ( | SystemAddress | systemAddress | ) | [protected] |
bool ConnectionGraph::DeserializeIgnoreList | ( | DataStructures::OrderedList< SystemAddress, SystemAddress > & | ignoreList, | |
RakNet::BitStream * | inBitstream | |||
) | [protected] |
Definition at line 358 of file ConnectionGraph.cpp.
bool ConnectionGraph::DeserializeWeightedGraph | ( | RakNet::BitStream * | inBitstream, | |
RakPeerInterface * | peer | |||
) | [protected] |
Definition at line 425 of file ConnectionGraph.cpp.
DataStructures::WeightedGraph< ConnectionGraph::SystemAddressAndGroupId, unsigned short, false > * ConnectionGraph::GetGraph | ( | void | ) |
Returns the connection graph.
Definition at line 92 of file ConnectionGraph.cpp.
void ConnectionGraph::HandleDroppedConnection | ( | RakPeerInterface * | peer, | |
SystemAddress | systemAddress, | |||
unsigned char | packetId | |||
) | [protected] |
Definition at line 182 of file ConnectionGraph.cpp.
bool ConnectionGraph::IsNewRemoteConnection | ( | const SystemAddressAndGroupId & | conn1, | |
const SystemAddressAndGroupId & | conn2, | |||
RakPeerInterface * | peer | |||
) | [protected] |
Definition at line 573 of file ConnectionGraph.cpp.
void ConnectionGraph::NotifyUserOfRemoteConnection | ( | const SystemAddressAndGroupId & | conn1, | |
const SystemAddressAndGroupId & | conn2, | |||
unsigned short | ping, | |||
RakPeerInterface * | peer | |||
) | [protected] |
Definition at line 588 of file ConnectionGraph.cpp.
void ConnectionGraph::OnClosedConnection | ( | SystemAddress | systemAddress, | |
RakNetGUID | rakNetGUID, | |||
PI2_LostConnectionReason | lostConnectionReason | |||
) | [virtual] |
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 PluginInterface2.
Definition at line 172 of file ConnectionGraph.cpp.
void ConnectionGraph::OnConnectionAddition | ( | Packet * | packet | ) | [protected] |
void ConnectionGraph::OnConnectionGraphReply | ( | Packet * | packet | ) | [protected] |
Definition at line 255 of file ConnectionGraph.cpp.
void ConnectionGraph::OnConnectionGraphRequest | ( | Packet * | packet | ) | [protected] |
Definition at line 229 of file ConnectionGraph.cpp.
void ConnectionGraph::OnConnectionGraphUpdate | ( | Packet * | packet | ) | [protected] |
Definition at line 297 of file ConnectionGraph.cpp.
bool ConnectionGraph::OnConnectionLostInternal | ( | Packet * | packet, | |
unsigned char | packetId | |||
) | [protected] |
Definition at line 339 of file ConnectionGraph.cpp.
void ConnectionGraph::OnConnectionRemoval | ( | Packet * | packet | ) | [protected] |
void ConnectionGraph::OnNewConnection | ( | SystemAddress | systemAddress, | |
RakNetGUID | rakNetGUID, | |||
bool | isIncoming | |||
) | [virtual] |
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 PluginInterface2.
Definition at line 119 of file ConnectionGraph.cpp.
void ConnectionGraph::OnNewConnectionInternal | ( | Packet * | packet | ) | [protected] |
Definition at line 316 of file ConnectionGraph.cpp.
void ConnectionGraph::OnNewIncomingConnection | ( | Packet * | packet | ) | [protected] |
void ConnectionGraph::OnRakPeerShutdown | ( | void | ) | [virtual] |
Called when RakPeer is shutdown.
Reimplemented from PluginInterface2.
Definition at line 100 of file ConnectionGraph.cpp.
PluginReceiveResult ConnectionGraph::OnReceive | ( | Packet * | packet | ) | [virtual] |
OnReceive is called for every packet.
[in] | packet | the packet that is being returned to the user |
Reimplemented from PluginInterface2.
Definition at line 140 of file ConnectionGraph.cpp.
bool ConnectionGraph::RemoveAndRelayConnection | ( | DataStructures::OrderedList< SystemAddress, SystemAddress > & | ignoreList, | |
unsigned char | packetId, | |||
const SystemAddress | node1, | |||
const SystemAddress | node2, | |||
RakPeerInterface * | peer | |||
) | [protected] |
Definition at line 518 of file ConnectionGraph.cpp.
void ConnectionGraph::RemoveParticipant | ( | SystemAddress | systemAddress | ) | [protected] |
Definition at line 471 of file ConnectionGraph.cpp.
void ConnectionGraph::RequestConnectionGraph | ( | SystemAddress | systemAddress | ) |
Requests the connection graph from another system.
Only necessary to call if SetAutoAddNewConnections(false) is called. You should call this sometime after getting ID_CONNECTION_REQUEST_ACCEPTED and systemAddress is or should be a node on the connection graph
[in] | systemAddress | The system to send to |
Definition at line 218 of file ConnectionGraph.cpp.
void ConnectionGraph::SendConnectionGraph | ( | SystemAddress | target, | |
unsigned char | packetId, | |||
RakPeerInterface * | peer | |||
) | [protected] |
void ConnectionGraph::SerializeIgnoreListAndBroadcast | ( | RakNet::BitStream * | outBitstream, | |
DataStructures::OrderedList< SystemAddress, SystemAddress > & | ignoreList, | |||
RakPeerInterface * | peer | |||
) | [protected] |
Definition at line 548 of file ConnectionGraph.cpp.
void ConnectionGraph::SerializeWeightedGraph | ( | RakNet::BitStream * | out, | |
const DataStructures::WeightedGraph< ConnectionGraph::SystemAddressAndGroupId, unsigned short, false > & | g | |||
) | const [protected] |
Definition at line 375 of file ConnectionGraph.cpp.
void ConnectionGraph::SetAutoAddNewConnections | ( | bool | autoAdd | ) |
Automatically add new connections to the connection graph.
Defaults to true If true, then the system will automatically add all new connections for you, assigning groupId 0 to these systems. If you want more control, you should call SetAutoAddNewConnections(false); When false, it is up to you to call RequestConnectionGraph and AddNewConnection to complete the graph However, this way you can choose which nodes are on the graph for this system and can assign groupIds to those nodes
[in] | autoAdd | true to automatically add new connections to the connection graph. False to not do so. |
Definition at line 96 of file ConnectionGraph.cpp.
void ConnectionGraph::SetGroupId | ( | ConnectionGraphGroupID | groupId | ) |
Sets our own group ID.
Only used and valid when SetAutoAddNewConnections(false) is called. Defaults to 0
[in] | groupId | Our group ID |
Definition at line 189 of file ConnectionGraph.cpp.
void ConnectionGraph::SetPassword | ( | const char * | password | ) |
Plaintext encoding of the password, or 0 for none. If you use a password, use secure connections.
Definition at line 77 of file ConnectionGraph.cpp.
void ConnectionGraph::SubscribeToGroup | ( | ConnectionGraphGroupID | groupId | ) |
Allows adding to the connection graph nodes with this groupId.
By default, you subscribe to group 0, which are all systems automatically added with SetAutoAddNewConnections(true) Calling this does not add nodes which were previously rejected due to an unsubscribed group - it only allows addition of nodes after the fact
[in] | groupId | Just a number representing a group. 0 is reserved to mean unassigned group ID, automatically added with SetAutoAddNewConnections(true) |
Definition at line 210 of file ConnectionGraph.cpp.
void ConnectionGraph::UnsubscribeFromGroup | ( | ConnectionGraphGroupID | groupId | ) |
Disables addition of graph nodes with this groupId.
Calling this does not add remove nodes with this groupId which are already present in the graph. It only disables addition of nodes after the fact
[in] | groupId | Just a number representing a group. 0 is reserved to mean unassigned group ID, automatically added with SetAutoAddNewConnections(true) |
Definition at line 214 of file ConnectionGraph.cpp.
void ConnectionGraph::Update | ( | void | ) | [virtual] |
Update is called every time a packet is checked for .
Reimplemented from PluginInterface2.
Definition at line 106 of file ConnectionGraph.cpp.
bool ConnectionGraph::autoAddNewConnections [protected] |
Definition at line 156 of file ConnectionGraph.h.
DataStructures::WeightedGraph<ConnectionGraph::SystemAddressAndGroupId, unsigned short, false> ConnectionGraph::graph [protected] |
Definition at line 155 of file ConnectionGraph.h.
ConnectionGraphGroupID ConnectionGraph::myGroupId [protected] |
Definition at line 157 of file ConnectionGraph.h.
RakNetTime ConnectionGraph::nextWeightUpdate [protected] |
Definition at line 151 of file ConnectionGraph.h.
DataStructures::OrderedList<SystemAddress, SystemAddress> ConnectionGraph::participantList [protected] |
Definition at line 153 of file ConnectionGraph.h.
char* ConnectionGraph::pw [protected] |
Definition at line 152 of file ConnectionGraph.h.
DataStructures::OrderedList<ConnectionGraphGroupID, ConnectionGraphGroupID> ConnectionGraph::subscribedGroups [protected] |
Definition at line 159 of file ConnectionGraph.h.