FCMHost Class Reference
[FullyConnectedMeshHost]

#include <FCMHost.h>

Inheritance diagram for FCMHost:

PluginInterface2

List of all members.

Public Member Functions

 FCMHost ()
 Constructor.
virtual ~FCMHost ()
 Destructor.
void AddParticipant (RakNetGUID guid, FCMHostGroupID groupId=0)
void RemoveParticipantFromAllGroups (RakNetGUID guid)
bool RemoveParticipant (RakNetGUID guid, FCMHostGroupID groupId=0)
void SetAutoAddNewConnections (bool autoAdd, FCMHostGroupID groupId=0)
FCMHostState GetHostState (FCMHostGroupID groupId=0)
bool HasHost (FCMHostGroupID groupId=0)
RakNetGUID GetHost (FCMHostGroupID groupId=0)
void SetHostPriority (int priority, FCMHostGroupID groupId=0)
void GetParticipants (DataStructures::List< RakNetGUID > &participants, FCMHostGroupID groupId=0)
 Get all participants in a group.
void Clear (void)
 Reset the system, clearing all data.
virtual PluginReceiveResult OnReceive (Packet *packet)
virtual void OnShutdown (void)
 Called when RakPeer is shutdown.
virtual void OnClosedConnection (SystemAddress systemAddress, RakNetGUID rakNetGUID, PI2_LostConnectionReason lostConnectionReason)
virtual void OnNewConnection (SystemAddress systemAddress, RakNetGUID rakNetGUID, bool isIncoming)


Detailed Description

Precondition:
A fully connected mesh is required among the participants - e.g. all participants must eventually connect to all other participants. Otherwise the algorithm will not return the same host among all systems.
Note:
ID_FCM_HOST_CHANGED is returned to RakPeerInterface::Receive() every time the host changes.

Member Function Documentation

void FCMHost::AddParticipant ( RakNetGUID  guid,
FCMHostGroupID  groupId = 0 
)

Add a connected system to the list of systems to manage host tracking

Parameters:
[in] guid The system to add
[in] groupId Which group to assign this system to. Groups are used if you want to manage more than one list at a time. Use 0 if you don't care.

RakNetGUID FCMHost::GetHost ( FCMHostGroupID  groupId = 0  ) 

Get the current host. Only meaningful when GetHostState is FCMHS_WE_ARE_HOST or FCMHS_REMOTE_SYSTEM_IS_HOST

Parameters:
[in] groupId Which group we are referring to.
Returns:
The Guid of the host

FCMHostState FCMHost::GetHostState ( FCMHostGroupID  groupId = 0  ) 

Get the current state of the system for determing the host

Parameters:
[in] groupId Which group we are referring to.

bool FCMHost::HasHost ( FCMHostGroupID  groupId = 0  ) 

Returns if we are connected to other systems, and one of those systems (possibly ourselves) is a host If we are not connected to other systems, then our own system is always the host, and in a sense the host is undetermined This function could also be named HasValidHost, or IsHostDetermined

Parameters:
[in] groupId Which group we are referring to.
Returns:
true If there is a networked host

void FCMHost::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

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 PluginInterface2.

void FCMHost::OnNewConnection ( SystemAddress  systemAddress,
RakNetGUID  rakNetGUID,
bool  isIncoming 
) [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 PluginInterface2.

PluginReceiveResult FCMHost::OnReceive ( Packet packet  )  [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 PluginInterface2.

bool FCMHost::RemoveParticipant ( RakNetGUID  guid,
FCMHostGroupID  groupId = 0 
)

Remove a participant added with AddParticipant(), or automatically added with SetAutoAddNewConnections()

Parameters:
[in] guid The system to remove
[in] groupId Which group to remove this system from. Groups are used if you want to manage more than one list at a time. Use 0 if you don't care.
Returns:
True if done, false if not

void FCMHost::RemoveParticipantFromAllGroups ( RakNetGUID  guid  ) 

Remove a participant added with AddParticipant(), or automatically added with SetAutoAddNewConnections(), from all groups

Parameters:
[in] guid The system to remove

void FCMHost::SetAutoAddNewConnections ( bool  autoAdd,
FCMHostGroupID  groupId = 0 
)

If set to true, all subsequent new connections will be added to groupId. Defaults to false

Parameters:
[in] autoAdd If true, removes the need to call AddParticipant() on ID_NEW_INCOMING_CONNECTION or ID_CONNECTION_REQUEST_ACCEPTED Which group to automatically add systems to. Unused parameter if autoAdd is false

void FCMHost::SetHostPriority ( int  priority,
FCMHostGroupID  groupId = 0 
)

While calculating the host, priority gives a boost to which system will be host If two systems have the same priority, the system with the lower GUID will be host. priority defaults to 0 This won't change the host after the fact, only before adding that system with AddParticipant

Parameters:
[in] priority The priority level to set. Just a number for comparison, set to whatever you want.
[in] groupId Which group we are referring to.


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

Generated on Tue Mar 31 19:05:29 2009 for RakNet by  doxygen 1.5.7.1