/** * Process notification routine. */ static void process_notify_cb(fetion_account *ac, const gchar *sipmsg) { gint notify_type; gint event_type; sip_parse_notify(sipmsg, ¬ify_type, &event_type); if (notify_type == NOTIFICATION_TYPE_UNKNOWN || event_type == NOTIFICATION_EVENT_UNKNOWN) { hybrid_debug_info("fetion", "recv unknown notification:\n%s", sipmsg); return; } switch (notify_type) { case NOTIFICATION_TYPE_PRESENCE: if (event_type == NOTIFICATION_EVENT_PRESENCECHANGED) { process_presence(ac, sipmsg); } break; case NOTIFICATION_TYPE_CONVERSATION : if (event_type == NOTIFICATION_EVENT_USERLEFT) { process_left_cb(ac, sipmsg); break; } else if (event_type == NOTIFICATION_EVENT_USERENTER) { process_enter_cb(ac, sipmsg); break; } break; case NOTIFICATION_TYPE_REGISTRATION : if (event_type == NOTIFICATION_EVENT_DEREGISTRATION) { process_dereg_cb(ac, sipmsg); } break; case NOTIFICATION_TYPE_SYNCUSERINFO : if (event_type == NOTIFICATION_EVENT_SYNCUSERINFO) { process_sync_info(ac, sipmsg); } break; case NOTIFICATION_TYPE_CONTACT : if (event_type == NOTIFICATION_EVENT_ADDBUDDYAPPLICATION) { process_add_buddy(ac, sipmsg); } break; #if 0 case NOTIFICATION_TYPE_PGGROUP : break; #endif default: break; } }
static void process_notify_cb(fetion_account *ac, const gchar *sipmsg) { gint event; gint notification_type; gchar *xml; fetion_sip_parse_notification(sipmsg , ¬ification_type , &event , &xml); switch(notification_type) { case NOTIFICATION_TYPE_PRESENCE: if(event == NOTIFICATION_EVENT_PRESENCECHANGED) process_presence(ac , xml); break; case NOTIFICATION_TYPE_CONVERSATION : if(event == NOTIFICATION_EVENT_USERLEFT) { process_left_cb(ac, sipmsg); break; } else if(event == NOTIFICATION_EVENT_USERENTER) { process_enter_cb(ac, sipmsg); break; } break; case NOTIFICATION_TYPE_REGISTRATION : if(event == NOTIFICATION_EVENT_DEREGISTRATION) process_dereg_cb(ac, sipmsg); break; case NOTIFICATION_TYPE_SYNCUSERINFO : if(event == NOTIFICATION_EVENT_SYNCUSERINFO) process_sync_info(ac, sipmsg); break; case NOTIFICATION_TYPE_CONTACT : if(event == NOTIFICATION_EVENT_ADDBUDDYAPPLICATION) process_add_buddy(ac, sipmsg); break; #if 0 case NOTIFICATION_TYPE_PGGROUP : break; #endif default: break; } g_free(xml); }