Inspect the state of all connections to an existing database.
MCO_RET mco_db_sniffer( /*IN*/ mco_db_h db, /*IN*/ mco_sniffer_callback_t callback, /*IN*/ mco_sniffer_policy policy );
db | The database handle of an existing database |
callback | A sniffer callback function |
policy |
An enumerated value for the sniffer policy |
This function inspects the state of all connections to the database using the provided user's callback function. It performs database recovery if dead connections were detected. The callback user defined function must implement logic (using OS, timeout, watchdogs,...) to detect dead database connections. If this callback returns MCO_S_DEAD_CONNECTION then recovery of the database will be performed according to the sniffer policy specified.
The following enum defines the sniffer policy (i.e. when sniffer should call the user-defined callback to check the status of the connection):
typedef enum mco_sniffer_policy { MCO_SNIFFER_INSPECT_ACTIVE_CONNECTIONS, MCO_SNIFFER_INSPECT_ACTIVE_TRANSACTIONS, MCO_SNIFFER_INSPECT_HUNG_TRANSACTIONS } mco_sniffer_policy;
Nothing should be done to affect the input parameters, and the function should return
MCO_S_DEAD_CONNECTION
to force database recovery orMCO_S_OK
if the connection is ok; any other return code will causemco_db_sniffer()
to interrupt and return this error code.
MCO_S_OK | The sniffer process completed successfully |
MCO_E_ILLEGAL_PARAM | An invalid policy value was specified |
User Specified Return Code |
A user specified return code was passed from the user-defined callback function to abort the sniffer |
The example code demonstrating how to use this function is too long to include here. Please refer to the SDK sample "samples/native/core/19-recovery/sniffer".