summaryrefslogtreecommitdiff
path: root/libpurple/purpleprotocolserver.c
diff options
context:
space:
mode:
authorGary Kramlich <grim@reaperworld.com>2021-01-14 22:33:49 -0600
committerGary Kramlich <grim@reaperworld.com>2021-01-14 22:33:49 -0600
commit7d467f68ffe3ef3e3c5be7ba5858298e3c0c89a5 (patch)
tree5896c4c84e347c235e3c8b234c6ed1d2fade2927 /libpurple/purpleprotocolserver.c
parent6d9c890aa7ea036547ea17d409c34b57e05b5047 (diff)
downloadpidgin-7d467f68ffe3ef3e3c5be7ba5858298e3c0c89a5.tar.gz
Move the PurpleProtocolServer interface to its own file.
Testing Done: Compiled and ran locally. Connected with bonjour and xmpp without issues. Bugs closed: PIDGIN-17458 Reviewed at https://reviews.imfreedom.org/r/418/
Diffstat (limited to 'libpurple/purpleprotocolserver.c')
-rw-r--r--libpurple/purpleprotocolserver.c377
1 files changed, 377 insertions, 0 deletions
diff --git a/libpurple/purpleprotocolserver.c b/libpurple/purpleprotocolserver.c
new file mode 100644
index 0000000000..7703f3ea89
--- /dev/null
+++ b/libpurple/purpleprotocolserver.c
@@ -0,0 +1,377 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "purpleprotocolserver.h"
+
+/******************************************************************************
+ * GObject Implementation
+ *****************************************************************************/
+G_DEFINE_INTERFACE(PurpleProtocolServer, purple_protocol_server, G_TYPE_INVALID)
+
+static void
+purple_protocol_server_default_init(PurpleProtocolServerInterface *iface) {
+}
+
+/******************************************************************************
+ * Public API
+ *****************************************************************************/
+void
+purple_protocol_server_register_user(PurpleProtocolServer *protocol_server,
+ PurpleAccount *account)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_ACCOUNT(account));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->register_user != NULL) {
+ iface->register_user(protocol_server, account);
+ }
+}
+
+void
+purple_protocol_server_unregister_user(PurpleProtocolServer *protocol_server,
+ PurpleAccount *account,
+ PurpleAccountUnregistrationCb cb,
+ gpointer data)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_ACCOUNT(account));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->unregister_user != NULL) {
+ iface->unregister_user(protocol_server, account, cb, data);
+ }
+}
+
+void
+purple_protocol_server_set_info(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ const gchar *info)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->set_info != NULL) {
+ iface->set_info(protocol_server, connection, info);
+ }
+}
+
+void
+purple_protocol_server_get_info(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection, const gchar *who)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(who != NULL);
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->get_info != NULL) {
+ iface->get_info(protocol_server, connection, who);
+ }
+}
+
+void
+purple_protocol_server_set_status(PurpleProtocolServer *protocol_server,
+ PurpleAccount *account, PurpleStatus *status)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_ACCOUNT(account));
+ g_return_if_fail(PURPLE_IS_STATUS(status));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->set_status != NULL) {
+ iface->set_status(protocol_server, account, status);
+ }
+}
+
+void
+purple_protocol_server_set_idle(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection, gint idletime)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->set_idle != NULL) {
+ iface->set_idle(protocol_server, connection, idletime);
+ }
+}
+
+void
+purple_protocol_server_change_passwd(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ const gchar *old_pass,
+ const gchar *new_pass)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(old_pass != NULL);
+ g_return_if_fail(new_pass != NULL);
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->change_passwd != NULL) {
+ iface->change_passwd(protocol_server, connection, old_pass, new_pass);
+ }
+}
+
+void
+purple_protocol_server_add_buddy(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ PurpleBuddy *buddy, PurpleGroup *group,
+ const gchar *message)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(PURPLE_IS_BUDDY(buddy));
+ g_return_if_fail(PURPLE_IS_GROUP(group));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->add_buddy != NULL) {
+ iface->add_buddy(protocol_server, connection, buddy, group, message);
+ }
+}
+
+void
+purple_protocol_server_add_buddies(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ GList *buddies, GList *groups,
+ const gchar *message)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(g_list_length(buddies) != g_list_length(groups));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->add_buddies != NULL) {
+ iface->add_buddies(protocol_server, connection, buddies, groups,
+ message);
+ } else {
+ while(buddies != NULL && groups != NULL) {
+ purple_protocol_server_add_buddy(protocol_server, connection,
+ PURPLE_BUDDY(buddies->data),
+ PURPLE_GROUP(groups->data),
+ message);
+
+ buddies = g_list_next(buddies);
+ groups = g_list_next(groups);
+ }
+ }
+}
+
+void
+purple_protocol_server_remove_buddy(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ PurpleBuddy *buddy, PurpleGroup *group)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(PURPLE_IS_BUDDY(buddy));
+ g_return_if_fail(PURPLE_IS_GROUP(group));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->remove_buddy != NULL) {
+ iface->remove_buddy(protocol_server, connection, buddy, group);
+ }
+}
+
+void
+purple_protocol_server_remove_buddies(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ GList *buddies, GList *groups)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->remove_buddies != NULL) {
+ iface->remove_buddies(protocol_server, connection, buddies, groups);
+ } else {
+ while(buddies != NULL && groups != NULL) {
+ purple_protocol_server_remove_buddy(protocol_server, connection,
+ PURPLE_BUDDY(buddies->data),
+ PURPLE_GROUP(groups->data));
+
+ buddies = g_list_next(buddies);
+ groups = g_list_next(groups);
+ }
+ }
+}
+
+void
+purple_protocol_server_keepalive(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->keepalive != NULL) {
+ iface->keepalive(protocol_server, connection);
+ }
+}
+
+gint
+purple_protocol_server_get_keepalive_interval(PurpleProtocolServer *protocol_server)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_val_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server), -1);
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->get_keepalive_interval != NULL) {
+ return iface->get_keepalive_interval(protocol_server);
+ }
+
+ return -1;
+}
+
+void
+purple_protocol_server_alias_buddy(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ const gchar *who, const gchar *alias)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(who != NULL);
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->alias_buddy != NULL) {
+ iface->alias_buddy(protocol_server, connection, who, alias);
+ }
+}
+
+void
+purple_protocol_server_group_buddy(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ const gchar *who, const gchar *old_group,
+ const gchar *new_group)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(who != NULL);
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->group_buddy != NULL) {
+ iface->group_buddy(protocol_server, connection, who, old_group,
+ new_group);
+ }
+}
+
+void
+purple_protocol_server_rename_group(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ const gchar *old_name, PurpleGroup *group,
+ GList *moved_buddies)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(PURPLE_IS_GROUP(group));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->rename_group != NULL) {
+ iface->rename_group(protocol_server, connection, old_name, group,
+ moved_buddies);
+ }
+}
+
+void
+purple_protocol_server_set_buddy_icon(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ PurpleImage *img)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(PURPLE_IS_IMAGE(img));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->set_buddy_icon != NULL) {
+ iface->set_buddy_icon(protocol_server, connection, img);
+ }
+}
+
+void
+purple_protocol_server_remove_group(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ PurpleGroup *group)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server));
+ g_return_if_fail(PURPLE_IS_CONNECTION(connection));
+ g_return_if_fail(PURPLE_IS_GROUP(group));
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->remove_group != NULL) {
+ iface->remove_group(protocol_server, connection, group);
+ }
+}
+
+gint
+purple_protocol_server_send_raw(PurpleProtocolServer *protocol_server,
+ PurpleConnection *connection,
+ const gchar *buf, gint len)
+{
+ PurpleProtocolServerInterface *iface = NULL;
+
+ g_return_val_if_fail(PURPLE_IS_PROTOCOL_SERVER(protocol_server), -1);
+ g_return_val_if_fail(PURPLE_IS_CONNECTION(connection), -1);
+
+ iface = PURPLE_PROTOCOL_SERVER_GET_IFACE(protocol_server);
+ if(iface != NULL && iface->send_raw != NULL) {
+ return iface->send_raw(protocol_server, connection, buf, len);
+ }
+
+ return -1;
+}