[asterisk-commits] kmoore: branch kmoore/stasis-presence_state r383503 - in /team/kmoore/stasis-...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Mar 20 22:59:16 CDT 2013


Author: kmoore
Date: Wed Mar 20 22:59:12 2013
New Revision: 383503

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=383503
Log:
Add initial stasis structures necessary to convert presence state

Modified:
    team/kmoore/stasis-presence_state/include/asterisk/presencestate.h
    team/kmoore/stasis-presence_state/main/presencestate.c

Modified: team/kmoore/stasis-presence_state/include/asterisk/presencestate.h
URL: http://svnview.digium.com/svn/asterisk/team/kmoore/stasis-presence_state/include/asterisk/presencestate.h?view=diff&rev=383503&r1=383502&r2=383503
==============================================================================
--- team/kmoore/stasis-presence_state/include/asterisk/presencestate.h (original)
+++ team/kmoore/stasis-presence_state/include/asterisk/presencestate.h Wed Mar 20 22:59:12 2013
@@ -149,6 +149,29 @@
  */
 int ast_presence_state_prov_del(const char *label);
 
+/*!
+ * \brief Get presence state message type
+ * \retval Stasis message type for presence state messages
+ * \since 12
+ */
+struct stasis_message_type *stasis_presence_state_message(void);
+
+/*!
+ * \brief Get presence state topic
+ * \retval Stasis topic for presence state messages
+ * \since 12
+ */
+struct stasis_topic *stasis_presence_state_topic_all(void);
+
+struct stasis_presence_state {
+		AST_DECLARE_STRING_FIELDS(
+			AST_STRING_FIELD(provider);	/*!< Provider that produced this presence state message */
+			AST_STRING_FIELD(subtype);	/*!< Subtype associated with this presence state message */
+			AST_STRING_FIELD(message);	/*!< The message to convey */
+		);
+		enum ast_presence_state state;		/*!< The state associated with this presence state message */
+};
+
 int ast_presence_state_engine_init(void);
 #endif
 

Modified: team/kmoore/stasis-presence_state/main/presencestate.c
URL: http://svnview.digium.com/svn/asterisk/team/kmoore/stasis-presence_state/main/presencestate.c?view=diff&rev=383503&r1=383502&r2=383503
==============================================================================
--- team/kmoore/stasis-presence_state/main/presencestate.c (original)
+++ team/kmoore/stasis-presence_state/main/presencestate.c Wed Mar 20 22:59:12 2013
@@ -52,6 +52,9 @@
 	{ "chat", AST_PRESENCE_CHAT},
 	{ "dnd", AST_PRESENCE_DND},
 };
+
+struct stasis_message_type *presence_state_message;
+struct stasis_topic *presence_state_topic_all;
 
 /*! \brief Flag for the queue */
 static ast_cond_t change_pending;
@@ -312,8 +315,37 @@
 	return NULL;
 }
 
+struct stasis_message_type *stasis_presence_state_message(void)
+{
+	return presence_state_message;
+}
+
+struct stasis_topic *stasis_presence_state_topic_all(void)
+{
+	return presence_state_topic_all;
+}
+
+static void presence_state_engine_cleanup(void)
+{
+	ao2_cleanup(presence_state_topic_all);
+	presence_state_topic_all = NULL;
+	ao2_cleanup(presence_state_message);
+	presence_state_message = NULL;
+}
+
 int ast_presence_state_engine_init(void)
 {
+	presence_state_message = stasis_message_type_create("stasis_presence_state_message");
+	if (!presence_state_message) {
+		return -1;
+	}
+
+	presence_state_topic_all = stasis_topic_create("stasis_presence_state_topic_all");
+	if (!presence_state_topic_all) {
+		return -1;
+	}
+	ast_register_atexit(presence_state_engine_cleanup);
+
 	ast_cond_init(&change_pending, NULL);
 	if (ast_pthread_create_background(&change_thread, NULL, do_presence_changes, NULL) < 0) {
 		ast_log(LOG_ERROR, "Unable to start presence state change thread.\n");




More information about the asterisk-commits mailing list