void (*shutdown)(struct ast_taskprocessor_listener *listener);
};
-/*!
- * \brief A listener for taskprocessors
- *
- * \since 12.0.0
- *
- * When a taskprocessor's state changes, the listener
- * is notified of the change. This allows for tasks
- * to be addressed in whatever way is appropriate for
- * the module using the taskprocessor.
- */
-struct ast_taskprocessor_listener {
- /*! The callbacks the taskprocessor calls into to notify of state changes */
- const struct ast_taskprocessor_listener_callbacks *callbacks;
- /*! The taskprocessor that the listener is listening to */
- struct ast_taskprocessor *tps;
- /*! Data private to the listener */
- void *user_data;
-};
+struct ast_taskprocessor *ast_taskprocessor_listener_get_tps(const struct ast_taskprocessor_listener *listener);
+void *ast_taskprocessor_listener_get_user_data(const struct ast_taskprocessor_listener *listener);
/*!
* \brief Allocate a taskprocessor listener
/*! Indicates if the taskprocessor is in the process of shuting down */
unsigned int shutting_down:1;
};
+
+/*!
+ * \brief A listener for taskprocessors
+ *
+ * \since 12.0.0
+ *
+ * When a taskprocessor's state changes, the listener
+ * is notified of the change. This allows for tasks
+ * to be addressed in whatever way is appropriate for
+ * the module using the taskprocessor.
+ */
+struct ast_taskprocessor_listener {
+ /*! The callbacks the taskprocessor calls into to notify of state changes */
+ const struct ast_taskprocessor_listener_callbacks *callbacks;
+ /*! The taskprocessor that the listener is listening to */
+ struct ast_taskprocessor *tps;
+ /*! Data private to the listener */
+ void *user_data;
+};
+
#define TPS_MAX_BUCKETS 7
/*! \brief tps_singletons is the astobj2 container for taskprocessor singletons */
static struct ao2_container *tps_singletons;
return listener;
}
+struct ast_taskprocessor *ast_taskprocessor_listener_get_tps(const struct ast_taskprocessor_listener *listener)
+{
+ return listener->tps;
+}
+
+void *ast_taskprocessor_listener_get_user_data(const struct ast_taskprocessor_listener *listener)
+{
+ return listener->user_data;
+}
+
static void *default_listener_pvt_alloc(void)
{
struct default_taskprocessor_listener_pvt *pvt;
static void threadpool_tps_task_pushed(struct ast_taskprocessor_listener *listener,
int was_empty)
{
- struct ast_threadpool *pool = listener->user_data;
+ struct ast_threadpool *pool = ast_taskprocessor_listener_get_user_data(listener);
struct task_pushed_data *tpd;
SCOPED_AO2LOCK(lock, pool);
*/
static void threadpool_tps_emptied(struct ast_taskprocessor_listener *listener)
{
- struct ast_threadpool *pool = listener->user_data;
+ struct ast_threadpool *pool = ast_taskprocessor_listener_get_user_data(listener);
SCOPED_AO2LOCK(lock, pool);
if (pool->shutting_down) {
*/
static void threadpool_tps_shutdown(struct ast_taskprocessor_listener *listener)
{
- struct ast_threadpool *pool = listener->user_data;
+ struct ast_threadpool *pool = ast_taskprocessor_listener_get_user_data(listener);
if (pool->listener && pool->listener->callbacks->shutdown) {
pool->listener->callbacks->shutdown(pool->listener);
*/
static void test_task_pushed(struct ast_taskprocessor_listener *listener, int was_empty)
{
- struct test_listener_pvt *pvt = listener->user_data;
+ struct test_listener_pvt *pvt = ast_taskprocessor_listener_get_user_data(listener);
++pvt->num_pushed;
if (was_empty) {
++pvt->num_was_empty;
*/
static void test_emptied(struct ast_taskprocessor_listener *listener)
{
- struct test_listener_pvt *pvt = listener->user_data;
+ struct test_listener_pvt *pvt = ast_taskprocessor_listener_get_user_data(listener);
++pvt->num_emptied;
}
*/
static void test_shutdown(struct ast_taskprocessor_listener *listener)
{
- struct test_listener_pvt *pvt = listener->user_data;
+ struct test_listener_pvt *pvt = ast_taskprocessor_listener_get_user_data(listener);
pvt->shutdown = 1;
}