10#ifndef INCLUDED_COMPHELPER_TRACEEVENT_HXX
11#define INCLUDED_COMPHELPER_TRACEEVENT_HXX
21#include <osl/process.h>
22#include <osl/thread.h>
24#include <com/sun/star/uno/Sequence.h>
26#include <rtl/ustrbuf.hxx>
27#include <rtl/ustring.hxx>
38 oslProcessInfo aProcessInfo;
39 aProcessInfo.Size =
sizeof(oslProcessInfo);
40 if (osl_getProcessInfo(
nullptr, osl_Process_IDENTIFIER, &aProcessInfo)
41 == osl_Process_E_None)
42 return aProcessInfo.Ident;
47 static void (*s_pBufferFullCallback)();
52 static void addRecording(
const OUString& sObject);
57 osl_getSystemTime(&systemTime);
58 return static_cast<long long>(systemTime.Seconds) * 1000000 + systemTime.Nanosec / 1000;
66 OUStringBuffer sResult;
67 sResult.append(
",\"args\":{");
74 sResult.append(
i.first);
75 sResult.append(
"\":\"");
76 sResult.append(
i.second);
82 return sResult.makeStringAndClear();
89 : m_nPid(s_bRecording ? getPid() : 1)
90 , m_sArgs(
std::move(sArgs))
100 static void addInstantEvent(
const char* sName,
const std::map<OUString, OUString>& args
101 = std::map<OUString, OUString>());
103 static void startRecording();
104 static void stopRecording();
105 static void setBufferSizeAndCallback(std::size_t bufferSize,
void (*bufferFullCallback)());
107 static std::vector<OUString> getEventVectorAndClear();
109 static css::uno::Sequence<OUString> getRecordingAndClear();
123 NamedEvent(
const char* sName,
const std::map<OUString, OUString>& aArgs)
141 public std::enable_shared_from_this<AsyncEvent>
147 AsyncEvent(
const char* sName,
int nId,
const std::map<OUString, OUString>& args)
150 , m_bBeginRecorded(false)
155 long long nNow = getNow();
165 + OUString::number(m_nId) + m_sArgs
168 + OUString::number(nNow)
171 + OUString::number(m_nPid)
174 + OUString::number(osl_getThreadIdentifier(
nullptr)) +
"},");
175 m_bBeginRecorded =
true;
180 if (!m_bBeginRecorded)
183 m_bBeginRecorded =
false;
185 long long nNow = getNow();
194 + OUString::number(m_nId) + m_sArgs
197 + OUString::number(nNow)
200 + OUString::number(m_nPid)
203 + OUString::number(osl_getThreadIdentifier(
nullptr)) +
"},");
208 const std::map<OUString, OUString>& args = std::map<OUString, OUString>())
AsyncEvent(const char *sName, const std::map< OUString, OUString > &args=std::map< OUString, OUString >())
AsyncEvent(const char *sName, int nId, const std::map< OUString, OUString > &args)
NamedEvent(const char *sName, const std::map< OUString, OUString > &aArgs)
NamedEvent(const char *sName, const OUString &sArgs)
TraceEvent(OUString sArgs)
static std::size_t s_nBufferSize
static void addRecording(const OUString &sObject)
static std::atomic< bool > s_bRecording
static long long getNow()
TraceEvent(const std::map< OUString, OUString > &aArgs)
static OUString createArgsString(const std::map< OUString, OUString > &args)
#define COMPHELPER_DLLPUBLIC
constexpr OUStringLiteral first