aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCrystalwarrior <varsash@gmail.com>2020-08-25 12:18:49 +0300
committerCrystalwarrior <varsash@gmail.com>2020-08-25 12:18:49 +0300
commitfebfbeafc11ecad57d6e9a06575c28f1b13da8da (patch)
treeed3c8bef2b605cbd9caa00c03e7422d362a95d48
parentf27f210efeb13a5ac29727fef271f8249e3e8c5d (diff)
Actually make use of the completely useless CHECK and CH keepalive timer and use them to determine the client's ping.
Display ping in the application window title. keepalive timer now fires every second instead of every minute Remove meme clock starting on set_widgets() implement get_ping() on w_courtroom
-rw-r--r--include/aoapplication.h3
-rw-r--r--include/courtroom.h10
-rw-r--r--src/courtroom.cpp4
-rw-r--r--src/packet_distribution.cpp10
4 files changed, 21 insertions, 6 deletions
diff --git a/include/aoapplication.h b/include/aoapplication.h
index 60d945ec..3f5767cf 100644
--- a/include/aoapplication.h
+++ b/include/aoapplication.h
@@ -61,6 +61,9 @@ public:
void call_settings_menu();
void call_announce_menu(Courtroom *court);
+ qint64 last_ping;
+ QString window_title;
+
/////////////////server metadata//////////////////
unsigned int s_decryptor = 5;
diff --git a/include/courtroom.h b/include/courtroom.h
index 1ff74f54..0daeb2b1 100644
--- a/include/courtroom.h
+++ b/include/courtroom.h
@@ -57,7 +57,7 @@
#include <QScrollBar>
#include <QTextBoundaryFinder>
#include <QTextCharFormat>
-//#include <QRandomGenerator>
+#include <QElapsedTimer>
#include <stack>
@@ -251,6 +251,8 @@ public:
void check_connection_received();
+ qint64 get_ping() { return ping_timer.elapsed(); }
+
~Courtroom();
private:
@@ -299,11 +301,15 @@ private:
QVector<chatlogpiece> ic_chatlog_history;
- // triggers ping_server() every 60 seconds
+ // triggers ping_server() every 1 second
QTimer *keepalive_timer;
// determines how fast messages tick onto screen
QTimer *chat_tick_timer;
+
+ // count up timer to check how long it took for us to get a response from ping_server()
+ QElapsedTimer ping_timer;
+
// int chat_tick_interval = 60;
// which tick position(character in chat message) we are at
int tick_pos = 0;
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index e2b372c5..ec1fc994 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -8,7 +8,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
qsrand(static_cast<uint>(QDateTime::currentMSecsSinceEpoch() / 1000));
keepalive_timer = new QTimer(this);
- keepalive_timer->start(60000);
+ keepalive_timer->start(1000);
chat_tick_timer = new QTimer(this);
@@ -623,7 +623,6 @@ void Courtroom::set_widgets()
ui_music_display->set_play_once(false);
set_size_and_pos(ui_clock, "clock");
- ui_clock->start(30000);
if (is_ao2_bg) {
set_size_and_pos(ui_ic_chat_message, "ao2_ic_chat_message");
@@ -4672,6 +4671,7 @@ void Courtroom::on_switch_area_music_clicked()
void Courtroom::ping_server()
{
+ ping_timer.start();
ao_app->send_server_packet(
new AOPacket("CH#" + QString::number(m_cid) + "#%"));
}
diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp
index e4e5d5c2..9422cfdb 100644
--- a/src/packet_distribution.cpp
+++ b/src/packet_distribution.cpp
@@ -116,7 +116,13 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
qDebug() << "R:" << f_packet;
#endif
- if (header == "decryptor") {
+ if (header == "CHECK") {
+ if (courtroom_constructed) {
+ last_ping = w_courtroom->get_ping();
+ w_courtroom->set_window_title(window_title + " [ping:" + QString::number(last_ping) + "]");
+ }
+ }
+ else if (header == "decryptor") {
if (f_contents.size() == 0)
goto end;
@@ -250,7 +256,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
courtroom_loaded = false;
- QString window_title = tr("Attorney Online 2");
+ window_title = tr("Attorney Online 2");
int selected_server = w_lobby->get_selected_server();
QString server_address = "", server_name = "";