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:
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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 */
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user