Skip to content

Commit 29d5073

Browse files
S1mpotyagaroot
andauthored
FEAT: add links reports (#553)
close #552 --------- Co-authored-by: root <root@zfk.localdomain>
1 parent dbf9813 commit 29d5073

33 files changed

Lines changed: 266 additions & 107 deletions

source/network/connection/connection.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ std::shared_ptr<Connection> Connection::create_shared(
1111

1212
Connection::Connection(Id a_id, std::shared_ptr<IMPLB> a_mplb)
1313
: m_id(std::move(a_id)),
14-
m_context{SizeByte(0), SizeByte(0)},
14+
m_context{SizeByte(0ul), SizeByte(0ul)},
1515
m_mplb(a_mplb) {}
1616

1717
utils::StrExpected<void> Connection::send_data(Data data,
@@ -28,7 +28,7 @@ utils::StrExpected<void> Connection::send_data(Data data,
2828
Scheduler::get_instance().get_current_time();
2929
}
3030
m_data_context_table[data_id] =
31-
DataContext{data.size, SizeByte(0), SizeByte(0), callback};
31+
DataContext{data.size, SizeByte(0ul), SizeByte(0ul), callback};
3232
m_context.total_data_added += data.size;
3333
m_sending_queue.push(data_id);
3434

@@ -67,7 +67,7 @@ void Connection::send_new_portion() {
6767
}
6868

6969
SizeByte quota = m_mplb->get_context().sending_quota;
70-
if (quota == SizeByte(0)) {
70+
if (quota == SizeByte(0ul)) {
7171
LOG_INFO(fmt::format(
7272
"Sending quota is zero; could not send data with id {}",
7373
id.to_string()));

source/network/connection/flow/flows_summary/flows_summary.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void FlowsSummary::write_to_csv(std::filesystem::path output_path) const {
2929
? ctx.last_ack_receive_time.value() - ctx.start_time.value()
3030
: TimeNs(0));
3131

32-
double overhead = ctx.delivered_size != SizeByte(0)
32+
double overhead = ctx.delivered_size != SizeByte(0ul)
3333
? (ctx.sent_size / ctx.delivered_size - 1) * 100
3434
: std::nan("");
3535
// Effective delivery rate is average delivery rate calculated on the

source/network/connection/flow/i_flow.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
namespace sim {
1212

1313
struct FlowContext : FlowFourTuple {
14-
SizeByte sent_size = SizeByte(0);
15-
SizeByte delivered_size = SizeByte(0);
16-
SizeByte retransmit_size = SizeByte(0);
14+
SizeByte sent_size = SizeByte(0ul);
15+
SizeByte delivered_size = SizeByte(0ul);
16+
SizeByte retransmit_size = SizeByte(0ul);
1717

1818
std::optional<TimeNs> start_time = std::nullopt;
1919
std::optional<TimeNs> last_ack_receive_time = std::nullopt;

source/network/connection/flow/packet.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ struct Packet;
1515
using OnPacketDeliveryCallback = std::function<void(const Packet&)>;
1616

1717
struct Packet : FourTuple {
18-
Packet(SizeByte a_size = SizeByte(0), Id a_source_id = "",
18+
Packet(SizeByte a_size = SizeByte(0ul), Id a_source_id = "",
1919
Id a_dest_id = "", TimeNs a_generated_time = TimeNs(0),
2020
TimeNs a_sent_time = TimeNs(0),
21-
SizeByte a_delivered_at_origin = SizeByte(0),
21+
SizeByte a_delivered_at_origin = SizeByte(0ul),
2222
bool a_ecn_capable_transport = true,
2323
bool a_congestion_experienced = false);
2424

source/network/connection/flow/tcp/tcp_flow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ void TcpFlow::process_data_packet(const Packet& data,
138138
ack.sender_port = m_context.receiver_port;
139139
ack.receiver_id = IdWithHash(m_context.sender->get_id());
140140
ack.receiver_port = m_context.sender_port;
141-
ack.size = SizeByte(1);
141+
ack.size = SizeByte(1ul);
142142
ack.ttl = M_MAX_TTL;
143143
auto exp_void = ack.flags.set_flag(m_packet_type_label, PacketType::ACK);
144144
if (!exp_void.has_value()) {

source/network/connection/i_connection.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
namespace sim {
1313

1414
struct ConnectionContext {
15-
SizeByte total_data_added = SizeByte(0);
16-
SizeByte total_data_delivered = SizeByte(0);
15+
SizeByte total_data_added = SizeByte(0ul);
16+
SizeByte total_data_delivered = SizeByte(0ul);
1717
utils::Statistics<SpeedGbps> delivery_rate_statistics =
1818
utils::Statistics<SpeedGbps>();
1919
std::optional<TimeNs> first_send_data_time = std::nullopt;

source/network/connection/mplb/single_cc/single_cc_mplb.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ SingleCCMplb::SingleCCMplb(MetricableCC a_cc,
2323
SizeByte a_packet_size,
2424
SingleCCMetricsFilters a_metrics_filters)
2525
: m_cc(std::move(a_cc)),
26-
m_sent_data_size(0),
27-
m_delivered_data_size(0),
28-
m_packets_in_flight(0),
26+
m_sent_data_size(0ul),
27+
m_delivered_data_size(0ul),
28+
m_packets_in_flight(0ul),
2929
m_path_chooser(std::move(a_path_chooser)),
3030
m_packet_size(a_packet_size),
3131
m_delivery_rate_fairness(m_path_chooser->get_flows_table()),
@@ -44,7 +44,7 @@ utils::StrExpected<void> SingleCCMplb::send_data(Data data,
4444
TimeNs shift(0);
4545

4646
std::size_t packets_count =
47-
(data.size + m_packet_size - SizeByte(1)) / m_packet_size;
47+
(data.size + m_packet_size - SizeByte(1ul)) / m_packet_size;
4848

4949
std::shared_ptr<utils::CallbackObserver> observer =
5050
std::make_shared<utils::CallbackObserver>(packets_count, callback);

source/network/connection/mplb/single_cc/single_cc_mplb.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class SingleCCMplb : public IMPLB,
2020

2121
static std::shared_ptr<SingleCCMplb> create_shared(
2222
MetricableCC a_cc, std::unique_ptr<IPathChooser> a_path_chooser,
23-
SizeByte a_packet_size = SizeByte(1500),
23+
SizeByte a_packet_size = SizeByte(1500ul),
2424
SingleCCMetricsFilters a_metrics_filters = DEFAULT_METRICS_FILTERS);
2525

2626
[[nodiscard]] virtual utils::StrExpected<void> send_data(

source/parser/parse_utils.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,30 +84,31 @@ utils::StrExpected<SizeByte> parse_size(const std::string &size) {
8484
return std::unexpected(maybe_value_unit.error());
8585
}
8686

87-
auto [value, unit] = maybe_value_unit.value();
87+
auto [value_32, unit] = maybe_value_unit.value();
88+
uint64_t value_64 = static_cast<uint64_t>(value_32);
8889
if (unit == Bit::suffix) {
89-
return SizeByte(Size<Bit>(value));
90+
return SizeByte(Size<Bit>(value_64));
9091
}
9192
if (unit == Byte::suffix) {
92-
return SizeByte(value);
93+
return SizeByte(value_64);
9394
}
9495
if (unit == KBit::suffix) {
95-
return SizeByte(Size<KBit>(value));
96+
return SizeByte(Size<KBit>(value_64));
9697
}
9798
if (unit == KByte::suffix) {
98-
return SizeByte(Size<KByte>(value));
99+
return SizeByte(Size<KByte>(value_64));
99100
}
100101
if (unit == MBit::suffix) {
101-
return SizeByte(Size<MBit>(value));
102+
return SizeByte(Size<MBit>(value_64));
102103
}
103104
if (unit == MByte::suffix) {
104-
return SizeByte(Size<MByte>(value));
105+
return SizeByte(Size<MByte>(value_64));
105106
}
106107
if (unit == GBit::suffix) {
107-
return SizeByte(Size<GBit>(value));
108+
return SizeByte(Size<GBit>(value_64));
108109
}
109110
if (unit == GByte::suffix) {
110-
return SizeByte(Size<GByte>(value));
111+
return SizeByte(Size<GByte>(value_64));
111112
}
112113
return std::unexpected("Unsupported size unit: " + unit);
113114
}

source/topology/link/i_link.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,15 @@
99
namespace sim {
1010

1111
struct LinkContext {
12+
struct ActivityTime {
13+
TimeNs first;
14+
TimeNs last;
15+
};
16+
1217
SpeedGbps speed;
1318
TimeNs latency;
19+
std::optional<ActivityTime> activity_time = std::nullopt;
20+
SizeByte total_data_transferred = SizeByte(0ul);
1421

1522
bool operator<(const LinkContext& ctx) const {
1623
return std::make_pair(speed, latency) <

0 commit comments

Comments
 (0)