rippled
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
ripple::perf::PerfLogImp Class Reference

Implementation class for PerfLog. More...

Inheritance diagram for ripple::perf::PerfLogImp:
Inheritance graph
[legend]
Collaboration diagram for ripple::perf::PerfLogImp:
Collaboration graph
[legend]

Classes

struct  Counters
 Track performance counters and currently executing tasks. More...
 

Public Types

using steady_clock = std::chrono::steady_clock
 
using system_clock = std::chrono::system_clock
 
using steady_time_point = std::chrono::time_point< steady_clock >
 
using system_time_point = std::chrono::time_point< system_clock >
 
using seconds = std::chrono::seconds
 
using milliseconds = std::chrono::milliseconds
 
using microseconds = std::chrono::microseconds
 

Public Member Functions

 PerfLogImp (Setup const &setup, Application &app, beast::Journal journal, std::function< void()> &&signalStop)
 
 ~PerfLogImp () override
 
void rpcStart (std::string const &method, std::uint64_t const requestId) override
 Log start of RPC call. More...
 
void rpcFinish (std::string const &method, std::uint64_t const requestId) override
 Log successful finish of RPC call. More...
 
void rpcError (std::string const &method, std::uint64_t const requestId) override
 Log errored RPC call. More...
 
void jobQueue (JobType const type) override
 Log queued job. More...
 
void jobStart (JobType const type, microseconds dur, steady_time_point startTime, int instance) override
 Log job executing. More...
 
void jobFinish (JobType const type, microseconds dur, int instance) override
 Log job finishing. More...
 
Json::Value countersJson () const override
 Render performance counters in Json. More...
 
Json::Value currentJson () const override
 Render currently executing jobs and RPC calls and durations in Json. More...
 
void resizeJobs (int const resize) override
 Ensure enough room to store each currently executing job. More...
 
void rotate () override
 Rotate perf log file. More...
 
void start () override
 
void stop () override
 

Private Member Functions

void openLog ()
 
void run ()
 
void report ()
 
void rpcEnd (std::string const &method, std::uint64_t const requestId, bool finish)
 

Private Attributes

const Setup setup_
 
Applicationapp_
 
const beast::Journal j_
 
const std::function< void()> signalStop_
 
Counters counters_ {ripple::RPC::getHandlerNames(), JobTypes::instance()}
 
std::ofstream logFile_
 
std::thread thread_
 
std::mutex mutex_
 
std::condition_variable cond_
 
system_time_point lastLog_
 
const std::string hostname_ {boost::asio::ip::host_name()}
 
bool stop_ {false}
 
bool rotate_ {false}
 

Detailed Description

Implementation class for PerfLog.

Definition at line 69 of file PerfLogImp.h.

Member Typedef Documentation

◆ steady_clock

Definition at line 51 of file PerfLog.h.

◆ system_clock

Definition at line 52 of file PerfLog.h.

◆ steady_time_point

Definition at line 53 of file PerfLog.h.

◆ system_time_point

Definition at line 54 of file PerfLog.h.

◆ seconds

Definition at line 55 of file PerfLog.h.

◆ milliseconds

Definition at line 56 of file PerfLog.h.

◆ microseconds

Definition at line 57 of file PerfLog.h.

Constructor & Destructor Documentation

◆ PerfLogImp()

ripple::perf::PerfLogImp::PerfLogImp ( Setup const &  setup,
Application app,
beast::Journal  journal,
std::function< void()> &&  signalStop 
)

Definition at line 312 of file PerfLogImp.cpp.

◆ ~PerfLogImp()

ripple::perf::PerfLogImp::~PerfLogImp ( )
override

Definition at line 322 of file PerfLogImp.cpp.

Member Function Documentation

◆ openLog()

void ripple::perf::PerfLogImp::openLog ( )
private

Definition at line 222 of file PerfLogImp.cpp.

◆ run()

void ripple::perf::PerfLogImp::run ( )
private

Definition at line 256 of file PerfLogImp.cpp.

◆ report()

void ripple::perf::PerfLogImp::report ( )
private

Definition at line 281 of file PerfLogImp.cpp.

◆ rpcEnd()

void ripple::perf::PerfLogImp::rpcEnd ( std::string const &  method,
std::uint64_t const  requestId,
bool  finish 
)
private

Definition at line 347 of file PerfLogImp.cpp.

◆ rpcStart()

void ripple::perf::PerfLogImp::rpcStart ( std::string const &  method,
std::uint64_t const  requestId 
)
overridevirtual

Log start of RPC call.

Parameters
methodRPC command
requestIdUnique identifier to track command

Implements ripple::perf::PerfLog.

Definition at line 328 of file PerfLogImp.cpp.

◆ rpcFinish()

void ripple::perf::PerfLogImp::rpcFinish ( std::string const &  method,
std::uint64_t const  requestId 
)
overridevirtual

Log successful finish of RPC call.

Parameters
methodRPC command
requestIdUnique identifier to track command

Implements ripple::perf::PerfLog.

Definition at line 164 of file PerfLogImp.h.

◆ rpcError()

void ripple::perf::PerfLogImp::rpcError ( std::string const &  method,
std::uint64_t const  requestId 
)
overridevirtual

Log errored RPC call.

Parameters
methodRPC command
requestIdUnique identifier to track command

Implements ripple::perf::PerfLog.

Definition at line 170 of file PerfLogImp.h.

◆ jobQueue()

void ripple::perf::PerfLogImp::jobQueue ( JobType const  type)
overridevirtual

Log queued job.

Parameters
typeJob type

Implements ripple::perf::PerfLog.

Definition at line 382 of file PerfLogImp.cpp.

◆ jobStart()

void ripple::perf::PerfLogImp::jobStart ( JobType const  type,
microseconds  dur,
steady_time_point  startTime,
int  instance 
)
overridevirtual

Log job executing.

Parameters
typeJob type
durDuration enqueued in microseconds
startTimeTime that execution began
instanceJobQueue worker thread instance

Implements ripple::perf::PerfLog.

Definition at line 395 of file PerfLogImp.cpp.

◆ jobFinish()

void ripple::perf::PerfLogImp::jobFinish ( JobType const  type,
microseconds  dur,
int  instance 
)
overridevirtual

Log job finishing.

Parameters
typeJob type
durDuration running in microseconds
instanceJobqueue worker thread instance

Implements ripple::perf::PerfLog.

Definition at line 418 of file PerfLogImp.cpp.

◆ countersJson()

Json::Value ripple::perf::PerfLogImp::countersJson ( ) const
overridevirtual

Render performance counters in Json.

Returns
Counters Json object

Implements ripple::perf::PerfLog.

Definition at line 187 of file PerfLogImp.h.

◆ currentJson()

Json::Value ripple::perf::PerfLogImp::currentJson ( ) const
overridevirtual

Render currently executing jobs and RPC calls and durations in Json.

Returns
Current executing jobs and RPC calls and durations

Implements ripple::perf::PerfLog.

Definition at line 193 of file PerfLogImp.h.

◆ resizeJobs()

void ripple::perf::PerfLogImp::resizeJobs ( int const  resize)
overridevirtual

Ensure enough room to store each currently executing job.

Parameters
resizeNumber of JobQueue worker threads

Implements ripple::perf::PerfLog.

Definition at line 437 of file PerfLogImp.cpp.

◆ rotate()

void ripple::perf::PerfLogImp::rotate ( )
overridevirtual

Rotate perf log file.

Implements ripple::perf::PerfLog.

Definition at line 445 of file PerfLogImp.cpp.

◆ start()

void ripple::perf::PerfLogImp::start ( )
overridevirtual

Reimplemented from ripple::perf::PerfLog.

Definition at line 456 of file PerfLogImp.cpp.

◆ stop()

void ripple::perf::PerfLogImp::stop ( )
overridevirtual

Reimplemented from ripple::perf::PerfLog.

Definition at line 463 of file PerfLogImp.cpp.

Member Data Documentation

◆ setup_

const Setup ripple::perf::PerfLogImp::setup_
private

Definition at line 125 of file PerfLogImp.h.

◆ app_

Application& ripple::perf::PerfLogImp::app_
private

Definition at line 126 of file PerfLogImp.h.

◆ j_

const beast::Journal ripple::perf::PerfLogImp::j_
private

Definition at line 127 of file PerfLogImp.h.

◆ signalStop_

const std::function<void()> ripple::perf::PerfLogImp::signalStop_
private

Definition at line 128 of file PerfLogImp.h.

◆ counters_

Counters ripple::perf::PerfLogImp::counters_ {ripple::RPC::getHandlerNames(), JobTypes::instance()}
private

Definition at line 129 of file PerfLogImp.h.

◆ logFile_

std::ofstream ripple::perf::PerfLogImp::logFile_
private

Definition at line 130 of file PerfLogImp.h.

◆ thread_

std::thread ripple::perf::PerfLogImp::thread_
private

Definition at line 131 of file PerfLogImp.h.

◆ mutex_

std::mutex ripple::perf::PerfLogImp::mutex_
private

Definition at line 132 of file PerfLogImp.h.

◆ cond_

std::condition_variable ripple::perf::PerfLogImp::cond_
private

Definition at line 133 of file PerfLogImp.h.

◆ lastLog_

system_time_point ripple::perf::PerfLogImp::lastLog_
private

Definition at line 134 of file PerfLogImp.h.

◆ hostname_

const std::string ripple::perf::PerfLogImp::hostname_ {boost::asio::ip::host_name()}
private

Definition at line 135 of file PerfLogImp.h.

◆ stop_

bool ripple::perf::PerfLogImp::stop_ {false}
private

Definition at line 136 of file PerfLogImp.h.

◆ rotate_

bool ripple::perf::PerfLogImp::rotate_ {false}
private

Definition at line 137 of file PerfLogImp.h.