mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-15 08:21:28 +00:00
Set data rate to disabled by default
This commit is contained in:
parent
1c20da88f9
commit
675a67b676
@ -372,7 +372,11 @@ void EQ::Net::DaybreakConnection::QueuePacket(Packet &p, int stream, bool reliab
|
|||||||
|
|
||||||
EQ::Net::DaybreakConnectionStats EQ::Net::DaybreakConnection::GetStats()
|
EQ::Net::DaybreakConnectionStats EQ::Net::DaybreakConnection::GetStats()
|
||||||
{
|
{
|
||||||
return m_stats;
|
EQ::Net::DaybreakConnectionStats ret = m_stats;
|
||||||
|
ret.datarate_remaining = m_outgoing_budget;
|
||||||
|
ret.avg_ping = m_rolling_ping;
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EQ::Net::DaybreakConnection::ResetStats()
|
void EQ::Net::DaybreakConnection::ResetStats()
|
||||||
@ -785,14 +789,14 @@ void EQ::Net::DaybreakConnection::ProcessDecodedPacket(const Packet &p)
|
|||||||
InternalSend(out);
|
InternalSend(out);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OP_SessionStatResponse:
|
case OP_SessionStatResponse: {
|
||||||
auto response = p.GetSerialize<DaybreakSessionStatResponse>(0);
|
auto response = p.GetSerialize<DaybreakSessionStatResponse>(0);
|
||||||
m_stats.sync_remote_sent_packets = EQ::Net::NetworkToHost(response.server_sent);
|
m_stats.sync_remote_sent_packets = EQ::Net::NetworkToHost(response.server_sent);
|
||||||
m_stats.sync_remote_recv_packets = EQ::Net::NetworkToHost(response.server_recv);
|
m_stats.sync_remote_recv_packets = EQ::Net::NetworkToHost(response.server_recv);
|
||||||
m_stats.sync_sent_packets = m_stats.sent_packets;
|
m_stats.sync_sent_packets = m_stats.sent_packets;
|
||||||
m_stats.sync_recv_packets = m_stats.recv_packets;
|
m_stats.sync_recv_packets = m_stats.recv_packets;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
LogF(Logs::Detail, Logs::Netcode, "Unhandled opcode {0:#x}", p.GetInt8(1));
|
LogF(Logs::Detail, Logs::Netcode, "Unhandled opcode {0:#x}", p.GetInt8(1));
|
||||||
break;
|
break;
|
||||||
@ -1253,12 +1257,15 @@ void EQ::Net::DaybreakConnection::SendKeepAlive()
|
|||||||
|
|
||||||
void EQ::Net::DaybreakConnection::InternalSend(Packet &p)
|
void EQ::Net::DaybreakConnection::InternalSend(Packet &p)
|
||||||
{
|
{
|
||||||
if (m_owner->m_options.outgoing_data_rate >= 0.0) {
|
if (m_owner->m_options.outgoing_data_rate > 0.0) {
|
||||||
auto new_budget = m_outgoing_budget - (p.Length() / 1024.0);
|
auto new_budget = m_outgoing_budget - (p.Length() / 1024.0);
|
||||||
if (new_budget <= 0.0) {
|
if (new_budget <= 0.0) {
|
||||||
m_stats.dropped_datarate_packets++;
|
m_stats.dropped_datarate_packets++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
m_outgoing_budget = new_budget;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_last_send = Clock::now();
|
m_last_send = Clock::now();
|
||||||
|
|||||||
@ -84,11 +84,13 @@ namespace EQ
|
|||||||
sync_remote_sent_packets = 0;
|
sync_remote_sent_packets = 0;
|
||||||
min_ping = 0xFFFFFFFFFFFFFFFFUL;
|
min_ping = 0xFFFFFFFFFFFFFFFFUL;
|
||||||
max_ping = 0;
|
max_ping = 0;
|
||||||
|
avg_ping = 0;
|
||||||
created = Clock::now();
|
created = Clock::now();
|
||||||
dropped_datarate_packets = 0;
|
dropped_datarate_packets = 0;
|
||||||
resent_packets = 0;
|
resent_packets = 0;
|
||||||
resent_fragments = 0;
|
resent_fragments = 0;
|
||||||
resent_full = 0;
|
resent_full = 0;
|
||||||
|
datarate_remaining = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t recv_bytes;
|
uint64_t recv_bytes;
|
||||||
@ -101,12 +103,14 @@ namespace EQ
|
|||||||
uint64_t sync_remote_sent_packets;
|
uint64_t sync_remote_sent_packets;
|
||||||
uint64_t min_ping;
|
uint64_t min_ping;
|
||||||
uint64_t max_ping;
|
uint64_t max_ping;
|
||||||
|
uint64_t avg_ping;
|
||||||
uint64_t last_ping;
|
uint64_t last_ping;
|
||||||
Timestamp created;
|
Timestamp created;
|
||||||
uint64_t dropped_datarate_packets; //packets dropped due to datarate limit, couldn't think of a great name
|
uint64_t dropped_datarate_packets; //packets dropped due to datarate limit, couldn't think of a great name
|
||||||
uint64_t resent_packets;
|
uint64_t resent_packets;
|
||||||
uint64_t resent_fragments;
|
uint64_t resent_fragments;
|
||||||
uint64_t resent_full;
|
uint64_t resent_full;
|
||||||
|
double datarate_remaining;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DaybreakConnectionManager;
|
class DaybreakConnectionManager;
|
||||||
@ -247,7 +251,7 @@ namespace EQ
|
|||||||
tic_rate_hertz = 60.0;
|
tic_rate_hertz = 60.0;
|
||||||
resend_timeout = 90000;
|
resend_timeout = 90000;
|
||||||
connection_close_time = 2000;
|
connection_close_time = 2000;
|
||||||
outgoing_data_rate = 8.0;
|
outgoing_data_rate = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t max_packet_size;
|
size_t max_packet_size;
|
||||||
|
|||||||
@ -709,7 +709,7 @@ RULE_INT(Network, ResendDelayBaseMS, 100)
|
|||||||
RULE_REAL(Network, ResendDelayFactor, 1.5)
|
RULE_REAL(Network, ResendDelayFactor, 1.5)
|
||||||
RULE_INT(Network, ResendDelayMinMS, 100)
|
RULE_INT(Network, ResendDelayMinMS, 100)
|
||||||
RULE_INT(Network, ResendDelayMaxMS, 5000)
|
RULE_INT(Network, ResendDelayMaxMS, 5000)
|
||||||
RULE_REAL(Network, ClientDataRate, 50.0) // 50KB / Sec
|
RULE_REAL(Network, ClientDataRate, 0.0) // KB / sec, 0.0 disabled
|
||||||
RULE_CATEGORY_END()
|
RULE_CATEGORY_END()
|
||||||
|
|
||||||
RULE_CATEGORY(QueryServ)
|
RULE_CATEGORY(QueryServ)
|
||||||
|
|||||||
@ -9488,6 +9488,7 @@ void command_netstats(Client *c, const Seperator *sep)
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto connection = c->Connection();
|
auto connection = c->Connection();
|
||||||
|
auto &opts = connection->GetRawConnection()->GetManager()->GetOptions();
|
||||||
auto stats = connection->GetRawConnection()->GetStats();
|
auto stats = connection->GetRawConnection()->GetStats();
|
||||||
auto now = EQ::Net::Clock::now();
|
auto now = EQ::Net::Clock::now();
|
||||||
auto sec_since_stats_reset = std::chrono::duration_cast<std::chrono::duration<double>>(now - stats.created).count();
|
auto sec_since_stats_reset = std::chrono::duration_cast<std::chrono::duration<double>>(now - stats.created).count();
|
||||||
@ -9499,6 +9500,7 @@ void command_netstats(Client *c, const Seperator *sep)
|
|||||||
c->Message(0, "Min Ping: %u", stats.min_ping);
|
c->Message(0, "Min Ping: %u", stats.min_ping);
|
||||||
c->Message(0, "Max Ping: %u", stats.max_ping);
|
c->Message(0, "Max Ping: %u", stats.max_ping);
|
||||||
c->Message(0, "Last Ping: %u", stats.last_ping);
|
c->Message(0, "Last Ping: %u", stats.last_ping);
|
||||||
|
c->Message(0, "Averge Ping: %u", stats.avg_ping);
|
||||||
c->Message(0, "--------------------------------------------------------------------");
|
c->Message(0, "--------------------------------------------------------------------");
|
||||||
c->Message(0, "(Realtime) Recv Packets: %u (%.2f/sec)", stats.recv_packets, stats.recv_packets / sec_since_stats_reset);
|
c->Message(0, "(Realtime) Recv Packets: %u (%.2f/sec)", stats.recv_packets, stats.recv_packets / sec_since_stats_reset);
|
||||||
c->Message(0, "(Realtime) Sent Packets: %u (%.2f/sec)", stats.sent_packets, stats.sent_packets / sec_since_stats_reset);
|
c->Message(0, "(Realtime) Sent Packets: %u (%.2f/sec)", stats.sent_packets, stats.sent_packets / sec_since_stats_reset);
|
||||||
@ -9513,6 +9515,11 @@ void command_netstats(Client *c, const Seperator *sep)
|
|||||||
c->Message(0, "Resent Fragments: %u (%.2f/sec)", stats.resent_fragments, stats.resent_fragments / sec_since_stats_reset);
|
c->Message(0, "Resent Fragments: %u (%.2f/sec)", stats.resent_fragments, stats.resent_fragments / sec_since_stats_reset);
|
||||||
c->Message(0, "Resent Non-Fragments: %u (%.2f/sec)", stats.resent_full, stats.resent_full / sec_since_stats_reset);
|
c->Message(0, "Resent Non-Fragments: %u (%.2f/sec)", stats.resent_full, stats.resent_full / sec_since_stats_reset);
|
||||||
c->Message(0, "Dropped Datarate Packets: %u (%.2f/sec)", stats.dropped_datarate_packets, stats.dropped_datarate_packets / sec_since_stats_reset);
|
c->Message(0, "Dropped Datarate Packets: %u (%.2f/sec)", stats.dropped_datarate_packets, stats.dropped_datarate_packets / sec_since_stats_reset);
|
||||||
|
|
||||||
|
if (opts.outgoing_data_rate > 0.0) {
|
||||||
|
c->Message(0, "Outgoing Link Saturation %.2f%% (%.2fkb/sec)", 100.0 * (1.0 - ((opts.outgoing_data_rate - stats.datarate_remaining) / opts.outgoing_data_rate)), opts.outgoing_data_rate);
|
||||||
|
}
|
||||||
|
|
||||||
c->Message(0, "--------------------------------------------------------------------");
|
c->Message(0, "--------------------------------------------------------------------");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user