// // Copyright © 2019 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "IProfilingConnection.hpp" #include "ProfilingUtils.hpp" #include #include #include #include #include #include namespace armnn { namespace profiling { class ProfilingConnectionDumpToFileDecorator : public IProfilingConnection { public: ProfilingConnectionDumpToFileDecorator(std::unique_ptr connection, const ProfilingOptions& options, bool ignoreFailures = false); ~ProfilingConnectionDumpToFileDecorator(); bool IsOpen() const override; void Close() override; bool WritePacket(const unsigned char* buffer, uint32_t length) override; arm::pipe::Packet ReadPacket(uint32_t timeout) override; private: bool OpenIncomingDumpFile(); bool OpenOutgoingDumpFile(); void DumpIncomingToFile(const arm::pipe::Packet& packet); bool DumpOutgoingToFile(const unsigned char* buffer, uint32_t length); void Fail(const std::string& errorMessage); std::unique_ptr m_Connection; ProfilingOptions m_Options; std::ofstream m_IncomingDumpFileStream; std::ofstream m_OutgoingDumpFileStream; bool m_IgnoreFileErrors; }; } // namespace profiling } // namespace armnn