From b4619e33938d7a3c4c39b7e53e30b0b39e056944 Mon Sep 17 00:00:00 2001 From: winlin Date: Sat, 2 Feb 2019 18:20:19 +0800 Subject: [PATCH] Kbps: Remove the union for kbps slice --- trunk/src/protocol/srs_protocol_kbps.cpp | 31 ++++++++++++------------ trunk/src/protocol/srs_protocol_kbps.hpp | 6 +---- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/trunk/src/protocol/srs_protocol_kbps.cpp b/trunk/src/protocol/srs_protocol_kbps.cpp index 323932e39..eb7167227 100644 --- a/trunk/src/protocol/srs_protocol_kbps.cpp +++ b/trunk/src/protocol/srs_protocol_kbps.cpp @@ -46,8 +46,7 @@ SrsKbpsSample* SrsKbpsSample::update(int64_t b, int64_t t, int k) SrsKbpsSlice::SrsKbpsSlice(SrsWallClock* c) { clk = c; - io.in = NULL; - io.out = NULL; + io = NULL; last_bytes = io_bytes_base = starttime = bytes = delta_bytes = 0; } @@ -134,11 +133,11 @@ void SrsKbps::set_io(ISrsProtocolStatistic* in, ISrsProtocolStatistic* out) is.starttime = clk->time_ms(); } // save the old in bytes. - if (is.io.in) { - is.bytes += is.io.in->get_recv_bytes() - is.io_bytes_base; + if (is.io) { + is.bytes += is.io->get_recv_bytes() - is.io_bytes_base; } // use new io. - is.io.in = in; + is.io = in; is.last_bytes = is.io_bytes_base = 0; if (in) { is.last_bytes = is.io_bytes_base = in->get_recv_bytes(); @@ -152,11 +151,11 @@ void SrsKbps::set_io(ISrsProtocolStatistic* in, ISrsProtocolStatistic* out) os.starttime = clk->time_ms(); } // save the old in bytes. - if (os.io.out) { - os.bytes += os.io.out->get_send_bytes() - os.io_bytes_base; + if (os.io) { + os.bytes += os.io->get_send_bytes() - os.io_bytes_base; } // use new io. - os.io.out = out; + os.io = out; os.last_bytes = os.io_bytes_base = 0; if (out) { os.last_bytes = os.io_bytes_base = out->get_send_bytes(); @@ -217,12 +216,12 @@ void SrsKbps::add_delta(int64_t in, int64_t out) void SrsKbps::sample() { // update the total bytes - if (os.io.out) { - os.last_bytes = os.io.out->get_send_bytes(); + if (os.io) { + os.last_bytes = os.io->get_send_bytes(); } - if (is.io.in) { - is.last_bytes = is.io.in->get_recv_bytes(); + if (is.io) { + is.last_bytes = is.io->get_recv_bytes(); } // resample @@ -240,8 +239,8 @@ int64_t SrsKbps::get_send_bytes() int64_t bytes = os.bytes; // When exists active session, use it to get the last bytes. - if (os.io.out) { - bytes += os.io.out->get_send_bytes() - os.io_bytes_base; + if (os.io) { + bytes += os.io->get_send_bytes() - os.io_bytes_base; return bytes; } @@ -262,8 +261,8 @@ int64_t SrsKbps::get_recv_bytes() int64_t bytes = is.bytes; // When exists active session, use it to get the last bytes. - if (is.io.in) { - bytes += is.io.in->get_recv_bytes() - is.io_bytes_base; + if (is.io) { + bytes += is.io->get_recv_bytes() - is.io_bytes_base; return bytes; } diff --git a/trunk/src/protocol/srs_protocol_kbps.hpp b/trunk/src/protocol/srs_protocol_kbps.hpp index 3c663756e..3e141a176 100644 --- a/trunk/src/protocol/srs_protocol_kbps.hpp +++ b/trunk/src/protocol/srs_protocol_kbps.hpp @@ -65,15 +65,11 @@ public: class SrsKbpsSlice { private: - union slice_io { - ISrsProtocolStatistic* in; - ISrsProtocolStatistic* out; - }; SrsWallClock* clk; public: // the slice io used for SrsKbps to invoke, // the SrsKbpsSlice itself never use it. - slice_io io; + ISrsProtocolStatistic* io; // session startup bytes // @remark, use total_bytes() to get the total bytes of slice. int64_t bytes;