//===-- MICmnBase.cpp -------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // Third party headers #include // In-house headers: #include "MICmnBase.h" #include "MICmnLog.h" #include "MICmnStreamStderr.h" //++ // Details: CMICmnBase constructor. // Type: Method. // Args: None. // Return: None. // Throws: None. //-- CMICmnBase::CMICmnBase() : m_strMILastErrorDescription(CMIUtilString()), m_bInitialized(false), m_pLog(&CMICmnLog::Instance()), m_clientUsageRefCnt(0) {} //++ // Details: CMICmnBase destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- CMICmnBase::~CMICmnBase() { m_pLog = nullptr; } //++ // Details: Retrieve whether *this object has an error description set. // Type: Method. // Args: None. // Return: bool - True = Yes already defined, false = empty description. // Throws: None. //-- bool CMICmnBase::HaveErrorDescription() const { return m_strMILastErrorDescription.empty(); } //++ // Details: Retrieve MI's last error condition. // Type: Method. // Args: None. // Return: CMIUtilString & - Text description. // Throws: None. //-- const CMIUtilString &CMICmnBase::GetErrorDescription() const { return m_strMILastErrorDescription; } //++ // Details: Set MI's error condition description. This may be accessed by // clients and // seen by users. Message is available to the client using the server // and sent // to the Logger. // Type: Method. // Args: vrTxt - (R) Text description. // Return: None. // Throws: None. //-- void CMICmnBase::SetErrorDescription(const CMIUtilString &vrTxt) const { m_strMILastErrorDescription = vrTxt; if (!vrTxt.empty()) { const CMIUtilString txt(CMIUtilString::Format("Error: %s", vrTxt.c_str())); CMICmnStreamStderr::Instance().Write(txt); } } //++ // Details: Set MI's error condition description. This may be accessed by // clients and // seen by users. Message is available to the client using the server // and sent // to the Logger. // Type: Method. // Args: vrTxt - (R) Text description. // Return: None. // Throws: None. //-- void CMICmnBase::SetErrorDescriptionNoLog(const CMIUtilString &vrTxt) const { m_strMILastErrorDescription = vrTxt; } //++ // Details: Clear MI's error condition description. // Type: Method. // Args: None. // Return: None. // Throws: None. //-- void CMICmnBase::ClrErrorDescription() const { m_strMILastErrorDescription.clear(); } //++ // Details: Set MI's error condition description. This may be accessed by // clients and // seen by users. Message is available to the client using the server // and sent // to the Logger. // Type: Method. // Args: vFormat - (R) Format string. // ... - (R) Variable number of CMIUtilString type objects. // Return: None. // Throws: None. //-- void CMICmnBase::SetErrorDescriptionn(const char *vFormat, ...) const { va_list args; va_start(args, vFormat); CMIUtilString strResult = CMIUtilString::FormatValist(vFormat, args); va_end(args); SetErrorDescription(strResult); }