| Asterisk - The Open Source Telephony Project GIT-master-27fb039
    | 
Typical cache pattern for Stasis topics. More...

Go to the source code of this file.
| Data Structures | |
| struct | stasis_cp_all | 
| struct | stasis_cp_single | 
| Functions | |
| static void | all_dtor (void *obj) | 
| static void | one_dtor (void *obj) | 
| struct stasis_cache * | stasis_cp_all_cache (struct stasis_cp_all *all) | 
| Get the cache. | |
| struct stasis_cp_all * | stasis_cp_all_create (const char *name, snapshot_get_id id_fn) | 
| Create an all instance of the cache pattern. | |
| struct stasis_topic * | stasis_cp_all_topic (struct stasis_cp_all *all) | 
| Get the aggregate topic. | |
| struct stasis_topic * | stasis_cp_all_topic_cached (struct stasis_cp_all *all) | 
| Get the caching topic. | |
| int | stasis_cp_single_accept_message_type (struct stasis_cp_single *one, struct stasis_message_type *type) | 
| Indicate to an instance that we are interested in a message type. | |
| struct stasis_cp_single * | stasis_cp_single_create (struct stasis_cp_all *all, const char *name) | 
| Create the 'one' side of the cache pattern. | |
| int | stasis_cp_single_set_filter (struct stasis_cp_single *one, enum stasis_subscription_message_filter filter) | 
| Set the message type filtering level on a cache. | |
| struct stasis_topic * | stasis_cp_single_topic (struct stasis_cp_single *one) | 
| Get the topic for this instance. | |
| struct stasis_topic * | stasis_cp_single_topic_cached (struct stasis_cp_single *one) | 
| Get the caching topic for this instance. | |
| void | stasis_cp_single_unsubscribe (struct stasis_cp_single *one) | 
| Stops caching and forwarding messages. | |
| struct stasis_cp_single * | stasis_cp_sink_create (struct stasis_cp_all *all, const char *name) | 
| Create a sink in the cache pattern. | |
Typical cache pattern for Stasis topics.
Definition in file stasis_cache_pattern.c.
| 
 | static | 
Definition at line 51 of file stasis_cache_pattern.c.
References ao2_cleanup, stasis_cp_all::cache, stasis_cp_all::forward_all_to_cached, NULL, stasis_forward_cancel(), stasis_cp_all::topic, and stasis_cp_all::topic_cached.
Referenced by stasis_cp_all_create().
| 
 | static | 
Definition at line 126 of file stasis_cache_pattern.c.
References ao2_cleanup, ast_assert, stasis_cp_single::forward_cached_to_all, stasis_cp_single::forward_topic_to_all, NULL, stasis_cp_single::topic, and stasis_cp_single::topic_cached.
Referenced by stasis_cp_sink_create().
| struct stasis_cache * stasis_cp_all_cache | ( | struct stasis_cp_all * | all | ) | 
Get the cache.
This is the shared cache for all corresponding stasis_cp_single objects.
| all | All side caching pattern object. | 
| NULL | if all is NULL | 
Definition at line 118 of file stasis_cache_pattern.c.
References stasis_cp_all::cache, and NULL.
Referenced by ast_endpoint_cache().
| struct stasis_cp_all * stasis_cp_all_create | ( | const char * | name, | 
| snapshot_get_id | id_fn | ||
| ) | 
Create an all instance of the cache pattern.
This object is AO2 managed, so dispose of it with ao2_cleanup().
| name | Base name of the topics. | 
| id_fn | Identity function for the cache. | 
| NULL | on error. | 
Definition at line 65 of file stasis_cache_pattern.c.
References all_dtor(), ao2_ref, ao2_t_alloc, ast_asprintf, ast_atomic_fetchadd_int(), ast_free, stasis_cp_all::cache, stasis_cp_all::forward_all_to_cached, name, NULL, stasis_cache_create(), stasis_forward_all(), stasis_topic_create(), stasis_cp_all::topic, and stasis_cp_all::topic_cached.
Referenced by ast_endpoint_stasis_init().
| struct stasis_topic * stasis_cp_all_topic | ( | struct stasis_cp_all * | all | ) | 
Get the aggregate topic.
This topic aggregates all messages published to corresponding stasis_cp_single_topic() topics.
| all | All side caching pattern object. | 
| NULL | if all is NULL | 
Definition at line 101 of file stasis_cache_pattern.c.
References NULL, and stasis_cp_all::topic.
Referenced by ast_endpoint_topic_all().
| struct stasis_topic * stasis_cp_all_topic_cached | ( | struct stasis_cp_all * | all | ) | 
Get the caching topic.
This topic aggregates all messages from the corresponding stasis_cp_single_topic_cached() topics.
Note that one normally only subscribes to the caching topic, since data is fed to it from its upstream topic.
| all | All side caching pattern object. | 
| NULL | if all is NULL | 
Definition at line 109 of file stasis_cache_pattern.c.
References NULL, and stasis_cp_all::topic_cached.
Referenced by ast_endpoint_topic_all_cached().
| int stasis_cp_single_accept_message_type | ( | struct stasis_cp_single * | one, | 
| struct stasis_message_type * | type | ||
| ) | 
Indicate to an instance that we are interested in a message type.
This will cause the caching topic to receive messages of the given message type. This enables internal filtering in the stasis message bus to reduce messages.
| one | One side of the cache pattern. | 
| type | The message type we wish to receive. | 
| 0 | on success | 
| -1 | failure | 
Definition at line 222 of file stasis_cache_pattern.c.
References stasis_caching_accept_message_type(), stasis_cp_single::topic_cached, and type.
Referenced by endpoint_internal_create().
| struct stasis_cp_single * stasis_cp_single_create | ( | struct stasis_cp_all * | all, | 
| const char * | name | ||
| ) | 
Create the 'one' side of the cache pattern.
Create the 'one' and forward to all's topic and topic_cached.
Dispose of using stasis_cp_single_unsubscribe().
| all | Corresponding all side. | 
| name | Base name for the topics. | 
Definition at line 139 of file stasis_cache_pattern.c.
References ao2_ref, stasis_cp_single::forward_cached_to_all, stasis_cp_single::forward_topic_to_all, name, NULL, stasis_caching_get_topic(), stasis_cp_sink_create(), stasis_forward_all(), stasis_cp_all::topic, stasis_cp_single::topic, stasis_cp_all::topic_cached, and stasis_cp_single::topic_cached.
Referenced by endpoint_internal_create().
| int stasis_cp_single_set_filter | ( | struct stasis_cp_single * | one, | 
| enum stasis_subscription_message_filter | filter | ||
| ) | 
Set the message type filtering level on a cache.
This will cause the underlying subscription to filter messages according to the provided filter level. For example if selective is used then only messages matching those provided to stasis_subscription_accept_message_type will be raised to the subscription callback.
| one | One side of the cache pattern. | 
| filter | What filter to use | 
| 0 | on success | 
| -1 | failure | 
Definition at line 231 of file stasis_cache_pattern.c.
References filter(), stasis_caching_set_filter(), and stasis_cp_single::topic_cached.
Referenced by endpoint_internal_create().
| struct stasis_topic * stasis_cp_single_topic | ( | struct stasis_cp_single * | one | ) | 
Get the topic for this instance.
This is the topic to which one would post instance-specific messages, or subscribe for single-instance, uncached messages.
| one | One side of the cache pattern. | 
| NULL | if one is NULL | 
Definition at line 205 of file stasis_cache_pattern.c.
References NULL, and stasis_cp_single::topic.
Referenced by ast_endpoint_topic(), and endpoint_internal_create().
| struct stasis_topic * stasis_cp_single_topic_cached | ( | struct stasis_cp_single * | one | ) | 
Get the caching topic for this instance.
Note that one normally only subscribes to the caching topic, since data is fed to it from its upstream topic.
| one | One side of the cache pattern. | 
| NULL | if one is NULL | 
Definition at line 213 of file stasis_cache_pattern.c.
References NULL, stasis_caching_get_topic(), and stasis_cp_single::topic_cached.
Referenced by ast_endpoint_topic_cached().
| void stasis_cp_single_unsubscribe | ( | struct stasis_cp_single * | one | ) | 
Stops caching and forwarding messages.
| one | One side of the cache pattern. | 
Definition at line 189 of file stasis_cache_pattern.c.
References ao2_cleanup, stasis_cp_single::forward_cached_to_all, stasis_cp_single::forward_topic_to_all, NULL, stasis_caching_unsubscribe(), stasis_forward_cancel(), and stasis_cp_single::topic_cached.
Referenced by endpoint_dtor().
| struct stasis_cp_single * stasis_cp_sink_create | ( | struct stasis_cp_all * | all, | 
| const char * | name | ||
| ) | 
Create a sink in the cache pattern.
Create the 'one' but do not automatically forward to the all's topic. This is useful when aggregating other topic's messages created with stasis_cp_single_create in another caching topic without replicating those messages in the all's topics.
Dispose of using stasis_cp_single_unsubscribe().
| all | Corresponding all side. | 
| name | Base name for the topics. | 
Definition at line 162 of file stasis_cache_pattern.c.
References ao2_ref, ao2_t_alloc, stasis_cp_all::cache, name, NULL, one_dtor(), stasis_caching_topic_create(), stasis_topic_create(), stasis_cp_single::topic, and stasis_cp_single::topic_cached.
Referenced by endpoint_internal_create(), and stasis_cp_single_create().