NAME
adapter_initialize
- Must be the first call by gcs
to initialize the adapter.
SYNOPSIS
#include <game-carrier/server.h>
GC_ADAPTER_EVENT
GCT_INT adapter_initialize(
GCT_INT adapter_id,
struct core_api * api,
GCT_CPTR load_path);
Parameters:
adapter_id
GCT_INT
Unique identifier of the adapter.api
struct
Pointer to the API structure with adapter methods.load_path
GCT_CPTR
Value for thedir
property in the config file.
RETURN VALUE
Returns a value of 0
to indicate successful execution.
A non-zero value is returned in the case of an error, in which
the loading of gcs
will be halted.
DESCRIPTION
The adapter_initialize
function serves as the initial step for the adapter,
being the first call made by the gcs
before any other adapter methods.
Its purpose is to initialize the adapter, and it returns a value of 0
to indicate successful initialization. However, if there is an error
during initialization, the function returns a non-zero value, prompting
the gcs
to abort loading the adapter.
The adapter_id
parameter represents the unique identifier of the adapter. This
value is used to make the discovery of the adapter possible in future calls.
The api
parameter is a pointer to a structure that holds the server API.
Certain methods, such as logging, are available before initialization,
while others will become accessible after the application initialization
process.
The load_path
parameter represents the value assigned to the
dir
field in the adapter’s configuration file. This value can be utilized
by the adapter according to its requirements. It’s worth noting that some
adapters may choose to ignore this value.
EXAMPLE
#include <game-carrier/server.h>
#include <stdlib.h>
#include <string.h>
struct core_api api;
int adapter_id = -1;
char * adapter_load_path;
GC_ADAPTER_EVENT
GCT_INT adapter_initialize(
GCT_INT id,
struct core_api * core_api,
GCT_CPTR load_path)
{
api = *core_api;
adapter_id = id;
adapter_load_path = strdup(load_path);
/* Here is good place to initialize/allocate global adapter's resources */
return 0;
}
GC_ADAPTER_EVENT
void adapter_finalize(GCT_INT id)
{
/* Here is good place to deinitialize/free lobal adapter's resources */
free(adapter_load_path);
}