struct stasis_cp_single *stasis_cp_single_create(struct stasis_cp_all *all, const char *name) { RAII_VAR(struct stasis_cp_single *, one, NULL, ao2_cleanup); one = ao2_alloc(sizeof(*one), one_dtor); if (!one) { return NULL; } one->topic = stasis_topic_create(name); if (!one->topic) { return NULL; } one->topic_cached = stasis_caching_topic_create(one->topic, all->cache); if (!one->topic_cached) { return NULL; } one->forward_topic_to_all = stasis_forward_all(one->topic, all->topic); if (!one->forward_topic_to_all) { return NULL; } one->forward_cached_to_all = stasis_forward_all( stasis_caching_get_topic(one->topic_cached), all->topic_cached); if (!one->forward_cached_to_all) { return NULL; } ao2_ref(one, +1); return one; }
struct stasis_topic *stasis_cp_single_topic_cached( struct stasis_cp_single *one) { if (!one) { return NULL; } return stasis_caching_get_topic(one->topic_cached); }
struct stasis_cp_single *stasis_cp_single_create(struct stasis_cp_all *all, const char *name) { struct stasis_cp_single *one; one = stasis_cp_sink_create(all, name); if (!one) { return NULL; } one->forward_topic_to_all = stasis_forward_all(one->topic, all->topic); one->forward_cached_to_all = stasis_forward_all( stasis_caching_get_topic(one->topic_cached), all->topic_cached); if (!one->forward_topic_to_all || !one->forward_cached_to_all) { ao2_ref(one, -1); return NULL; } return one; }