scclib
Stable Cloud Computing C++ Library
Public Member Functions | List of all members
scc::util::WriteCounter Class Reference

Adds byte count to a write stream. More...

#include <rwcounter.h>

Inheritance diagram for scc::util::WriteCounter:
Inheritance graph
[legend]
Collaboration diagram for scc::util::WriteCounter:
Collaboration graph
[legend]

Public Member Functions

 WriteCounter ()
 Writes will return 0 until reset.
 
 WriteCounter (Writer &)
 Chain using a reference. More...
 
 WriteCounter (const std::shared_ptr< Writer > &)
 Chain using a shared pointer.
 
void write_reset (Writer &)
 Reset the chained writer.
 
virtual void write_reset (const std::shared_ptr< Writer > &)
 Reset the chained writer.
 
virtual std::shared_ptr< Writerwrite_shared () const
 
virtual size_t write (const void *, size_t)
 Write interface. More...
 
uint64_t write_count () const
 
void write_count (uint64_t v)
 
void write_count_reset ()
 
uint64_t write_calls () const
 
void write_calls (uint64_t v)
 
void write_calls_reset ()
 

Detailed Description

Adds byte count to a write stream.

Example from scclib/util/unittest/iohelper.cc

using std::chrono::milliseconds;
using std::chrono::duration_cast;
struct Slow : public Reader, public Writer
{
Slow() {}
virtual ~Slow() {}
size_t read(void*, size_t l)
{
std::this_thread::sleep_for(milliseconds(50));
return l;
}
size_t write(const void*, size_t l)
{
std::this_thread::sleep_for(milliseconds(100));
return l;
}
};
Slow base;
RwCounter c(base, base);
RwTimer t(c, c);
t.read(0, 50);
t.write(0, 100);
cout << "read timer=" << t.read_dur().count() << endl;
cout << "write timer=" << t.write_dur().count() << endl;
cout << "read count=" << c.read_count() << endl;
cout << "write count=" << c.write_count() << endl;
ASSERT_EQ(duration_cast<milliseconds>(t.read_dur()).count(), 50);
ASSERT_EQ(duration_cast<milliseconds>(t.write_dur()).count(), 100);
ASSERT_EQ(c.read_count(), 50);
ASSERT_EQ(c.write_count(), 100);
virtual size_t write(const void *, size_t)
Write interface.
Definition: iostream.cc:865
Examples
util/unittest/iohelper.cc.

Definition at line 96 of file rwcounter.h.

Constructor & Destructor Documentation

◆ WriteCounter()

WriteCounter::WriteCounter ( Writer w)

Chain using a reference.

Does not assume ownership.

Definition at line 855 of file iostream.cc.

Member Function Documentation

◆ write()

size_t WriteCounter::write ( const void *  ,
size_t   
)
virtual

Write interface.

Write a block of data to a maximum. Return number of bytes written.

Implements scc::util::Writer.

Definition at line 865 of file iostream.cc.


The documentation for this class was generated from the following files: