rippled
Loading...
Searching...
No Matches
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...

#include <PerfLogImp.h>

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.
 
void rpcFinish (std::string const &method, std::uint64_t const requestId) override
 Log successful finish of RPC call.
 
void rpcError (std::string const &method, std::uint64_t const requestId) override
 Log errored RPC call.
 
void jobQueue (JobType const type) override
 Log queued job.
 
void jobStart (JobType const type, microseconds dur, steady_time_point startTime, int instance) override
 Log job executing.
 
void jobFinish (JobType const type, microseconds dur, int instance) override
 Log job finishing.
 
Json::Value countersJson () const override
 Render performance counters in Json.
 
Json::Value currentJson () const override
 Render currently executing jobs and RPC calls and durations in Json.
 
void resizeJobs (int const resize) override
 Ensure enough room to store each currently executing job.
 
void rotate () override
 Rotate perf log file.
 
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

Setup const setup_
 
Applicationapp_
 
beast::Journal const j_
 
std::function< void()> const 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_
 
std::string const hostname_ {boost::asio::ip::host_name()}
 
bool stop_ {false}
 
bool rotate_ {false}
 

Detailed Description

Implementation class for PerfLog.

Definition at line 48 of file PerfLogImp.h.

Member Typedef Documentation

◆ steady_clock

Definition at line 35 of file PerfLog.h.

◆ system_clock

Definition at line 36 of file PerfLog.h.

◆ steady_time_point

Definition at line 37 of file PerfLog.h.

◆ system_time_point

Definition at line 38 of file PerfLog.h.

◆ seconds

Definition at line 39 of file PerfLog.h.

◆ milliseconds

Definition at line 40 of file PerfLog.h.

◆ microseconds

Definition at line 41 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 296 of file PerfLogImp.cpp.

◆ ~PerfLogImp()

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

Definition at line 306 of file PerfLogImp.cpp.

Member Function Documentation

◆ openLog()

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

Definition at line 209 of file PerfLogImp.cpp.

◆ run()

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

Definition at line 243 of file PerfLogImp.cpp.

◆ report()

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

Definition at line 268 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 333 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 312 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 141 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 147 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 373 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 389 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 416 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 164 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 170 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 439 of file PerfLogImp.cpp.

◆ rotate()

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

Rotate perf log file.

Implements ripple::perf::PerfLog.

Definition at line 447 of file PerfLogImp.cpp.

◆ start()

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

Reimplemented from ripple::perf::PerfLog.

Definition at line 458 of file PerfLogImp.cpp.

◆ stop()

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

Reimplemented from ripple::perf::PerfLog.

Definition at line 465 of file PerfLogImp.cpp.

Member Data Documentation

◆ setup_

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

Definition at line 102 of file PerfLogImp.h.

◆ app_

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

Definition at line 103 of file PerfLogImp.h.

◆ j_

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

Definition at line 104 of file PerfLogImp.h.

◆ signalStop_

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

Definition at line 105 of file PerfLogImp.h.

◆ counters_

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

Definition at line 106 of file PerfLogImp.h.

◆ logFile_

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

Definition at line 107 of file PerfLogImp.h.

◆ thread_

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

Definition at line 108 of file PerfLogImp.h.

◆ mutex_

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

Definition at line 109 of file PerfLogImp.h.

◆ cond_

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

Definition at line 110 of file PerfLogImp.h.

◆ lastLog_

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

Definition at line 111 of file PerfLogImp.h.

◆ hostname_

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

Definition at line 112 of file PerfLogImp.h.

◆ stop_

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

Definition at line 113 of file PerfLogImp.h.

◆ rotate_

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

Definition at line 114 of file PerfLogImp.h.