Diffusion C API
6.5.12
|
Remote Servers feature. More...
Data Structures | |
struct | diffusion_remote_server_s |
struct | diffusion_create_remote_server_params_s |
struct | diffusion_remove_remote_server_params_s |
struct | diffusion_list_remote_servers_params_s |
struct | diffusion_check_remote_server_params_s |
Typedefs | |
typedef int(* | on_remote_server_created_cb )(DIFFUSION_REMOTE_SERVER_T *remote_server, LIST_T *errors, void *context) |
Callback when a remote server creation attempt has been made. More... | |
typedef int(* | on_remote_server_removed_cb )(void *context) |
Callback when a remote server removal attempt has been made. More... | |
typedef int(* | on_remote_servers_listed_cb )(LIST_T *remote_servers, void *context) |
Callback when a response is received from the server, returning a list of remote servers. More... | |
typedef struct DIFFUSION_CHECK_REMOTE_SERVER_RESPONSE_T | DIFFUSION_CHECK_REMOTE_SERVER_RESPONSE_T |
Opaque check remote server response struct. | |
typedef int(* | on_remote_server_checked_cb )(DIFFUSION_CHECK_REMOTE_SERVER_RESPONSE_T *response, void *context) |
Callback when a response is received from the server, returning the details of the remote server state. More... | |
Remote Servers feature.
This feature allows a client session to manage remote servers.
A remote server provides the configuration to connect to a Diffusion server belonging to a different cluster. Each server in the local cluster will establish a session with each remote server.
Higher level components, such as remote topic views, can specify the use of such remote servers by name. The connecting and disconnecting is handled automatically by the server (or servers in the same cluster) where the remote servers are defined.
A component can specify a remote server by name even if it does not exist (has not yet been created) and when the remote server is created the connection will take place automatically.
If a remote server is removed and there are components that depend upon it, those components will be disabled.
An example of the use of remote servers is within remote topic views (those that indicate that their source topics are to be taken from a different server) where the name of such a server can be specified.
Remote server configurations created through this feature are replicated across a cluster and persisted to disk.
The following access control restrictions are applied:
GLOBAL_PERMISSION_CONTROL_SERVER
permission. GLOBAL_PERMISSION_VIEW_SERVER
permission. typedef int(* on_remote_server_checked_cb)(DIFFUSION_CHECK_REMOTE_SERVER_RESPONSE_T *response, void *context) |
Callback when a response is received from the server, returning the details of the remote server state.
response | The response from the server |
context | User supplied context. |
typedef int(* on_remote_server_created_cb)(DIFFUSION_REMOTE_SERVER_T *remote_server, LIST_T *errors, void *context) |
Callback when a remote server creation attempt has been made.
If the remote server definition is nil, this could mean an error has occured. These may include:
GLOBAL_PERMISSION_CONTROL_SERVER
permission remote_server | The remote server created if no errors are returned |
errors | Errors encounted during the attempted creation of the remote server |
context | User supplied context. |
typedef int(* on_remote_server_removed_cb)(void *context) |
Callback when a remote server removal attempt has been made.
context | User supplied context. |
typedef int(* on_remote_servers_listed_cb)(LIST_T *remote_servers, void *context) |
Callback when a response is received from the server, returning a list of remote servers.
remote_servers | The list of remote servers |
context | User supplied context. |
bool diffusion_check_remote_server | ( | SESSION_T * | session, |
const DIFFUSION_CHECK_REMOTE_SERVER_PARAMS_T | params, | ||
DIFFUSION_API_ERROR * | api_error | ||
) |
Checks the current state of a named remote server.
session | The current session. If NULL, this function returns immediately. |
params | Parameters defining the diffusion_check_remote_server request and callbacks. |
api_error | Populated on API error. Can be NULL. |
api_error
pointer has been provided, this will be populated with the error information and should be freed with diffusion_api_error_free
. DIFFUSION_REMOTE_SERVER_CONNECTION_STATE_T diffusion_check_remote_server_response_get_state | ( | DIFFUSION_CHECK_REMOTE_SERVER_RESPONSE_T * | response | ) |
Returns the state of the connection of the remote server.
response | the check remote server response |
bool diffusion_create_remote_server | ( | SESSION_T * | session, |
const DIFFUSION_CREATE_REMOTE_SERVER_PARAMS_T | params, | ||
DIFFUSION_API_ERROR * | api_error | ||
) |
Create a new remote server instance with default connection options.
If a remote server with the same name already exists an error will be returned.
session | The current session. If NULL, this function returns immediately. |
params | Parameters defining the diffusion_create_remote_server request and callbacks. |
api_error | Populated on API error. Can be NULL. |
api_error
pointer has been provided, this will be populated with the error information and should be freed with diffusion_api_error_free
. bool diffusion_list_remote_servers | ( | SESSION_T * | session, |
const DIFFUSION_LIST_REMOTE_SERVERS_PARAMS_T | params, | ||
DIFFUSION_API_ERROR * | api_error | ||
) |
Lists all the remote servers that have been created.
session | The current session. If NULL, this function returns immediately. |
params | Parameters defining the diffusion_list_remote_servers request and callbacks. |
api_error | Populated on API error. Can be NULL. |
api_error
pointer has been provided, this will be populated with the error information and should be freed with diffusion_api_error_free
. bool diffusion_remove_remote_server | ( | SESSION_T * | session, |
const DIFFUSION_REMOVE_REMOTE_SERVER_PARAMS_T | params, | ||
DIFFUSION_API_ERROR * | api_error | ||
) |
Remove a named remote server if it exists.
If the named remote server does not exist the callback will return without an error
When a named remote server is removed, any components that specify it would be disabled.
session | The current session. If NULL, this function returns immediately. |
params | Parameters defining the diffusion_remove_remote_server request and callbacks. |
api_error | Populated on API error. Can be NULL. |
api_error
pointer has been provided, this will be populated with the error information and should be freed with diffusion_api_error_free
.