Sun, 15 Sep 2013 19:41:56 +0530
Refactored jabber to use the new protocol interfaces
--- a/libpurple/protocols/jabber/facebook.c Sun Sep 15 19:14:28 2013 +0530 +++ b/libpurple/protocols/jabber/facebook.c Sun Sep 15 19:41:56 2013 +0530 @@ -104,35 +104,74 @@ static void facebook_protocol_class_init(PurpleProtocolClass *klass) { + klass->list_icon = facebook_list_icon; } static void facebook_protocol_client_iface_init(PurpleProtocolClientIface *client_iface) { - client_iface->list_icon = facebook_list_icon; + client_iface->get_moods = NULL; +} + +static void +facebook_protocol_server_iface_init(PurpleProtocolServerIface *server_iface) +{ + server_iface->register_user = NULL; + server_iface->unregister_user = NULL; + server_iface->add_buddy = NULL; + server_iface->remove_buddy = NULL; + server_iface->alias_buddy = NULL; + server_iface->group_buddy = NULL; + server_iface->rename_group = NULL; +} - /* disable xmpp functions not available for facebook */ - client_iface->add_buddy = NULL; - client_iface->remove_buddy = NULL; - client_iface->add_deny = NULL; - client_iface->rem_deny = NULL; - client_iface->register_user = NULL; - client_iface->alias_buddy = NULL; - client_iface->group_buddy = NULL; - client_iface->rename_group = NULL; - client_iface->can_receive_file = NULL; - client_iface->send_file = NULL; - client_iface->new_xfer = NULL; - client_iface->unregister_user = NULL; - client_iface->send_attention = NULL; - client_iface->get_attention_types = NULL; - client_iface->initiate_media = NULL; - client_iface->get_media_caps = NULL; - client_iface->get_moods = NULL; +static void +facebook_protocol_privacy_iface_init(PurpleProtocolPrivacyIface *privacy_iface) +{ + privacy_iface->add_deny = NULL; + privacy_iface->rem_deny = NULL; +} + +static void +facebook_protocol_attention_iface_init(PurpleProtocolAttentionIface *attention_iface) +{ + attention_iface->send = NULL; + attention_iface->get_types = NULL; +} + +static void +facebook_protocol_media_iface_init(PurpleProtocolMediaIface *media_iface) +{ + media_iface->initiate_session = NULL; + media_iface->get_caps = NULL; +} + +static void +facebook_protocol_xfer_iface_init(PurpleProtocolXferIface *xfer_iface) +{ + xfer_iface->can_receive = NULL; + xfer_iface->send = NULL; + xfer_iface->new_xfer = NULL; } PURPLE_DEFINE_TYPE_EXTENDED( FacebookProtocol, facebook_protocol, JABBER_TYPE_PROTOCOL, 0, + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CLIENT_IFACE, - facebook_protocol_client_iface_init) + facebook_protocol_client_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_SERVER_IFACE, + facebook_protocol_server_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_PRIVACY_IFACE, + facebook_protocol_privacy_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_ATTENTION_IFACE, + facebook_protocol_attention_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_MEDIA_IFACE, + facebook_protocol_media_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_XFER_IFACE, + facebook_protocol_xfer_iface_init) );
--- a/libpurple/protocols/jabber/gtalk.c Sun Sep 15 19:14:28 2013 +0530 +++ b/libpurple/protocols/jabber/gtalk.c Sun Sep 15 19:41:56 2013 +0530 @@ -112,20 +112,20 @@ static void gtalk_protocol_class_init(PurpleProtocolClass *klass) { + klass->list_icon = gtalk_list_icon; } static void -gtalk_protocol_client_iface_init(PurpleProtocolClientIface *client_iface) +gtalk_protocol_server_iface_init(PurpleProtocolServerIface *server_iface) { - client_iface->list_icon = gtalk_list_icon; - /* disable xmpp functions not available for gtalk */ - client_iface->register_user = NULL; - client_iface->unregister_user = NULL; + server_iface->register_user = NULL; + server_iface->unregister_user = NULL; } PURPLE_DEFINE_TYPE_EXTENDED( GTalkProtocol, gtalk_protocol, JABBER_TYPE_PROTOCOL, 0, - PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CLIENT_IFACE, - gtalk_protocol_client_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_SERVER_IFACE, + gtalk_protocol_server_iface_init) );
--- a/libpurple/protocols/jabber/jabber.c Sun Sep 15 19:14:28 2013 +0530 +++ b/libpurple/protocols/jabber/jabber.c Sun Sep 15 19:41:56 2013 +0530 @@ -4151,68 +4151,133 @@ static void jabber_protocol_class_init(PurpleProtocolClass *klass) { + klass->login = jabber_login; + klass->close = jabber_close; + klass->status_types = jabber_status_types; + klass->list_icon = jabber_list_icon; } static void jabber_protocol_client_iface_init(PurpleProtocolClientIface *client_iface) { - client_iface->get_actions = jabber_get_actions; - client_iface->list_icon = jabber_list_icon; - client_iface->list_emblem = jabber_list_emblem; - client_iface->status_text = jabber_status_text; - client_iface->tooltip_text = jabber_tooltip_text; - client_iface->status_types = jabber_status_types; - client_iface->blist_node_menu = jabber_blist_node_menu; - client_iface->chat_info = jabber_chat_info; - client_iface->chat_info_defaults = jabber_chat_info_defaults; - client_iface->login = jabber_login; - client_iface->close = jabber_close; - client_iface->send_im = jabber_message_send_im; - client_iface->set_info = jabber_set_info; - client_iface->send_typing = jabber_send_typing; - client_iface->get_info = jabber_buddy_get_info; - client_iface->set_status = jabber_set_status; - client_iface->set_idle = jabber_idle_set; - client_iface->add_buddy = jabber_roster_add_buddy; - client_iface->remove_buddy = jabber_roster_remove_buddy; - client_iface->add_deny = jabber_add_deny; - client_iface->rem_deny = jabber_rem_deny; - client_iface->join_chat = jabber_chat_join; - client_iface->get_chat_name = jabber_get_chat_name; - client_iface->chat_invite = jabber_chat_invite; - client_iface->chat_leave = jabber_chat_leave; - client_iface->chat_send = jabber_message_send_chat; - client_iface->keepalive = jabber_keepalive; - client_iface->register_user = jabber_register_account; - client_iface->unregister_user = jabber_unregister_account; - client_iface->alias_buddy = jabber_roster_alias_change; - client_iface->group_buddy = jabber_roster_group_change; - client_iface->rename_group = jabber_roster_group_rename; - client_iface->convo_closed = jabber_convo_closed; - client_iface->normalize = jabber_normalize; - client_iface->set_buddy_icon = jabber_set_buddy_icon; - client_iface->get_cuser_real_name = jabber_chat_user_real_name; - client_iface->set_chat_topic = jabber_chat_set_topic; - client_iface->find_blist_chat = jabber_find_blist_chat; - client_iface->roomlist_get_list = jabber_roomlist_get_list; - client_iface->roomlist_cancel = jabber_roomlist_cancel; - client_iface->can_receive_file = jabber_can_receive_file; - client_iface->send_file = jabber_si_xfer_send; - client_iface->new_xfer = jabber_si_new_xfer; - client_iface->offline_message = jabber_offline_message; - client_iface->send_raw = jabber_protocol_send_raw; - client_iface->roomlist_room_serialize = jabber_roomlist_room_serialize; - client_iface->send_attention = jabber_send_attention; - client_iface->get_attention_types = jabber_attention_types; - client_iface->initiate_media = jabber_initiate_media; - client_iface->get_media_caps = jabber_get_media_caps; - client_iface->get_moods = jabber_get_moods; + client_iface->get_actions = jabber_get_actions; + client_iface->list_emblem = jabber_list_emblem; + client_iface->status_text = jabber_status_text; + client_iface->tooltip_text = jabber_tooltip_text; + client_iface->blist_node_menu = jabber_blist_node_menu; + client_iface->convo_closed = jabber_convo_closed; + client_iface->normalize = jabber_normalize; + client_iface->find_blist_chat = jabber_find_blist_chat; + client_iface->offline_message = jabber_offline_message; + client_iface->get_moods = jabber_get_moods; +} + +static void +jabber_protocol_server_iface_init(PurpleProtocolServerIface *server_iface) +{ + server_iface->register_user = jabber_register_account; + server_iface->unregister_user = jabber_unregister_account; + server_iface->set_info = jabber_set_info; + server_iface->get_info = jabber_buddy_get_info; + server_iface->set_status = jabber_set_status; + server_iface->set_idle = jabber_idle_set; + server_iface->add_buddy = jabber_roster_add_buddy; + server_iface->remove_buddy = jabber_roster_remove_buddy; + server_iface->keepalive = jabber_keepalive; + server_iface->alias_buddy = jabber_roster_alias_change; + server_iface->group_buddy = jabber_roster_group_change; + server_iface->rename_group = jabber_roster_group_rename; + server_iface->set_buddy_icon = jabber_set_buddy_icon; + server_iface->send_raw = jabber_protocol_send_raw; +} + +static void +jabber_protocol_im_iface_init(PurpleProtocolIMIface *im_iface) +{ + im_iface->send = jabber_message_send_im; + im_iface->send_typing = jabber_send_typing; +} + +static void +jabber_protocol_chat_iface_init(PurpleProtocolChatIface *chat_iface) +{ + chat_iface->info = jabber_chat_info; + chat_iface->info_defaults = jabber_chat_info_defaults; + chat_iface->join = jabber_chat_join; + chat_iface->get_name = jabber_get_chat_name; + chat_iface->invite = jabber_chat_invite; + chat_iface->leave = jabber_chat_leave; + chat_iface->send = jabber_message_send_chat; + chat_iface->get_user_real_name = jabber_chat_user_real_name; + chat_iface->set_topic = jabber_chat_set_topic; +} + +static void +jabber_protocol_privacy_iface_init(PurpleProtocolPrivacyIface *privacy_iface) +{ + privacy_iface->add_deny = jabber_add_deny; + privacy_iface->rem_deny = jabber_rem_deny; +} + +static void +jabber_protocol_roomlist_iface_init(PurpleProtocolRoomlistIface *roomlist_iface) +{ + roomlist_iface->get_list = jabber_roomlist_get_list; + roomlist_iface->cancel = jabber_roomlist_cancel; + roomlist_iface->room_serialize = jabber_roomlist_room_serialize; +} + +static void +jabber_protocol_attention_iface_init(PurpleProtocolAttentionIface *attention_iface) +{ + attention_iface->send = jabber_send_attention; + attention_iface->get_types = jabber_attention_types; +} + +static void +jabber_protocol_media_iface_init(PurpleProtocolMediaIface *media_iface) +{ + media_iface->initiate_session = jabber_initiate_media; + media_iface->get_caps = jabber_get_media_caps; +} + +static void +jabber_protocol_xfer_iface_init(PurpleProtocolXferIface *xfer_iface) +{ + xfer_iface->can_receive = jabber_can_receive_file; + xfer_iface->send = jabber_si_xfer_send; + xfer_iface->new_xfer = jabber_si_new_xfer; } PURPLE_DEFINE_TYPE_EXTENDED( JabberProtocol, jabber_protocol, PURPLE_TYPE_PROTOCOL, G_TYPE_FLAG_ABSTRACT, + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CLIENT_IFACE, - jabber_protocol_client_iface_init) + jabber_protocol_client_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_SERVER_IFACE, + jabber_protocol_server_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_IM_IFACE, + jabber_protocol_im_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CHAT_IFACE, + jabber_protocol_chat_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_PRIVACY_IFACE, + jabber_protocol_privacy_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_ROOMLIST_IFACE, + jabber_protocol_roomlist_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_ATTENTION_IFACE, + jabber_protocol_attention_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_MEDIA_IFACE, + jabber_protocol_media_iface_init) + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_XFER_IFACE, + jabber_protocol_xfer_iface_init) ); static PurplePluginInfo *