Stasis: Create human friendly taskprocessor/serializer names.
authorRichard Mudgett <rmudgett@digium.com>
Thu, 7 Jan 2016 01:09:59 +0000 (19:09 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Sat, 9 Jan 2016 04:11:29 +0000 (22:11 -0600)
Stasis name formats:
subm:<topic>-<seq> -- Stasis subscription mailbox task processor
subp:<topic>-<seq> -- Stasis subscription thread pool serializer

Change-Id: Id19234b306e3594530bb040bc95d977f18ac7bfd

main/stasis.c

index fe940d3..9fe3a2a 100644 (file)
@@ -462,22 +462,29 @@ struct stasis_subscription *internal_stasis_subscribe(
        }
 
        /* The ao2 lock is used for join_cond. */
-       sub = ao2_t_alloc(sizeof(*sub), subscription_dtor, topic->name);
+       sub = ao2_t_alloc(sizeof(*sub), subscription_dtor, stasis_topic_name(topic));
        if (!sub) {
                return NULL;
        }
        ast_uuid_generate_str(sub->uniqueid, sizeof(sub->uniqueid));
 
        if (needs_mailbox) {
-               /* With a small number of subscribers, a thread-per-sub is
-                * acceptable. For larger number of subscribers, a thread
+               char tps_name[AST_TASKPROCESSOR_MAX_NAME + 1];
+
+               /* Create name with seq number appended. */
+               ast_taskprocessor_build_name(tps_name, sizeof(tps_name), "sub%c:%s",
+                       use_thread_pool ? 'p' : 'm',
+                       stasis_topic_name(topic));
+
+               /*
+                * With a small number of subscribers, a thread-per-sub is
+                * acceptable. For a large number of subscribers, a thread
                 * pool should be used.
                 */
                if (use_thread_pool) {
-                       sub->mailbox = ast_threadpool_serializer(sub->uniqueid, pool);
+                       sub->mailbox = ast_threadpool_serializer(tps_name, pool);
                } else {
-                       sub->mailbox = ast_taskprocessor_get(sub->uniqueid,
-                               TPS_REF_DEFAULT);
+                       sub->mailbox = ast_taskprocessor_get(tps_name, TPS_REF_DEFAULT);
                }
                if (!sub->mailbox) {
                        return NULL;