// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include #include #include #include #include #include namespace zen { struct TraceSessionInfo { Guid SessionGuid{}; Guid TraceGuid{}; uint16_t ControlPort = 0; uint8_t TransportVersion = 0; uint8_t ProtocolVersion = 0; std::string RemoteAddress; uint64_t BytesRecorded = 0; std::filesystem::path TraceFilePath; }; class TraceRecorder { public: TraceRecorder(); ~TraceRecorder(); void Initialize(uint16_t InPort, const std::filesystem::path& OutputDir); void Shutdown(); bool IsRunning() const; uint16_t GetPort() const; std::vector GetActiveSessions() const; private: struct Impl; std::unique_ptr m_Impl; }; } // namespace zen