IN THIS ARTICLE
Hosting a Session
Hosting a Session
A session can be hosted by calling IGridMate::HostSession() after the session service has been started. The session settings and configuration are set in the GridMate::SessionParams argument, which acts as a base class for certain implementations of GridMate::SessionService.
Implementation of GridMate::SessionService | Implementation of GridMate::SessionParams |
|---|---|
| GridMate::LANSessionService | GridMate::LANSessionParams |
GridMate::SessionParams
The following table shows the supported parameters in GridMate::SessionParams.
| Parameter | Required | Default | Description |
|---|---|---|---|
| m_localMember | Yes | This is not required for a LAN session, only for consoles. | |
| m_topology | No | ST_PEER_TO_PEER | ST_CLIENT_SERVER: A client is only connected to the server. ST_PEER_TO_PEER: A client is connected to all other clients. |
| m_peerToPeerTimeout | No | 10000 | The time without a response, in seconds, after which a peer is disconnected. |
| m_numPublicSlots | Yes | The maximum number of players that can join the session. |
GridMate::LANSessionParams
GridMate::LANSessionParams has the following additional parameter.
| Parameter | Required | Default | Description |
|---|---|---|---|
| m_port | No | 0 | The port to monitor for search requests from other clients. If 0, this session is hidden to searches. Otherwise, the port number falls in the range from 1 through 65536. |
Events
The following table describes GridMate session service events.
| Event | Description |
|---|---|
| OnSessionCreated | A new session has just been created. |
| OnMemberJoined | A player has joined the session. |
| OnMemberLeaving | A player has left the session. |
Examples
The following example hosts a session. The example assumes that GridMate has been initialized and a session service registered.
bool MyClass::HostSession()
{
GridMate::IGridMate* gridMate = gEnv->pNetwork->GetGridMate();
if(gridMate)
{
GridMate::LANSessionParams params;
params.m_topology = Gridmate:ST_CLIENT_SERVER;
params.m_numPublicSlots = 10;
params.m_port = 10000;
params.m_flags = 0;
params.m_localMember = gridMate->GetOnlineService()->GetUser();
GridMate::Session session = gridMate->HostSession(¶ms, GridMate::CarrierDesc());
if(session != nullptr)
{
// Failed to create the session..
return true;
}
}
return false;
}