bps_register_channel_destroy_handler()

Registers a callback that will be invoked when the active channel is being destroyed.

Synopsis:

#include <bps/bps.h>
 
BPS_API int bps_register_channel_destroy_handler(void(*destroy_handler)(void *), void *data)

Arguments:

destroy_handler
The callback that is invoked on channel destruction.
data
The user data that is passed to the destroy_handler.

Library:

libbps

Description:

The function is used for services that have channel specific resources allocated that require cleanup when the channel is destroyed. At a minimum, most services have at least one file descriptor that needs to be closed.

A channel can be destroyed for a variety of reason that include:

  • The thread that created the channel has terminated.

  • The application has called the bps_channel_destroy() function.

  • The final bps_shutdown() function has been called, and all channels are being destroyed.

The destroy_handler is invoked when the channel is destroyed and the user data is passed into the function as the first argument. In the destroy_handler, do not call BPS library functions that use the channel that is being destroyed, with the exception of the bps_get_domain_data() function.

Returns:

BPS_SUCCESS when the handler has successfully been registered along with the data, BPS_FAILURE with the errno value set otherwise.