Added stanza module for basic stanza handling

To reduce duplication in jabber module
This commit is contained in:
James Booth
2012-11-08 23:07:00 +00:00
parent ba11e88dcb
commit dac4cf3c3c
4 changed files with 100 additions and 27 deletions

View File

@@ -33,6 +33,7 @@
#include "preferences.h"
#include "profanity.h"
#include "room_chat.h"
#include "stanza.h"
#define PING_INTERVAL 120000 // 2 minutes
@@ -53,7 +54,6 @@ static void _xmpp_file_logger(void * const userdata,
static xmpp_log_t * _xmpp_get_file_logger();
static void _jabber_roster_request(void);
void _jabber_send_state(const char * const recipient, const char * const state);
// XMPP event handlers
static void _connection_handler(xmpp_conn_t * const conn,
@@ -216,25 +216,45 @@ jabber_send_groupchat(const char * const msg, const char * const recipient)
void
jabber_send_composing(const char * const recipient)
{
_jabber_send_state(recipient, "composing");
xmpp_stanza_t *stanza = stanza_create_chat_state(jabber_conn.ctx, recipient,
"composing");
xmpp_send(jabber_conn.conn, stanza);
xmpp_stanza_release(stanza);
chat_session_set_sent(recipient);
}
void
jabber_send_paused(const char * const recipient)
{
_jabber_send_state(recipient, "paused");
xmpp_stanza_t *stanza = stanza_create_chat_state(jabber_conn.ctx, recipient,
"paused");
xmpp_send(jabber_conn.conn, stanza);
xmpp_stanza_release(stanza);
chat_session_set_sent(recipient);
}
void
jabber_send_inactive(const char * const recipient)
{
_jabber_send_state(recipient, "inactive");
xmpp_stanza_t *stanza = stanza_create_chat_state(jabber_conn.ctx, recipient,
"inactive");
xmpp_send(jabber_conn.conn, stanza);
xmpp_stanza_release(stanza);
chat_session_set_sent(recipient);
}
void
jabber_send_gone(const char * const recipient)
{
_jabber_send_state(recipient, "gone");
xmpp_stanza_t *stanza = stanza_create_chat_state(jabber_conn.ctx, recipient,
"gone");
xmpp_send(jabber_conn.conn, stanza);
xmpp_stanza_release(stanza);
chat_session_set_sent(recipient);
}
void
@@ -812,24 +832,3 @@ _xmpp_get_file_logger()
return file_log;
}
void
_jabber_send_state(const char * const recipient, const char * const state)
{
xmpp_stanza_t *message, *chat_state;
message = xmpp_stanza_new(jabber_conn.ctx);
xmpp_stanza_set_name(message, "message");
xmpp_stanza_set_type(message, "chat");
xmpp_stanza_set_attribute(message, "to", recipient);
chat_state = xmpp_stanza_new(jabber_conn.ctx);
xmpp_stanza_set_name(chat_state, state);
xmpp_stanza_set_ns(chat_state, "http://jabber.org/protocol/chatstates");
xmpp_stanza_add_child(message, chat_state);
xmpp_send(jabber_conn.conn, message);
xmpp_stanza_release(message);
chat_session_set_sent(recipient);
}