summaryrefslogtreecommitdiff
path: root/main/devicestate.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/devicestate.c')
-rw-r--r--main/devicestate.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/main/devicestate.c b/main/devicestate.c
index 158d1f817..7b52f00af 100644
--- a/main/devicestate.c
+++ b/main/devicestate.c
@@ -734,6 +734,22 @@ struct stasis_topic *ast_device_state_topic(const char *device)
return stasis_topic_pool_get_topic(device_state_topic_pool, device);
}
+int ast_device_state_clear_cache(const char *device)
+{
+ RAII_VAR(struct stasis_message *, cached_msg, NULL, ao2_cleanup);
+ RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
+
+ if (!(cached_msg = stasis_cache_get(ast_device_state_cache(),
+ ast_device_state_message_type(), device))) {
+ /* nothing to clear */
+ return -1;
+ }
+
+ msg = stasis_cache_clear_create(cached_msg);
+ stasis_publish(ast_device_state_topic(device), msg);
+ return 0;
+}
+
int ast_publish_device_state_full(
const char *device,
enum ast_device_state state,