[svn-commits] russell: branch group/newcdr r202147 - in /team/group/newcdr: include/asteris...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat Jun 20 10:07:08 CDT 2009


Author: russell
Date: Sat Jun 20 10:07:05 2009
New Revision: 202147

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=202147
Log:
Use existing ast_event API for finding subscribers instead of adding a new one

Modified:
    team/group/newcdr/include/asterisk/event.h
    team/group/newcdr/include/asterisk/event_defs.h
    team/group/newcdr/main/cel.c
    team/group/newcdr/main/event.c

Modified: team/group/newcdr/include/asterisk/event.h
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/newcdr/include/asterisk/event.h?view=diff&rev=202147&r1=202146&r2=202147
==============================================================================
--- team/group/newcdr/include/asterisk/event.h (original)
+++ team/group/newcdr/include/asterisk/event.h Sat Jun 20 10:07:05 2009
@@ -242,28 +242,13 @@
 struct ast_event_sub *ast_event_unsubscribe(struct ast_event_sub *event_sub);
 
 /*!
- * \brief Traverse subscribers
- *
- * \param et -- the event type.
- * \param curr -- the current subscriber in the list; NULL means to return the first.
- * 
- * \return a ptr to the next subscriber
- */
-
-struct ast_event_sub *ast_event_next_subscriber(enum ast_event_type et, struct ast_event_sub *curr);
-
-/*!
- * \brief Get the subscriber description
- *
- * \param curr -- the subscriber who's description is sought.
- * 
- * \return a string
- */
-
-char *ast_event_subscriber_get_description(struct ast_event_sub *curr);
-
-void ast_event_lock_subscribers(enum ast_event_type et);
-void ast_event_unlock_subscribers(enum ast_event_type et);
+ * \brief Get description for a subscription
+ *
+ * \param sub subscription
+ *
+ * \return string description of the subscription
+ */
+const char *ast_event_subscriber_get_description(struct ast_event_sub *sub);
 
 /*!
  * \brief Check if subscribers exist

Modified: team/group/newcdr/include/asterisk/event_defs.h
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/newcdr/include/asterisk/event_defs.h?view=diff&rev=202147&r1=202146&r2=202147
==============================================================================
--- team/group/newcdr/include/asterisk/event_defs.h (original)
+++ team/group/newcdr/include/asterisk/event_defs.h Sat Jun 20 10:07:05 2009
@@ -247,13 +247,19 @@
 	 * Payload type: STR
 	 */
 	AST_EVENT_IE_CEL_EXTRA = 0x1f,
-	 /*!
-	  * \brief Entity ID
-	  * Used by All events
-	  * Payload type: RAW
-	  * This IE indicates which server the event originated from
-	  */
-	 AST_EVENT_IE_EID      = 0x20,
+	/*!
+	 * \brief Description
+	 * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
+	 * Payload type: STR
+	 */
+	AST_EVENT_IE_DESCRIPTION = 0x20,
+	/*!
+	 * \brief Entity ID
+	 * Used by All events
+	 * Payload type: RAW
+	 * This IE indicates which server the event originated from
+	 */
+	AST_EVENT_IE_EID      = 0x21,
 };
 
 #define AST_EVENT_IE_MAX AST_EVENT_IE_EID

Modified: team/group/newcdr/main/cel.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/newcdr/main/cel.c?view=diff&rev=202147&r1=202146&r2=202147
==============================================================================
--- team/group/newcdr/main/cel.c (original)
+++ team/group/newcdr/main/cel.c Sat Jun 20 10:07:05 2009
@@ -116,10 +116,18 @@
 	return 0;
 }
 
+static void print_cel_sub(const struct ast_event *event, void *data)
+{
+	struct ast_cli_args *a = data;
+
+	ast_cli(a->fd, "CEL Event Subscriber: %s\n",
+			ast_event_get_ie_str(event, AST_EVENT_IE_DESCRIPTION));
+}
+
 static char *handle_cli_status(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-	struct ast_event_sub *sub = 0;
 	unsigned int i;
+	struct ast_event_sub *sub;
 
 	switch (cmd) {
 	case CLI_INIT:
@@ -136,7 +144,7 @@
 		return CLI_SHOWUSAGE;
 	}
 
-	ast_cli(a->fd, "CEL logging: %s\n", cel_enabled ? "enabled" : "disabled");
+	ast_cli(a->fd, "CEL Logging: %s\n", cel_enabled ? "Enabled" : "Disabled");
 
 	if (!cel_enabled) {
 		return CLI_SUCCESS;
@@ -157,11 +165,13 @@
 
 	ao2_callback(appset, OBJ_NODATA, print_app, a);
 
-	ast_event_lock_subscribers(AST_EVENT_CEL);
-	while ((sub = ast_event_next_subscriber(AST_EVENT_CEL, sub))) {
-		ast_cli(a->fd, "CEL registered backend: %s\n", ast_event_subscriber_get_description(sub));
-	}
-	ast_event_unlock_subscribers(AST_EVENT_CEL);
+	if (!(sub = ast_event_subscribe_new(AST_EVENT_SUB, print_cel_sub, a))) {
+		return CLI_FAILURE;
+	}
+	ast_event_sub_append_ie_uint(sub, AST_EVENT_IE_EVENTTYPE, AST_EVENT_CEL);
+	ast_event_report_subs(sub);
+	ast_event_sub_destroy(sub);
+	sub = NULL;
 
 	return CLI_SUCCESS;
 }

Modified: team/group/newcdr/main/event.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/newcdr/main/event.c?view=diff&rev=202147&r1=202146&r2=202147
==============================================================================
--- team/group/newcdr/main/event.c (original)
+++ team/group/newcdr/main/event.c Sat Jun 20 10:07:05 2009
@@ -559,8 +559,9 @@
 	struct ast_event *event;
 
 	event = ast_event_new(AST_EVENT_SUB,
-		AST_EVENT_IE_UNIQUEID,  AST_EVENT_IE_PLTYPE_UINT, sub->uniqueid,
-		AST_EVENT_IE_EVENTTYPE, AST_EVENT_IE_PLTYPE_UINT, sub->type,
+		AST_EVENT_IE_UNIQUEID,    AST_EVENT_IE_PLTYPE_UINT, sub->uniqueid,
+		AST_EVENT_IE_EVENTTYPE,   AST_EVENT_IE_PLTYPE_UINT, sub->type,
+		AST_EVENT_IE_DESCRIPTION, AST_EVENT_IE_PLTYPE_STR, sub->description,
 		AST_EVENT_IE_END);
 
 	if (!event)
@@ -869,32 +870,10 @@
 	ast_free(sub);
 }
 
-struct ast_event_sub *ast_event_next_subscriber(enum ast_event_type et, struct ast_event_sub *curr)
-{
-	if (curr)
-		return AST_RWLIST_NEXT(curr, entry);
-	else
-		return AST_RWLIST_FIRST(&ast_event_subs[et]);
-}
-
-char *ast_event_subscriber_get_description(struct ast_event_sub *curr)
-{
-	if (curr)
-		return curr->description;
-	return 0;
-}
-
-void ast_event_lock_subscribers(enum ast_event_type et)
-{
-	AST_RWLIST_RDLOCK(&ast_event_subs[et]);
-
-}
-
-void ast_event_unlock_subscribers(enum ast_event_type et)
-{
-	AST_RWLIST_UNLOCK(&ast_event_subs[et]);
-}
-
+const char *ast_event_subscriber_get_description(struct ast_event_sub *sub)
+{
+	return sub ? sub->description : NULL;
+}
 
 struct ast_event_sub *ast_event_unsubscribe(struct ast_event_sub *sub)
 {
@@ -909,8 +888,9 @@
 		AST_EVENT_IE_END) != AST_EVENT_SUB_NONE) {
 
 		event = ast_event_new(AST_EVENT_UNSUB,
-			AST_EVENT_IE_UNIQUEID,  AST_EVENT_IE_PLTYPE_UINT, sub->uniqueid,
-			AST_EVENT_IE_EVENTTYPE, AST_EVENT_IE_PLTYPE_UINT, sub->type,
+			AST_EVENT_IE_UNIQUEID,    AST_EVENT_IE_PLTYPE_UINT, sub->uniqueid,
+			AST_EVENT_IE_EVENTTYPE,   AST_EVENT_IE_PLTYPE_UINT, sub->type,
+			AST_EVENT_IE_DESCRIPTION, AST_EVENT_IE_PLTYPE_STR, sub->description,
 			AST_EVENT_IE_END);
 
 		if (event) {




More information about the svn-commits mailing list