1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-30 06:46:38 +02:00

relay: add signals "upgrade" and "upgrade_ended" in WeeChat protocol

This commit is contained in:
Sebastien Helleu
2012-05-17 11:24:59 +02:00
parent 04275a7354
commit a62b243af5
6 changed files with 95 additions and 17 deletions
@@ -278,7 +278,6 @@ relay_weechat_protocol_signal_buffer_cb (void *data, const char *signal,
char cmd_hdata[64], str_signal[128];
/* make C compiler happy */
(void) signal;
(void) type_data;
ptr_client = (struct t_relay_client *)data;
@@ -595,6 +594,43 @@ relay_weechat_protocol_signal_nicklist_cb (void *data, const char *signal,
return WEECHAT_RC_OK;
}
/*
* relay_weechat_protocol_signal_upgrade_cb: callback for "upgrade*" signals
*/
int
relay_weechat_protocol_signal_upgrade_cb (void *data, const char *signal,
const char *type_data,
void *signal_data)
{
struct t_relay_client *ptr_client;
struct t_relay_weechat_msg *msg;
char str_signal[128];
/* make C compiler happy */
(void) type_data;
(void) signal_data;
ptr_client = (struct t_relay_client *)data;
if (!ptr_client || !relay_client_valid (ptr_client))
return WEECHAT_RC_OK;
snprintf (str_signal, sizeof (str_signal), "_%s", signal);
if ((strcmp (signal, "upgrade") == 0)
|| (strcmp (signal, "upgrade_ended") == 0))
{
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
relay_weechat_msg_send (ptr_client, msg, 0);
relay_weechat_msg_free (msg);
}
}
return WEECHAT_RC_OK;
}
/*
* relay_weechat_protocol_cb_sync: 'sync' command from client
*/
@@ -72,6 +72,10 @@ extern int relay_weechat_protocol_signal_nicklist_cb (void *data,
const char *signal,
const char *type_data,
void *signal_data);
extern int relay_weechat_protocol_signal_upgrade_cb (void *data,
const char *signal,
const char *type_data,
void *signal_data);
extern int relay_weechat_protocol_timer_nicklist_cb (void *data,
int remaining_calls);
extern void relay_weechat_protocol_recv (struct t_relay_client *client,
+14
View File
@@ -81,6 +81,10 @@ relay_weechat_hook_signals (struct t_relay_client *client)
weechat_hook_signal ("nicklist_*",
&relay_weechat_protocol_signal_nicklist_cb,
client);
RELAY_WEECHAT_DATA(client, hook_signal_upgrade) =
weechat_hook_signal ("upgrade*",
&relay_weechat_protocol_signal_upgrade_cb,
client);
}
/*
@@ -100,6 +104,11 @@ relay_weechat_unhook_signals (struct t_relay_client *client)
weechat_unhook (RELAY_WEECHAT_DATA(client, hook_signal_nicklist));
RELAY_WEECHAT_DATA(client, hook_signal_nicklist) = NULL;
}
if (RELAY_WEECHAT_DATA(client, hook_signal_upgrade))
{
weechat_unhook (RELAY_WEECHAT_DATA(client, hook_signal_upgrade));
RELAY_WEECHAT_DATA(client, hook_signal_upgrade) = NULL;
}
}
/*
@@ -205,6 +214,7 @@ relay_weechat_alloc (struct t_relay_client *client)
NULL);
RELAY_WEECHAT_DATA(client, hook_signal_buffer) = NULL;
RELAY_WEECHAT_DATA(client, hook_signal_nicklist) = NULL;
RELAY_WEECHAT_DATA(client, hook_signal_upgrade) = NULL;
RELAY_WEECHAT_DATA(client, buffers_nicklist) =
weechat_hashtable_new (16,
WEECHAT_HASHTABLE_STRING,
@@ -258,6 +268,7 @@ relay_weechat_alloc_with_infolist (struct t_relay_client *client,
}
RELAY_WEECHAT_DATA(client, hook_signal_buffer) = NULL;
RELAY_WEECHAT_DATA(client, hook_signal_nicklist) = NULL;
RELAY_WEECHAT_DATA(client, hook_signal_upgrade) = NULL;
RELAY_WEECHAT_DATA(client, buffers_nicklist) =
weechat_hashtable_new (16,
WEECHAT_HASHTABLE_STRING,
@@ -304,6 +315,8 @@ relay_weechat_free (struct t_relay_client *client)
weechat_unhook (RELAY_WEECHAT_DATA(client, hook_signal_buffer));
if (RELAY_WEECHAT_DATA(client, hook_signal_nicklist))
weechat_unhook (RELAY_WEECHAT_DATA(client, hook_signal_nicklist));
if (RELAY_WEECHAT_DATA(client, hook_signal_upgrade))
weechat_unhook (RELAY_WEECHAT_DATA(client, hook_signal_upgrade));
if (RELAY_WEECHAT_DATA(client, buffers_nicklist))
weechat_hashtable_free (RELAY_WEECHAT_DATA(client, buffers_nicklist));
@@ -355,6 +368,7 @@ relay_weechat_print_log (struct t_relay_client *client)
"keys_values"));
weechat_log_printf (" hook_signal_buffer . . : 0x%lx", RELAY_WEECHAT_DATA(client, hook_signal_buffer));
weechat_log_printf (" hook_signal_nicklist . : 0x%lx", RELAY_WEECHAT_DATA(client, hook_signal_nicklist));
weechat_log_printf (" hook_signal_upgrade. . : 0x%lx", RELAY_WEECHAT_DATA(client, hook_signal_upgrade));
weechat_log_printf (" buffers_nicklist . . . : 0x%lx (hashtable: '%s')",
RELAY_WEECHAT_DATA(client, buffers_nicklist),
weechat_hashtable_get_string (RELAY_WEECHAT_DATA(client, buffers_nicklist),
+3 -2
View File
@@ -41,8 +41,9 @@ struct t_relay_weechat_data
/* sync of buffers */
struct t_hashtable *buffers_sync; /* buffers synchronized (events */
/* received for these buffers) */
struct t_hook *hook_signal_buffer; /* hook for signals "buffer_xxx" */
struct t_hook *hook_signal_nicklist; /* hook for signals "nicklist_xxx"*/
struct t_hook *hook_signal_buffer; /* hook for signals "buffer_*" */
struct t_hook *hook_signal_nicklist; /* hook for signals "nicklist_*" */
struct t_hook *hook_signal_upgrade; /* hook for signals "upgrade*" */
struct t_hashtable *buffers_nicklist; /* send nicklist for these buffers*/
struct t_hook *hook_timer_nicklist; /* timer for sending nicklist */
};