IN THIS ARTICLE
Searching for a Session
Searching for a Session
You search for a session by calling GridMate::StartGridSearch() after the session service has been started. The session settings and configuration are set in the GridMate::SearchParams, which acts as a base class for certain implementations of GridMate::SessionService.
Implementation of GridMate::SessionService | Implementation of GridMate::SearchParams |
|---|---|
| GridMate::LANSessionService | GridMate::LANSearchParams |
GridMate::SearchParams
The following table shows the supported parameters in GridMate::SearchParams.
| Parameter | Required | Default |
|---|---|---|
| m_localMember | Yes | |
| m_maxSessions | No | 8 |
| m_timeOutMs | No | 2000 |
| m_version | No | 1 |
GridMate::LANSearchParams
GridMate::LANSessionParams has the following additional parameters.
| Parameter | Required | Default | Description |
|---|---|---|---|
| m_serverAddress | No | Empty | The address of a server to search for. If empty, a broadcast address is used. |
| m_serverPort | Yes | The port that game servers monitor for searches. | |
| m_broadcastFrequencyMs | No | 1000 | The interval, in milliseconds, between search broadcast requests. |
Search Results
When a search is complete, the OnGridSearchComplete() event is called. The results are found in the GridMate::GridSearch argument.
GridMate::GridSearch contains an array of search results.
To query the size of the array, use GridMate::GridSearch::NumResults().
To query individual results, use GridMate::GridSearch::GetResult().
The GridMate::SearchInfo object contains more details about the session \(for example, the number of used and free player slots\) and can be used when
Joining a Session.
Events
The following table describes GridMate session search events.
| Event | Description |
|---|---|
| OnGridSearchStart | A grid search has started. |
| OnGridSearchComplete | A grid search has finished and contains the results. |
Examples
The following example searches for all available sessions. The example assumes that GridMate has been initialized, a session service has been registered, and the class MyClass is listening for session events.
void MyClass::StartSearch()
{
GridMate::IGridMate* gridMate = gEnv->pNetwork->GetGridMate();
if(gridMate)
{
GridMate::LANSearchParams params;
params.m_serverPort = 20000;
params.m_localMember = gridMate->GetOnlineService()->GetUser();
gridMate->StartGridSearch(¶ms);
}
}
void MyClass::OnGridSearchComplete(GridMate::GridSearch* search)
{
if(search->GetNumResults() > 0)
{
// Found sessions that match the specified criteria
}
}