relay: add signals "upgrade" and "upgrade_ended" in WeeChat protocol
This commit is contained in:
parent
04275a7354
commit
a62b243af5
@ -70,6 +70,7 @@ Version 0.3.8 (under dev!)
|
||||
logger.color.backlog_line and logger.color.backlog_end (task #11966)
|
||||
* perl: fix compilation on OS X (bug #30701)
|
||||
* perl: fix crash on quit on OS X
|
||||
* relay: add signals "upgrade" and "upgrade_ended" in WeeChat protocol
|
||||
* relay: fix crash on /upgrade when client is connected using WeeChat protocol
|
||||
* relay: redirect some irc messages from clients to hide output (messages: mode,
|
||||
ison, list, names, topic, who, whois, whowas, time, userhost) (bug #33516)
|
||||
|
@ -424,58 +424,80 @@ There are two different identifiers ('id'):
|
||||
|
||||
WeeChat reserved identifiers:
|
||||
|
||||
[width="100%",cols="5m,5,3,15",options="header"]
|
||||
[width="100%",cols="5m,5,3,10,8",options="header"]
|
||||
|=====================================================
|
||||
| Identifier | Description | Hdata type | Hdata content
|
||||
| Recommended action in client
|
||||
|
||||
| _buffer_opened | Buffer opened | buffer |
|
||||
'number' (integer), 'full_name' (string), 'short_name' (string), +
|
||||
'nicklist' (integer), 'title' (string), 'local_variables' (hashtable), +
|
||||
'prev_buffer' (pointer), 'next_buffer' (pointer)
|
||||
'prev_buffer' (pointer), 'next_buffer' (pointer) |
|
||||
Open buffer
|
||||
|
||||
| _buffer_type_changed | Type of buffer changed | buffer |
|
||||
'number' (integer), 'full_name' (string), +
|
||||
'type' (integer)
|
||||
'type' (integer) |
|
||||
Change type of buffer
|
||||
|
||||
| _buffer_moved | Buffer moved | buffer |
|
||||
'number' (integer), 'full_name' (string), +
|
||||
'prev_buffer' (pointer), 'next_buffer' (pointer)
|
||||
'prev_buffer' (pointer), 'next_buffer' (pointer) |
|
||||
Move buffer
|
||||
|
||||
| _buffer_merged | Buffer merged | buffer |
|
||||
'number' (integer), 'full_name' (string), +
|
||||
'prev_buffer' (pointer), 'next_buffer' (pointer)
|
||||
'prev_buffer' (pointer), 'next_buffer' (pointer) |
|
||||
Merge buffer
|
||||
|
||||
| _buffer_unmerged | Buffer unmerged | buffer |
|
||||
'number' (integer), 'full_name' (string), +
|
||||
'prev_buffer' (pointer), 'next_buffer' (pointer)
|
||||
'prev_buffer' (pointer), 'next_buffer' (pointer) |
|
||||
Unmerge buffer
|
||||
|
||||
| _buffer_renamed | Buffer renamed | buffer |
|
||||
'number' (integer), 'full_name' (string), 'short_name' (string),
|
||||
'local_variables' (hashtable)
|
||||
'local_variables' (hashtable) |
|
||||
Rename buffer
|
||||
|
||||
| _buffer_title_changed | Title of buffer changed | buffer |
|
||||
'number' (integer), 'full_name' (string), 'title' (string)
|
||||
'number' (integer), 'full_name' (string), 'title' (string) |
|
||||
Change title of buffer
|
||||
|
||||
| _buffer_localvar_added | Local variable added | buffer |
|
||||
'number' (integer), 'full_name' (string), 'local_variables' (hashtable)
|
||||
'number' (integer), 'full_name' (string), 'local_variables' (hashtable) |
|
||||
Add local variable in buffer
|
||||
|
||||
| _buffer_localvar_changed | Local variable changed | buffer |
|
||||
'number' (integer), 'full_name' (string), 'local_variables' (hashtable)
|
||||
'number' (integer), 'full_name' (string), 'local_variables' (hashtable) |
|
||||
Change local variable inbuffer
|
||||
|
||||
| _buffer_localvar_removed | Local variable removed | buffer |
|
||||
'number' (integer), 'full_name' (string), 'local_variables' (hashtable)
|
||||
'number' (integer), 'full_name' (string), 'local_variables' (hashtable) |
|
||||
Remove local variable from buffer
|
||||
|
||||
| _buffer_line_added | Line added in buffer | line |
|
||||
'buffer' (pointer), 'date' (time), 'date_printed' (time), 'displayed' (char),
|
||||
'highlight' (char), 'prefix' (string), 'message' (string)
|
||||
'highlight' (char), 'prefix' (string), 'message' (string) |
|
||||
Display line in buffer
|
||||
|
||||
| _buffer_closing | Buffer closing | buffer |
|
||||
'number' (integer), 'full_name' (string)
|
||||
'number' (integer), 'full_name' (string) |
|
||||
Close buffer
|
||||
|
||||
| _nicklist | Nicklist for a buffer | nicklist_item |
|
||||
'group' (char), 'visible' (char), 'level' (integer), +
|
||||
'name' (string), 'color' (string), +
|
||||
'prefix' (string), 'prefix_color' (string)
|
||||
'prefix' (string), 'prefix_color' (string) |
|
||||
Update nicklist
|
||||
|
||||
| _upgrade | WeeChat is upgrading | (empty) |
|
||||
(empty) |
|
||||
Desync from WeeChat (send command 'desync')
|
||||
|
||||
| _upgrade_ended | Upgrade of WeeChat done | (empty) |
|
||||
(empty) |
|
||||
Resync with WeeChat (resend all commands sent on startup after the 'init')
|
||||
|=====================================================
|
||||
|
||||
[[message_objects]]
|
||||
|
@ -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 */
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user