[asterisk-commits] file: branch file/bridging r109358 - /team/file/bridging/apps/app_confbridge.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Mar 18 09:11:50 CDT 2008


Author: file
Date: Tue Mar 18 09:11:49 2008
New Revision: 109358

URL: http://svn.digium.com/view/asterisk?view=rev&rev=109358
Log:
Add option to set caller as a marked user. Right now this just bumps up/bumps down a counter.

Modified:
    team/file/bridging/apps/app_confbridge.c

Modified: team/file/bridging/apps/app_confbridge.c
URL: http://svn.digium.com/view/asterisk/team/file/bridging/apps/app_confbridge.c?view=diff&rev=109358&r1=109357&r2=109358
==============================================================================
--- team/file/bridging/apps/app_confbridge.c (original)
+++ team/file/bridging/apps/app_confbridge.c Tue Mar 18 09:11:49 2008
@@ -53,6 +53,7 @@
 static char *descrip =
 "  ConfBridge([confno][,[options]]): Enters the user into a specified conference bridge.\n"
 "The option string may contain zero or more of the following characters:\n"
+"      'A' -- Set marked mode\n"
 "      'a' -- Set admin mode\n"
 "      'c' -- Announce user(s) count on joining a conference\n"
 "      'd' -- Dynamically add conference\n"
@@ -75,6 +76,7 @@
 	OPTION_NOONLYPERSON = (1 << 4),      /*!< Set if the "you are currently the only person in this conference" sound file should not be played */
 	OPTION_STARTMUTED = (1 << 5),        /*!< Set if the caller should be initially set muted */
 	OPTION_ANNOUNCEUSERCOUNT = (1 << 6), /*!< Set if the number of users should be announced to the caller */
+	OPTION_MARKEDUSER = (1 << 7),        /*!< Set if the caller is a marked user */
 } option_flags;
 
 enum {
@@ -84,6 +86,7 @@
 } option_args;
 
 AST_APP_OPTIONS(app_opts,{
+	AST_APP_OPTION('A', OPTION_MARKEDUSER),
 	AST_APP_OPTION('a', OPTION_ADMIN),
 	AST_APP_OPTION('c', OPTION_ANNOUNCEUSERCOUNT),
 	AST_APP_OPTION('d', OPTION_DYNAMIC),
@@ -100,6 +103,7 @@
 	char name[MAX_CONF_NAME];                                  /*!< Name of the conference bridge */
 	struct ast_bridge *bridge;                                 /*!< Bridge structure doing the mixing */
 	int users;                                                 /*!< Number of users present */
+	int markedusers;                                           /*!< Number of marked users present */
 	unsigned int dynamic:1;                                    /*!< Is this conference bridge dynamically generated? */
 	unsigned int locked:1;                                     /*!< Is this conference bridge locked? */
 	AST_LIST_HEAD_NOLOCK(, conference_bridge_user) users_list; /*!< List of users participating in the conference bridge */
@@ -215,6 +219,11 @@
 	/* Increment the users count on the bridge, but record it as it is going to need to be known right after this */
 	previous_participants = ast_atomic_fetchadd_int(&conference_bridge->users, +1);
 
+	/* If the caller is a marked user bump up the count */
+	if (ast_test_flag(&conference_bridge_user->flags, OPTION_MARKEDUSER)) {
+		ast_atomic_fetchadd_int(&conference_bridge->markedusers, +1);
+	}
+
 	/* If we are the first participant we may need to start MOH, if we are the second participant we may need to stop MOH on the first */
 	if (previous_participants == 0) {
 		if (!ast_test_flag(&conference_bridge_user->flags, OPTION_NOONLYPERSON)) {
@@ -270,6 +279,11 @@
 	int previous_participants = 0;
 
 	AST_LIST_LOCK(&conference_bridges);
+
+	/* If this caller is a marked user bump down the count */
+	if (ast_test_flag(&conference_bridge_user->flags, OPTION_MARKEDUSER)) {
+		ast_atomic_fetchadd_int(&conference_bridge->markedusers, -1);
+	}
 
 	/* Decrement the users count while keeping the previous participant count */
 	previous_participants = ast_atomic_fetchadd_int(&conference_bridge->users, -1);




More information about the asterisk-commits mailing list