summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2010-10-12 12:45:15 +0000
committerBenny Prijono <bennylp@teluu.com>2010-10-12 12:45:15 +0000
commitb3c3836ac9841f7ecfa085b0a8de4f68ffd1b8c6 (patch)
tree9728be7b28cb27feccdfbad57187277c4ea25384 /pjsip-apps
parent0ab38c18720fa75094ec8fd98d0bd96d86f373cf (diff)
Closed #1144: New presence callback to report subscription state (thanks Johan Lantz for the suggestion):
- added on_buddy_evsub_state() callback - added sample implementation in pjsua_app.c git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3339 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c
index ead85940..d6150ff6 100644
--- a/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/pjsip-apps/src/pjsua/pjsua_app.c
@@ -2797,6 +2797,37 @@ static void on_buddy_state(pjsua_buddy_id buddy_id)
}
+/*
+ * Subscription state has changed.
+ */
+static void on_buddy_evsub_state(pjsua_buddy_id buddy_id,
+ pjsip_evsub *sub,
+ pjsip_event *event)
+{
+ char event_info[80];
+
+ PJ_UNUSED_ARG(sub);
+
+ event_info[0] = '\0';
+
+ if (event->type == PJSIP_EVENT_TSX_STATE &&
+ event->body.tsx_state.type == PJSIP_EVENT_RX_MSG)
+ {
+ pjsip_rx_data *rdata = event->body.tsx_state.src.rdata;
+ snprintf(event_info, sizeof(event_info),
+ " (RX %s)",
+ pjsip_rx_data_get_info(rdata));
+ }
+
+ PJ_LOG(4,(THIS_FILE,
+ "Buddy %d: subscription state: %s (event: %s%s)",
+ buddy_id, pjsip_evsub_get_state_name(sub),
+ pjsip_event_str(event->type),
+ event_info));
+
+}
+
+
/**
* Incoming IM message (i.e. MESSAGE request)!
*/
@@ -4602,6 +4633,7 @@ pj_status_t app_init(int argc, char *argv[])
app_config.cfg.cb.on_reg_state = &on_reg_state;
app_config.cfg.cb.on_incoming_subscribe = &on_incoming_subscribe;
app_config.cfg.cb.on_buddy_state = &on_buddy_state;
+ app_config.cfg.cb.on_buddy_evsub_state = &on_buddy_evsub_state;
app_config.cfg.cb.on_pager = &on_pager;
app_config.cfg.cb.on_typing = &on_typing;
app_config.cfg.cb.on_call_transfer_status = &on_call_transfer_status;