From 0b40de5a4f2c4f887e3ab086a87c641fc6538c4d Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 3 Feb 2013 22:40:54 +0000 Subject: [PATCH] Moved private xmpp functions to connection.h --- Makefile.am | 2 +- src/xmpp/connection.c | 21 +++++++++++---------- src/xmpp/connection.h | 36 ++++++++++++++++++++++++++++++++++++ src/xmpp/iq.c | 9 +++++---- src/xmpp/message.c | 31 ++++++++++++++++--------------- src/xmpp/presence.c | 37 +++++++++++++++++++------------------ src/xmpp/xmpp.h | 7 ------- 7 files changed, 88 insertions(+), 55 deletions(-) create mode 100644 src/xmpp/connection.h diff --git a/Makefile.am b/Makefile.am index d09f8072..4c29ef87 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,7 +6,7 @@ profanity_SOURCES = src/contact.c src/contact.h src/log.c src/common.c \ src/xmpp/xmpp.h src/xmpp/capabilities.c src/xmpp/connection.c \ src/xmpp/iq.c src/xmpp/message.c src/xmpp/presence.c src/xmpp/stanza.c \ src/xmpp/stanza.h src/xmpp/message.h src/xmpp/iq.h src/xmpp/presence.h \ - src/xmpp/capabilities.h \ + src/xmpp/capabilities.h src/xmpp/connection.h \ src/ui/ui.h src/ui/window.c src/ui/window.h src/ui/windows.c \ src/ui/titlebar.c src/ui/statusbar.c src/ui/inputwin.c \ src/command/command.h src/command/command.c src/command/history.c \ diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index 57528bb6..2bb92694 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -34,6 +34,7 @@ #include "log.h" #include "muc.h" #include "profanity.h" +#include "xmpp/connection.h" #include "xmpp/iq.h" #include "xmpp/message.h" #include "xmpp/presence.h" @@ -154,7 +155,7 @@ jabber_disconnect(void) while (jabber_get_connection_status() == JABBER_DISCONNECTING) { jabber_process_events(); } - jabber_free_resources(); + connection_free_resources(); } } @@ -200,13 +201,13 @@ jabber_get_connection_status(void) } xmpp_conn_t * -jabber_get_conn(void) +connection_get_conn(void) { return jabber_conn.conn; } xmpp_ctx_t * -jabber_get_ctx(void) +connection_get_ctx(void) { return jabber_conn.ctx; } @@ -236,13 +237,13 @@ jabber_get_account_name(void) } void -jabber_conn_set_presence_type(jabber_presence_t presence_type) +connection_set_presence_type(jabber_presence_t presence_type) { jabber_conn.presence_type = presence_type; } void -jabber_conn_set_presence_message(const char * const message) +connection_set_presence_message(const char * const message) { FREE_SET_NULL(jabber_conn.presence_message); if (message != NULL) { @@ -251,13 +252,13 @@ jabber_conn_set_presence_message(const char * const message) } void -jabber_conn_set_priority(int priority) +connection_set_priority(int priority) { jabber_conn.priority = priority; } void -jabber_free_resources(void) +connection_free_resources(void) { FREE_SET_NULL(saved_details.name); FREE_SET_NULL(saved_details.jid); @@ -273,7 +274,7 @@ jabber_free_resources(void) } int -error_handler(xmpp_stanza_t * const stanza) +connection_error_handler(xmpp_stanza_t * const stanza) { gchar *err_msg = NULL; gchar *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM); @@ -429,14 +430,14 @@ _connection_handler(xmpp_conn_t * const conn, reconnect_timer = g_timer_new(); // TODO: free resources but leave saved_user untouched } else { - jabber_free_resources(); + connection_free_resources(); } // login attempt failed } else if (jabber_conn.conn_status != JABBER_DISCONNECTING) { if (reconnect_timer == NULL) { prof_handle_failed_login(); - jabber_free_resources(); + connection_free_resources(); } else { if (prefs_get_reconnect() != 0) { g_timer_start(reconnect_timer); diff --git a/src/xmpp/connection.h b/src/xmpp/connection.h new file mode 100644 index 00000000..380e5cbc --- /dev/null +++ b/src/xmpp/connection.h @@ -0,0 +1,36 @@ +/* + * connection.h + * + * Copyright (C) 2012, 2013 James Booth + * + * This file is part of Profanity. + * + * Profanity 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 3 of the License, or + * (at your option) any later version. + * + * Profanity 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 Profanity. If not, see . + * + */ + +#ifndef CONNECTION_H +#define CONNECTION_H + +#include + +void connection_free_resources(void); +xmpp_conn_t *connection_get_conn(void); +xmpp_ctx_t *connection_get_ctx(void); +int connection_error_handler(xmpp_stanza_t * const stanza); +void connection_set_presence_type(jabber_presence_t presence_type); +void connection_set_priority(int priority); +void connection_set_presence_message(const char * const message); + +#endif diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index fc3ef780..51e3b615 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -31,6 +31,7 @@ #include "contact_list.h" #include "log.h" #include "xmpp/capabilities.h" +#include "xmpp/connection.h" #include "xmpp/iq.h" #include "xmpp/stanza.h" #include "xmpp/xmpp.h" @@ -55,8 +56,8 @@ static int _iq_handle_discoinfo_result(xmpp_conn_t * const conn, void iq_add_handlers(void) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); HANDLE(NULL, STANZA_TYPE_ERROR, _iq_handle_error); HANDLE(XMPP_NS_ROSTER, STANZA_TYPE_SET, _iq_handle_roster_set); HANDLE(XMPP_NS_ROSTER, STANZA_TYPE_RESULT, _iq_handle_roster_result); @@ -69,8 +70,8 @@ iq_add_handlers(void) void iq_roster_request(void) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); xmpp_stanza_t *iq = stanza_create_roster_iq(ctx); xmpp_send(conn, iq); xmpp_stanza_release(iq); diff --git a/src/xmpp/message.c b/src/xmpp/message.c index 62e05c2a..0242e1b1 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -30,6 +30,7 @@ #include "log.h" #include "muc.h" #include "profanity.h" +#include "xmpp/connection.h" #include "xmpp/message.h" #include "xmpp/stanza.h" #include "xmpp/xmpp.h" @@ -44,16 +45,16 @@ static int _chat_message_handler(xmpp_stanza_t * const stanza); void message_add_handlers(void) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); HANDLE(NULL, NULL, _message_handler); } void message_send(const char * const msg, const char * const recipient) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); if (prefs_get_boolean(PREF_STATES)) { if (!chat_session_exists(recipient)) { chat_session_start(recipient, TRUE); @@ -77,8 +78,8 @@ message_send(const char * const msg, const char * const recipient) void message_send_groupchat(const char * const msg, const char * const recipient) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); xmpp_stanza_t *message = stanza_create_message(ctx, recipient, STANZA_TYPE_GROUPCHAT, msg, NULL); @@ -89,8 +90,8 @@ message_send_groupchat(const char * const msg, const char * const recipient) void message_send_composing(const char * const recipient) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, recipient, STANZA_NAME_COMPOSING); @@ -102,8 +103,8 @@ message_send_composing(const char * const recipient) void message_send_paused(const char * const recipient) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, recipient, STANZA_NAME_PAUSED); @@ -115,8 +116,8 @@ message_send_paused(const char * const recipient) void message_send_inactive(const char * const recipient) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, recipient, STANZA_NAME_INACTIVE); @@ -128,8 +129,8 @@ message_send_inactive(const char * const recipient) void message_send_gone(const char * const recipient) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, recipient, STANZA_NAME_GONE); @@ -148,7 +149,7 @@ _message_handler(xmpp_conn_t * const conn, log_error("Message stanza received with no type attribute"); return 1; } else if (strcmp(type, STANZA_TYPE_ERROR) == 0) { - return error_handler(stanza); + return connection_error_handler(stanza); } else if (strcmp(type, STANZA_TYPE_GROUPCHAT) == 0) { return _groupchat_message_handler(stanza); } else if (strcmp(type, STANZA_TYPE_CHAT) == 0) { diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c index a2ec75c4..f0510b95 100644 --- a/src/xmpp/presence.c +++ b/src/xmpp/presence.c @@ -31,6 +31,7 @@ #include "muc.h" #include "profanity.h" #include "xmpp/capabilities.h" +#include "xmpp/connection.h" #include "xmpp/stanza.h" #include "xmpp/xmpp.h" @@ -53,16 +54,16 @@ presence_init(void) void presence_add_handlers(void) { - xmpp_conn_t * const conn = jabber_get_conn(); - xmpp_ctx_t * const ctx = jabber_get_ctx(); + xmpp_conn_t * const conn = connection_get_conn(); + xmpp_ctx_t * const ctx = connection_get_ctx(); HANDLE(NULL, NULL, _presence_handler); } void presence_subscription(const char * const jid, const jabber_subscr_t action) { - xmpp_ctx_t *ctx = jabber_get_ctx(); - xmpp_conn_t *conn = jabber_get_conn(); + xmpp_ctx_t *ctx = connection_get_ctx(); + xmpp_conn_t *conn = connection_get_conn(); xmpp_stanza_t *presence; char *type, *jid_cpy, *bare_jid; @@ -108,8 +109,8 @@ void presence_update(jabber_presence_t presence_type, const char * const msg, int idle) { - xmpp_ctx_t *ctx = jabber_get_ctx(); - xmpp_conn_t *conn = jabber_get_conn(); + xmpp_ctx_t *ctx = connection_get_ctx(); + xmpp_conn_t *conn = connection_get_conn(); int pri = accounts_get_priority_for_presence_type(jabber_get_account_name(), presence_type); const char *show = stanza_get_presence_string_from_type(presence_type); @@ -118,9 +119,9 @@ presence_update(jabber_presence_t presence_type, const char * const msg, if (jabber_get_connection_status() != JABBER_CONNECTED) return; - jabber_conn_set_presence_type(presence_type); - jabber_conn_set_presence_message(msg); - jabber_conn_set_priority(pri); + connection_set_presence_type(presence_type); + connection_set_presence_message(msg); + connection_set_priority(pri); xmpp_stanza_t *presence = stanza_create_presence(ctx, show, msg); stanza_attach_priority(ctx, presence, pri); @@ -156,8 +157,8 @@ presence_update(jabber_presence_t presence_type, const char * const msg, void presence_join_room(Jid *jid) { - xmpp_ctx_t *ctx = jabber_get_ctx(); - xmpp_conn_t *conn = jabber_get_conn(); + xmpp_ctx_t *ctx = connection_get_ctx(); + xmpp_conn_t *conn = connection_get_conn(); jabber_presence_t presence_type = jabber_get_presence_type(); const char *show = stanza_get_presence_string_from_type(presence_type); char *status = jabber_get_presence_message(); @@ -177,8 +178,8 @@ presence_join_room(Jid *jid) void presence_change_room_nick(const char * const room, const char * const nick) { - xmpp_ctx_t *ctx = jabber_get_ctx(); - xmpp_conn_t *conn = jabber_get_conn(); + xmpp_ctx_t *ctx = connection_get_ctx(); + xmpp_conn_t *conn = connection_get_conn(); char *full_room_jid = create_fulljid(room, nick); xmpp_stanza_t *presence = stanza_create_room_newnick_presence(ctx, full_room_jid); xmpp_send(conn, presence); @@ -190,8 +191,8 @@ presence_change_room_nick(const char * const room, const char * const nick) void presence_leave_chat_room(const char * const room_jid) { - xmpp_ctx_t *ctx = jabber_get_ctx(); - xmpp_conn_t *conn = jabber_get_conn(); + xmpp_ctx_t *ctx = connection_get_ctx(); + xmpp_conn_t *conn = connection_get_conn(); char *nick = muc_get_room_nick(room_jid); xmpp_stanza_t *presence = stanza_create_room_leave_presence(ctx, room_jid, @@ -214,7 +215,7 @@ _presence_handler(xmpp_conn_t * const conn, Jid *from_jid = jid_create(from); if ((type != NULL) && (strcmp(type, STANZA_TYPE_ERROR) == 0)) { - return error_handler(stanza); + return connection_error_handler(stanza); } // handle chat room presence @@ -283,8 +284,8 @@ _presence_handler(xmpp_conn_t * const conn, static char * _handle_presence_caps(xmpp_stanza_t * const stanza) { - xmpp_ctx_t *ctx = jabber_get_ctx(); - xmpp_conn_t *conn = jabber_get_conn(); + xmpp_ctx_t *ctx = connection_get_ctx(); + xmpp_conn_t *conn = connection_get_conn(); char *caps_key = NULL; char *node = NULL; char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM); diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index d81be248..644bba48 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -62,15 +62,8 @@ const char * jabber_get_jid(void); jabber_conn_status_t jabber_get_connection_status(void); jabber_presence_t jabber_get_presence_type(void); char * jabber_get_presence_message(void); -void jabber_free_resources(void); void jabber_restart(void); void jabber_set_autoping(int seconds); -xmpp_conn_t *jabber_get_conn(void); -xmpp_ctx_t *jabber_get_ctx(void); -int error_handler(xmpp_stanza_t * const stanza); -void jabber_conn_set_presence_type(jabber_presence_t presence_type); -void jabber_conn_set_priority(int priority); -void jabber_conn_set_presence_message(const char * const message); char* jabber_get_account_name(void); // message functions