1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-04 16:53:14 +02:00

irc: send signal "irc_server_lag_changed", store lag in server buffer

The lag is stored in the local variable "lag" of the server buffer.
When there is no lag, the local variable does not exist.
This commit is contained in:
Sébastien Helleu
2017-03-18 14:53:28 +01:00
parent 9a8ec36cbd
commit d31e4f1d9a
7 changed files with 65 additions and 8 deletions
+5
View File
@@ -9017,6 +9017,11 @@ List of signals sent by WeeChat and plugins:
String: server name. |
Disconnected from server.
| irc | irc_server_lag_changed +
_(WeeChat ≥ 1.8)_ |
String: server name. |
Lag changed on the server.
| irc | irc_ignore_removing |
Pointer: ignore. |
Removing ignore.
+5
View File
@@ -9198,6 +9198,11 @@ Liste des signaux envoyés par WeeChat et les extensions :
Chaîne : nom du serveur. |
Déconnecté du serveur.
| irc | irc_server_lag_changed +
_(WeeChat ≥ 1.8)_ |
Chaîne : nom du serveur. |
Le lag a changé sur le serveur.
| irc | irc_ignore_removing |
Pointeur : ignore. |
Suppression d'un ignore en cours.
+6
View File
@@ -9293,6 +9293,12 @@ List of signals sent by WeeChat and plugins:
String: nome server. |
Disconnesso dal server.
// TRANSLATION MISSING
| irc | irc_server_lag_changed +
_(WeeChat ≥ 1.8)_ |
String: server name. |
Lag changed on the server.
| irc | irc_ignore_removing |
Puntatore: ignore. |
Rimozione dell'ignore.
+6
View File
@@ -9066,6 +9066,12 @@ WeeChat とプラグインが送信するシグナルのリスト:
String: サーバ名 |
サーバから切断された
// TRANSLATION MISSING
| irc | irc_server_lag_changed +
_(WeeChat バージョン 1.8 以上で利用可)_ |
String: サーバ名 |
Lag changed on the server.
| irc | irc_ignore_removing |
Pointer: 無視 |
無視条件を削除中
+7 -5
View File
@@ -1838,17 +1838,19 @@ IRC_PROTOCOL_CALLBACK(pong)
gettimeofday (&tv, NULL);
server->lag = (int)(weechat_util_timeval_diff (&(server->lag_check_time),
&tv) / 1000);
if (server->lag != server->lag_displayed)
{
server->lag_displayed = server->lag;
weechat_bar_item_update ("lag");
}
/* schedule next lag check */
server->lag_check_time.tv_sec = 0;
server->lag_check_time.tv_usec = 0;
server->lag_next_check = time (NULL) +
weechat_config_integer (irc_config_network_lag_check);
/* refresh lag bar item if needed */
if (server->lag != server->lag_displayed)
{
server->lag_displayed = server->lag;
irc_server_set_lag (server);
}
}
else
{
+35 -3
View File
@@ -785,6 +785,34 @@ irc_server_set_prefix_modes_chars (struct t_irc_server *server,
}
}
/*
* Sets lag in server buffer (local variable), update bar item "lag"
* and send signal "irc_server_lag_changed" for the server.
*/
void
irc_server_set_lag (struct t_irc_server *server)
{
char str_lag[32];
if (server->lag >= weechat_config_integer (irc_config_network_lag_min_show))
{
snprintf (str_lag, sizeof (str_lag),
((server->lag_check_time.tv_sec == 0) || (server->lag < 1000)) ?
"%.3f" : "%.0f",
((float)(server->lag)) / 1000);
weechat_buffer_set (server->buffer, "localvar_set_lag", str_lag);
}
else
{
weechat_buffer_set (server->buffer, "localvar_del_lag", "");
}
weechat_hook_signal_send ("irc_server_lag_changed",
WEECHAT_HOOK_SIGNAL_STRING,
server->name);
weechat_bar_item_update ("lag");
}
/*
* Gets prefix_modes for server (for example: "ohv").
*
@@ -3105,7 +3133,7 @@ irc_server_timer_cb (const void *pointer, void *data, int remaining_calls)
struct t_irc_redirect *ptr_redirect, *ptr_next_redirect;
time_t current_time;
static struct timeval tv;
int away_check;
int away_check, refresh_lag;
/* make C compiler happy */
(void) pointer;
@@ -3179,6 +3207,7 @@ irc_server_timer_cb (const void *pointer, void *data, int remaining_calls)
/* compute lag */
if (ptr_server->lag_check_time.tv_sec != 0)
{
refresh_lag = 0;
gettimeofday (&tv, NULL);
ptr_server->lag = (int)(weechat_util_timeval_diff (&(ptr_server->lag_check_time),
&tv) / 1000);
@@ -3191,7 +3220,7 @@ irc_server_timer_cb (const void *pointer, void *data, int remaining_calls)
if (ptr_server->lag != ptr_server->lag_displayed)
{
ptr_server->lag_displayed = ptr_server->lag;
weechat_bar_item_update ("lag");
refresh_lag = 1;
}
}
/* lag timeout? => disconnect */
@@ -3219,7 +3248,7 @@ irc_server_timer_cb (const void *pointer, void *data, int remaining_calls)
if (ptr_server->lag != ptr_server->lag_displayed)
{
ptr_server->lag_displayed = ptr_server->lag;
weechat_bar_item_update ("lag");
refresh_lag = 1;
}
/* schedule next lag check in 5 seconds */
@@ -3229,6 +3258,8 @@ irc_server_timer_cb (const void *pointer, void *data, int remaining_calls)
weechat_config_integer (irc_config_network_lag_check);
}
}
if (refresh_lag)
irc_server_set_lag (ptr_server);
}
/* remove redirects if timeout occurs */
@@ -4831,6 +4862,7 @@ irc_server_disconnect (struct t_irc_server *server, int switch_address,
server->lag_next_check = time (NULL) +
weechat_config_integer (irc_config_network_lag_check);
server->lag_last_refresh = 0;
irc_server_set_lag (server);
server->monitor = 0;
server->monitor_time = 0;
+1
View File
@@ -289,6 +289,7 @@ extern const char *irc_server_get_isupport_value (struct t_irc_server *server,
const char *feature);
extern void irc_server_set_prefix_modes_chars (struct t_irc_server *server,
const char *prefix);
extern void irc_server_set_lag (struct t_irc_server *server);
extern const char *irc_server_get_prefix_modes (struct t_irc_server *server);
extern const char *irc_server_get_prefix_chars (struct t_irc_server *server);
extern int irc_server_get_prefix_mode_index (struct t_irc_server *server,