Refactored jabber to use the new protocol interfaces soc.2013.gobjectification.plugins

Sun, 15 Sep 2013 19:41:56 +0530

author
Ankit Vani <a@nevitus.org>
date
Sun, 15 Sep 2013 19:41:56 +0530
branch
soc.2013.gobjectification.plugins
changeset 36732
39a42632a4c8
parent 36731
38de3f22e864
child 36733
2ee6d6c2adb0

Refactored jabber to use the new protocol interfaces

libpurple/protocols/jabber/facebook.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/gtalk.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/jabber.c file | annotate | diff | comparison | revisions
--- 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 *

mercurial