KiCad PCB EDA Suite
Loading...
Searching...
No Matches
SYNC_REPORTER Class Reference

A thread-safe REPORTER wrapper that serializes forwarding to an underlying reporter. More...

#include <reporter.h>

Inheritance diagram for SYNC_REPORTER:
REPORTER SIM_CONSOLE_REPORTER

Public Types

enum  LOCATION { LOC_HEAD = 0 , LOC_BODY , LOC_TAIL }
 Location where the message is to be reported. More...
 

Public Member Functions

 SYNC_REPORTER (REPORTER &aReporter)
 
REPORTERReport (const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED) override
 Report a string with a given severity.
 
REPORTERReportTail (const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED) override
 Places the report at the end of the list, for objects that support report ordering.
 
REPORTERReportHead (const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED) override
 Places the report at the beginning of the list for objects that support ordering.
 
bool HasMessage () const override
 Returns true if any messages were reported.
 
bool HasMessageOfSeverity (int aSeverityMask) const override
 Returns true if the reporter has one or more messages matching the specified severity mask.
 
EDA_UNITS GetUnits () const override
 
void Clear () override
 
void Finalize () override
 
void SetNullReporter ()
 
virtual REPORTERReport (const KI_ERROR &aError)
 Report a structured KI_ERROR.
 
REPORTERReport (const char *aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)
 
REPORTERoperator<< (const wxString &aText)
 

Protected Attributes

REPORTERm_reporter
 
std::mutex m_mutex
 

Private Attributes

int m_reportedSeverityMask
 

Detailed Description

A thread-safe REPORTER wrapper that serializes forwarding to an underlying reporter.

Use it when several worker threads may report concurrently through one reporter that is not itself thread-safe. The wrapped reporter must outlive this object unless SetNullReporter has been called. This only guards against data races on the wrapped reporter's state; it does not marshal calls onto a UI thread, so the wrapped reporter must be safe to touch from a background thread (or use CallAfter itself).

Definition at line 183 of file reporter.h.

Member Enumeration Documentation

◆ LOCATION

enum REPORTER::LOCATION
inherited

Location where the message is to be reported.

LOC_HEAD messages are printed before all others (typically intro messages) LOC_BODY messages are printed in the middle LOC_TAIL messages are printed after all others (typically status messages)

Enumerator
LOC_HEAD 
LOC_BODY 
LOC_TAIL 

Definition at line 88 of file reporter.h.

Constructor & Destructor Documentation

◆ SYNC_REPORTER()

SYNC_REPORTER::SYNC_REPORTER ( REPORTER & aReporter)
inline

Definition at line 186 of file reporter.h.

References m_reporter, and REPORTER::REPORTER().

Referenced by SIM_CONSOLE_REPORTER::SIM_CONSOLE_REPORTER().

Member Function Documentation

◆ Clear()

void SYNC_REPORTER::Clear ( )
overridevirtual

Reimplemented from REPORTER.

Definition at line 140 of file reporter.cpp.

References m_mutex, and m_reporter.

Referenced by BOOST_AUTO_TEST_CASE().

◆ Finalize()

void SYNC_REPORTER::Finalize ( )
overridevirtual

Reimplemented from REPORTER.

Definition at line 148 of file reporter.cpp.

References m_mutex, and m_reporter.

◆ GetUnits()

EDA_UNITS SYNC_REPORTER::GetUnits ( ) const
overridevirtual

Reimplemented from REPORTER.

Definition at line 180 of file reporter.cpp.

References m_mutex, and m_reporter.

◆ HasMessage()

bool SYNC_REPORTER::HasMessage ( ) const
overridevirtual

Returns true if any messages were reported.

Reimplemented from REPORTER.

Definition at line 164 of file reporter.cpp.

References m_mutex, and m_reporter.

Referenced by BOOST_AUTO_TEST_CASE().

◆ HasMessageOfSeverity()

bool SYNC_REPORTER::HasMessageOfSeverity ( int aSeverityMask) const
overridevirtual

Returns true if the reporter has one or more messages matching the specified severity mask.

Reimplemented from REPORTER.

Definition at line 172 of file reporter.cpp.

References m_mutex, and m_reporter.

Referenced by BOOST_AUTO_TEST_CASE().

◆ operator<<()

REPORTER & REPORTER::operator<< ( const wxString & aText)
inlineinherited

Definition at line 138 of file reporter.h.

References Report(), and REPORTER().

◆ Report() [1/3]

REPORTER & REPORTER::Report ( const char * aText,
SEVERITY aSeverity = RPT_SEVERITY_UNDEFINED )
inherited

Definition at line 79 of file reporter.cpp.

References From_UTF8(), Report(), and REPORTER().

◆ Report() [2/3]

REPORTER & REPORTER::Report ( const KI_ERROR & aError)
virtualinherited

Report a structured KI_ERROR.

The default implementation flattens the error onto Report(const wxString&, SEVERITY). Reporters that want to render the title / description / debug hierarchy separately override this.

Reimplemented in STATUSBAR_WARNING_REPORTER, and WX_HTML_REPORT_BOX.

Definition at line 86 of file reporter.cpp.

References KI_ERROR::AsString(), KI_ERROR::GetSeverity(), Report(), and REPORTER().

◆ Report() [3/3]

REPORTER & SYNC_REPORTER::Report ( const wxString & aText,
SEVERITY aSeverity = RPT_SEVERITY_UNDEFINED )
overridevirtual

Report a string with a given severity.

Parameters
aTextis the string to report.
aSeverityis an indicator ( RPT_UNDEFINED, RPT_INFO, RPT_WARNING, RPT_ERROR, RPT_ACTION ) used to filter and format messages

Reimplemented from REPORTER.

Definition at line 113 of file reporter.cpp.

References m_mutex, m_reporter, and REPORTER::REPORTER().

Referenced by BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().

◆ ReportHead()

REPORTER & SYNC_REPORTER::ReportHead ( const wxString & aText,
SEVERITY aSeverity = RPT_SEVERITY_UNDEFINED )
overridevirtual

Places the report at the beginning of the list for objects that support ordering.

Reimplemented from REPORTER.

Definition at line 131 of file reporter.cpp.

References m_mutex, m_reporter, and REPORTER::REPORTER().

Referenced by BOOST_AUTO_TEST_CASE().

◆ ReportTail()

REPORTER & SYNC_REPORTER::ReportTail ( const wxString & aText,
SEVERITY aSeverity = RPT_SEVERITY_UNDEFINED )
overridevirtual

Places the report at the end of the list, for objects that support report ordering.

Reimplemented from REPORTER.

Definition at line 122 of file reporter.cpp.

References m_mutex, m_reporter, and REPORTER::REPORTER().

Referenced by BOOST_AUTO_TEST_CASE().

◆ SetNullReporter()

void SYNC_REPORTER::SetNullReporter ( )

Definition at line 156 of file reporter.cpp.

References NULL_REPORTER::GetInstance(), m_mutex, and m_reporter.

Member Data Documentation

◆ m_mutex

std::mutex SYNC_REPORTER::m_mutex
mutableprotected

◆ m_reportedSeverityMask

int REPORTER::m_reportedSeverityMask
privateinherited

Definition at line 170 of file reporter.h.

Referenced by Clear(), HasMessage(), HasMessageOfSeverity(), Report(), and REPORTER().

◆ m_reporter

REPORTER* SYNC_REPORTER::m_reporter
protected

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