// Copyright Epic Games, Inc. All Rights Reserved. #if ZEN_WITH_TRACE # include # include # define TRACE_IMPLEMENT 1 # include void TraceInit() { static std::atomic_bool gInited = false; bool Expected = false; if (!gInited.compare_exchange_strong(Expected, true)) { return; } trace::FInitializeDesc Desc = { .bUseImportantCache = true, }; trace::Initialize(Desc); trace::ThreadRegister("main", /* system id */ 0, /* sort id */ 0); trace::DescribeSession("zenserver", # if ZEN_BUILD_DEBUG trace::Build::Debug, # else trace::Build::Development, # endif "", ZEN_CFG_VERSION_BUILD_STRING); } void TraceShutdown() { (void)TraceStop(); trace::Shutdown(); } bool IsTracing() { return trace::IsTracing(); } void TraceStart(const char* HostOrPath, TraceType Type) { TraceInit(); switch (Type) { case TraceType::Network: trace::SendTo(HostOrPath); break; case TraceType::File: trace::WriteTo(HostOrPath); break; case TraceType::None: break; } trace::ToggleChannel("cpu", true); } bool TraceStop() { trace::ToggleChannel("cpu", false); if (trace::Stop()) { return true; } return false; } #endif // ZEN_WITH_TRACE