|
|
|
@ -138,30 +138,6 @@ struct stasis_cp_single *stasis_cp_single_create(struct stasis_cp_all *all,
|
|
|
|
|
{
|
|
|
|
|
RAII_VAR(struct stasis_cp_single *, one, NULL, ao2_cleanup);
|
|
|
|
|
|
|
|
|
|
one = stasis_cp_single_create_only(all, name);
|
|
|
|
|
if (!one) {
|
|
|
|
|
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_cp_single *stasis_cp_single_create_only(struct stasis_cp_all *all,
|
|
|
|
|
const char *name)
|
|
|
|
|
{
|
|
|
|
|
RAII_VAR(struct stasis_cp_single *, one, NULL, ao2_cleanup);
|
|
|
|
|
|
|
|
|
|
one = ao2_t_alloc(sizeof(*one), one_dtor, name);
|
|
|
|
|
if (!one) {
|
|
|
|
|
return NULL;
|
|
|
|
@ -176,25 +152,18 @@ struct stasis_cp_single *stasis_cp_single_create_only(struct stasis_cp_all *all,
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ao2_ref(one, +1);
|
|
|
|
|
return one;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int stasis_cp_single_forward(struct stasis_cp_single *from, struct stasis_cp_single *to)
|
|
|
|
|
{
|
|
|
|
|
from->forward_topic_to_all = stasis_forward_all(from->topic, to->topic);
|
|
|
|
|
if (!from->forward_topic_to_all) {
|
|
|
|
|
return -1;;
|
|
|
|
|
one->forward_topic_to_all = stasis_forward_all(one->topic, all->topic);
|
|
|
|
|
if (!one->forward_topic_to_all) {
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
from->forward_cached_to_all = stasis_forward_all(
|
|
|
|
|
stasis_caching_get_topic(from->topic_cached),
|
|
|
|
|
stasis_caching_get_topic(to->topic_cached));
|
|
|
|
|
if (!from->forward_cached_to_all) {
|
|
|
|
|
return -1;
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
ao2_ref(one, +1);
|
|
|
|
|
return one;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void stasis_cp_single_unsubscribe(struct stasis_cp_single *one)
|
|
|
|
|