Starting and Stopping the Session Service - Lumberyard User Guide

Starting and Stopping the Session Service

The session service is responsible for hosting or joining sessions and is represented by the GridMate::SessionService abstract class.

When a session service is created, a descriptor class derived from GridMate::SessionServiceDesc is passed in as a constructor argument.

The implementations of GridMate::SessionService that are included with the base Lumberyard engine are as follows.

Implementation Descriptor Description
GridMate::LANSessionService GridMate::SessionServiceDesc Sessions hosted over a local area network.

Starting a Session Service

Only one session service can be present per GridMate::IGridMate instance.


Attempting to register multiple session services causes an assert and overrides any previously registered session services.

You have two ways to start a session service:

  • Create a session service object and register it with GridMate.

  • Register an existing session service object with GridMate.

Starting Method Details
GridMate::StartGridMateService() Creates a session service object and registers it with GridMate::IGridMate.
GridMate::RegisterService() Registers an existing session service object with GridMate::IGridMate.

Stopping a Session Service

The method for stopping the session service depends on how the session service was started.

Starting Method Stopping Method Details
GridMate::StartGridMateService() See details. The session service is stopped when GridMate::IGridMate is destroyed by using the GridMate::GridMateDestroy() method.
GridMate::RegisterService() GridMate::UnregisterService() The session is service is stopped and memory freed when GridMate::UnregisterService() is called.


The following examples assume that GridMate has been initialized.

Starting and Stopping with GridMate::StartGridMateService

The following example uses GridMate::StartGridMateService.

void MyClass::StartSessionService() { IGridMate* gridMate = gEnv->pNetwork->GetGridMate(); if(gridMate) { // The session service is started and will be stopped when IGridMate is destroyed. GridMate::SessionServiceDesc desc; GridMate::StartGridMateService<GridMate::LANSessionService>(gridMate, desc); } }

Starting and Stopping with GridMate::RegisterService() and GridMate::UnregisterService()

The following example uses GridMate::RegisterService() and GridMate::UnregisterService().

void MyClass::StartSessionService() { IGridMate* gridMate = gEnv->pNetwork->GetGridMate() GridMate::SessionService* sessionService = nullptr; if(gridMate) { GridMate::SessionServiceDesc desc; sessionService = aznew GridMate::LANSessionService(desc); gridMate->RegisterService(sessionService); } return sessionService; } void MyClass::StopSessionService(GridMate::SessionService* sessionService) { IGridMate* gridMate = gEnv->pNetwork->GetGridMate() if(gridMate) { // Unregister the session service and free the session service pointer. gridMate->UnregisterService(sessionService); } }