31 #ifndef _SCC_UTIL_RWTIMER_H
32 #define _SCC_UTIL_RWTIMER_H
63 std::shared_ptr<Reader> m_shared;
64 std::atomic_int_least64_t m_ticks;
65 std::atomic_uint_least64_t m_calls;
73 ReadTimer(
const std::shared_ptr<Reader>&);
80 virtual void read_reset(
const std::shared_ptr<Reader>&);
81 virtual std::shared_ptr<Reader> read_shared()
const {
return m_shared; }
84 virtual size_t read(
void*,
size_t);
86 std::chrono::nanoseconds read_dur()
const {
return std::chrono::nanoseconds(m_ticks); }
87 void read_dur(std::chrono::nanoseconds v) { m_ticks = v.count(); }
88 void read_dur_reset() { m_ticks = 0; }
90 uint64_t read_calls()
const {
return m_calls; }
91 void read_calls_reset() { m_calls = 0; }
102 std::shared_ptr<Writer> m_shared;
103 std::atomic_int_least64_t m_ticks;
104 std::atomic_uint_least64_t m_calls;
119 virtual void write_reset(
const std::shared_ptr<Writer>&);
120 virtual std::shared_ptr<Writer> write_shared()
const {
return m_shared; }
123 virtual size_t write(
const void*,
size_t);
125 std::chrono::nanoseconds write_dur()
const {
return std::chrono::nanoseconds(m_ticks); }
126 void write_dur(std::chrono::nanoseconds v) { m_ticks = v.count(); }
127 void write_dur_reset() { m_ticks = 0; }
129 uint64_t write_calls()
const {
return m_calls; }
130 void write_calls_reset() { m_calls = 0; }
146 RwTimer(
const std::shared_ptr<Reader>&,
const std::shared_ptr<Writer>&);
Adds timer to a read stream.
ReadTimer()
Reads return 0 until reset.
virtual size_t read(void *, size_t)
Read and update time over underlying read.
void read_reset(Reader &)
Reset the chained reader.
Adds byte count to a read/write stream.
RwTimer()
Reads and writes return 0 until reset.
Adds timer to a write stream.
void write_reset(Writer &)
Reset the chained writer.
virtual size_t write(const void *, size_t)
Write and update time over underlying write.
WriteTimer()
Writes return 0 until reset.
Input/output stream base reader/writer interface classes.
Pipeline reader to carry out processing in a pipeline (chain of readers).
Pipeline writer to carry out processing in a pipeline (chain of writers).
Interface class for objects which can be read.
Interface class for objects which can be written.