This patch adds custom device state handling for ConfBridge conferences,

matching the devstate handling of the MeetMe conferences.

Review: https://reviewboard.asterisk.org/r/572/
Closes issue #16972



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@255281 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Jared Smith
2010-03-29 14:07:44 +00:00
parent 899f995703
commit c34ec47577
2 changed files with 10 additions and 0 deletions

View File

@@ -141,6 +141,8 @@ Applications
type features. type features.
* Added new application VMSayName that will play the recorded name of the voicemail * Added new application VMSayName that will play the recorded name of the voicemail
user if it exists, otherwise will play the mailbox number. user if it exists, otherwise will play the mailbox number.
* Added custom device states to ConfBridge bridges. Use 'confbridge:<name>' to
retrieve state for a particular bridge, where <name> is the conference name
Dialplan Functions Dialplan Functions
------------------ ------------------

View File

@@ -463,6 +463,11 @@ static struct conference_bridge *join_conference_bridge(const char *name, struct
conference_bridge->markedusers++; conference_bridge->markedusers++;
} }
/* Set the device state for this conference */
if (conference_bridge->users == 1) {
ast_devstate_changed(AST_DEVICE_INUSE, "confbridge:%s", conference_bridge->name);
}
/* If the caller is a marked user or is waiting for a marked user to enter pass 'em off, otherwise pass them off to do regular joining stuff */ /* If the caller is a marked user or is waiting for a marked user to enter pass 'em off, otherwise pass them off to do regular joining stuff */
if (ast_test_flag(&conference_bridge_user->flags, OPTION_MARKEDUSER | OPTION_WAITMARKED)) { if (ast_test_flag(&conference_bridge_user->flags, OPTION_MARKEDUSER | OPTION_WAITMARKED)) {
post_join_marked(conference_bridge, conference_bridge_user); post_join_marked(conference_bridge, conference_bridge_user);
@@ -533,6 +538,9 @@ static void leave_conference_bridge(struct conference_bridge *conference_bridge
} }
} }
} else { } else {
/* Set device state to "not in use" */
ast_devstate_changed(AST_DEVICE_NOT_INUSE, "confbridge:%s", conference_bridge->name);
ao2_unlink(conference_bridges, conference_bridge); ao2_unlink(conference_bridges, conference_bridge);
} }