#include <assert.h>
#include "MICmnMIOutOfBandRecord.h"
#include "MICmnResources.h"
static const char *
MapOutOfBandToText(CMICmnMIOutOfBandRecord::OutOfBand_e veType) {
switch (veType) {
case CMICmnMIOutOfBandRecord::eOutOfBand_Running:
return "running";
case CMICmnMIOutOfBandRecord::eOutOfBand_Stopped:
return "stopped";
case CMICmnMIOutOfBandRecord::eOutOfBand_BreakPointCreated:
return "breakpoint-created";
case CMICmnMIOutOfBandRecord::eOutOfBand_BreakPointModified:
return "breakpoint-modified";
case CMICmnMIOutOfBandRecord::eOutOfBand_Thread:
return "";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupAdded:
return "thread-group-added";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupExited:
return "thread-group-exited";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupRemoved:
return "thread-group-removed";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupStarted:
return "thread-group-started";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadCreated:
return "thread-created";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadExited:
return "thread-exited";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadSelected:
return "thread-selected";
case CMICmnMIOutOfBandRecord::eOutOfBand_TargetModuleLoaded:
return "library-loaded";
case CMICmnMIOutOfBandRecord::eOutOfBand_TargetModuleUnloaded:
return "library-unloaded";
case CMICmnMIOutOfBandRecord::eOutOfBand_TargetStreamOutput:
return "";
case CMICmnMIOutOfBandRecord::eOutOfBand_ConsoleStreamOutput:
return "";
case CMICmnMIOutOfBandRecord::eOutOfBand_LogStreamOutput:
return "";
}
assert(false && "unknown CMICmnMIOutofBandRecord::OutOfBand_e");
return nullptr;
}
static const char *
MapOutOfBandToToken(CMICmnMIOutOfBandRecord::OutOfBand_e veType) {
switch (veType) {
case CMICmnMIOutOfBandRecord::eOutOfBand_Running:
return "*";
case CMICmnMIOutOfBandRecord::eOutOfBand_Stopped:
return "*";
case CMICmnMIOutOfBandRecord::eOutOfBand_BreakPointCreated:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_BreakPointModified:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_Thread:
return "@";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupAdded:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupExited:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupRemoved:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupStarted:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadCreated:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadExited:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadSelected:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_TargetModuleLoaded:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_TargetModuleUnloaded:
return "=";
case CMICmnMIOutOfBandRecord::eOutOfBand_TargetStreamOutput:
return "@";
case CMICmnMIOutOfBandRecord::eOutOfBand_ConsoleStreamOutput:
return "~";
case CMICmnMIOutOfBandRecord::eOutOfBand_LogStreamOutput:
return "&";
}
assert(false && "unknown CMICmnMIOutofBandRecord::OutOfBand_e");
return nullptr;
}
static CMIUtilString
BuildAsyncRecord(CMICmnMIOutOfBandRecord::OutOfBand_e veType) {
auto Token = MapOutOfBandToToken(veType);
auto Text = MapOutOfBandToText(veType);
return CMIUtilString::Format("%s%s", CMIUtilString::WithNullAsEmpty(Token),
CMIUtilString::WithNullAsEmpty(Text));
}
CMICmnMIOutOfBandRecord::CMICmnMIOutOfBandRecord()
: m_strAsyncRecord(MIRSRC(IDS_CMD_ERR_EVENT_HANDLED_BUT_NO_ACTION)) {}
CMICmnMIOutOfBandRecord::CMICmnMIOutOfBandRecord(OutOfBand_e veType)
: m_strAsyncRecord(BuildAsyncRecord(veType)) {}
CMICmnMIOutOfBandRecord::CMICmnMIOutOfBandRecord(
OutOfBand_e veType, const CMICmnMIValueConst &vConst)
: m_strAsyncRecord(BuildAsyncRecord(veType)) {
m_strAsyncRecord += vConst.GetString();
}
CMICmnMIOutOfBandRecord::CMICmnMIOutOfBandRecord(
OutOfBand_e veType, const CMICmnMIValueResult &vResult)
: m_strAsyncRecord(BuildAsyncRecord(veType)) {
Add(vResult);
}
CMICmnMIOutOfBandRecord::~CMICmnMIOutOfBandRecord() {}
const CMIUtilString &CMICmnMIOutOfBandRecord::GetString() const {
return m_strAsyncRecord;
}
void CMICmnMIOutOfBandRecord::Add(const CMICmnMIValueResult &vResult) {
m_strAsyncRecord += ",";
m_strAsyncRecord += vResult.GetString();
}