ConnectionGraph Class Reference
[ConnectionGraph]

A connection graph. Each peer will know about all other peers. More...

#include <ConnectionGraph.h>

Inheritance diagram for ConnectionGraph:

PluginInterface List of all members.

Public Member Functions

void SetPassword (const char *password)
 Plaintext encoding of the password, or 0 for none. If you use a password, use secure connections.
DataStructures::WeightedGraph<
ConnectionGraph::PlayerIdAndGroupId,
unsigned short, false > * 
GetGraph (void)
void SetAutoAddNewConnections (bool autoAdd)
void RequestConnectionGraph (RakPeerInterface *peer, PlayerID playerId)
void AddNewConnection (RakPeerInterface *peer, PlayerID playerId, ConnectionGraphGroupID groupId)
void SetGroupId (ConnectionGraphGroupID groupId)
void SubscribeToGroup (ConnectionGraphGroupID groupId)
void UnsubscribeFromGroup (ConnectionGraphGroupID groupId)
virtual void OnDisconnect (RakPeerInterface *peer)
virtual void Update (RakPeerInterface *peer)
virtual PluginReceiveResult OnReceive (RakPeerInterface *peer, Packet *packet)
virtual void OnCloseConnection (RakPeerInterface *peer, PlayerID playerId)

Protected Member Functions

void HandleDroppedConnection (RakPeerInterface *peer, PlayerID playerId, unsigned char packetId)
void DeleteFromPeerList (PlayerID playerId)
void OnNewIncomingConnection (RakPeerInterface *peer, Packet *packet)
void OnConnectionRequestAccepted (RakPeerInterface *peer, Packet *packet)
void OnConnectionGraphRequest (RakPeerInterface *peer, Packet *packet)
void OnConnectionGraphReply (RakPeerInterface *peer, Packet *packet)
void OnConnectionGraphUpdate (RakPeerInterface *peer, Packet *packet)
void OnNewConnection (RakPeerInterface *peer, Packet *packet)
bool OnConnectionLost (RakPeerInterface *peer, Packet *packet, unsigned char packetId)
void OnConnectionAddition (RakPeerInterface *peer, Packet *packet)
void OnConnectionRemoval (RakPeerInterface *peer, Packet *packet)
void SendConnectionGraph (PlayerID target, unsigned char packetId, RakPeerInterface *peer)
void SerializeWeightedGraph (RakNet::BitStream *out, const DataStructures::WeightedGraph< ConnectionGraph::PlayerIdAndGroupId, unsigned short, false > &g) const
bool DeserializeWeightedGraph (RakNet::BitStream *inBitstream, RakPeerInterface *peer)
void AddAndRelayConnection (DataStructures::OrderedList< PlayerID, PlayerID > &ignoreList, const PlayerIdAndGroupId &conn1, const PlayerIdAndGroupId &conn2, unsigned short ping, RakPeerInterface *peer)
bool RemoveAndRelayConnection (DataStructures::OrderedList< PlayerID, PlayerID > &ignoreList, unsigned char packetId, const PlayerID node1, const PlayerID node2, RakPeerInterface *peer)
void RemoveParticipant (PlayerID playerId)
void AddParticipant (PlayerID playerId)
void BroadcastGraphUpdate (DataStructures::OrderedList< PlayerID, PlayerID > &ignoreList, RakPeerInterface *peer)
void NotifyUserOfRemoteConnection (const PlayerIdAndGroupId &conn1, const PlayerIdAndGroupId &conn2, unsigned short ping, RakPeerInterface *peer)
bool IsNewRemoteConnection (const PlayerIdAndGroupId &conn1, const PlayerIdAndGroupId &conn2, RakPeerInterface *peer)
bool DeserializeIgnoreList (DataStructures::OrderedList< PlayerID, PlayerID > &ignoreList, RakNet::BitStream *inBitstream)
void SerializeIgnoreListAndBroadcast (RakNet::BitStream *outBitstream, DataStructures::OrderedList< PlayerID, PlayerID > &ignoreList, RakPeerInterface *peer)

Protected Attributes

RakNetTime nextWeightUpdate
char * pw
DataStructures::OrderedList<
PlayerID, PlayerID
participantList
DataStructures::WeightedGraph<
ConnectionGraph::PlayerIdAndGroupId,
unsigned short, false > 
graph
bool autoAddNewConnections
ConnectionGraphGroupID myGroupId
DataStructures::OrderedList<
ConnectionGraphGroupID, ConnectionGraphGroupID > 
subscribedGroups

Classes

struct  PlayerIdAndGroupId
 A node in the connection graph. More...

Detailed Description

A connection graph. Each peer will know about all other peers.


Member Function Documentation

void ConnectionGraph::AddNewConnection RakPeerInterface peer,
PlayerID  playerId,
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

Parameters:
[in] peer The instance of RakPeer to send through
[in] playerId 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)

DataStructures::WeightedGraph< ConnectionGraph::PlayerIdAndGroupId, unsigned short, false > * ConnectionGraph::GetGraph void   ) 
 

Returns the connection graph

Returns:
The connection graph, stored as map of adjacency lists

void ConnectionGraph::OnCloseConnection RakPeerInterface peer,
PlayerID  playerId
[virtual]
 

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

Parameters:
[in] peer the instance of RakPeer that is calling Receive
[in] playerId The system whose connection was closed

Reimplemented from PluginInterface.

void ConnectionGraph::OnDisconnect RakPeerInterface peer  )  [virtual]
 

Called when RakPeer is shutdown

Parameters:
[in] peer the instance of RakPeer that is calling Receive

Reimplemented from PluginInterface.

PluginReceiveResult ConnectionGraph::OnReceive RakPeerInterface peer,
Packet packet
[virtual]
 

OnReceive is called for every packet.

Parameters:
[in] peer the instance of RakPeer that is calling Receive
[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 PluginInterface.

void ConnectionGraph::RequestConnectionGraph RakPeerInterface peer,
PlayerID  playerId
 

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 playerId is or should be a node on the connection graph

Parameters:
[in] peer The instance of RakPeer to send through
[in] playerId The system to send to

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

Parameters:
[in] autoAdd true to automatically add new connections to the connection graph. False to not do so.

void ConnectionGraph::SetGroupId ConnectionGraphGroupID  groupId  ) 
 

Sets our own group ID Only used and valid when SetAutoAddNewConnections(false) is called. Defaults to 0

Parameters:
[in] groupId Our group ID

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

Parameters:
[in] groupId Just a number representing a group. 0 is reserved to mean unassigned group ID, automatically added with SetAutoAddNewConnections(true)

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

Parameters:
[in] groupId Just a number representing a group. 0 is reserved to mean unassigned group ID, automatically added with SetAutoAddNewConnections(true)

void ConnectionGraph::Update RakPeerInterface peer  )  [virtual]
 

Update is called every time a packet is checked for .

Parameters:
[in] peer - the instance of RakPeer that is calling Receive

Reimplemented from PluginInterface.


The documentation for this class was generated from the following files:
Generated on Sat Oct 14 08:37:38 2006 for RakNet by  doxygen 1.4.6-NO