// // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "Types.hpp" namespace armnn { namespace experimental { class IAsyncExecutionCallback; using IAsyncExecutionCallbackPtr = std::shared_ptr; class IAsyncExecutionCallback { public: virtual ~IAsyncExecutionCallback() {}; // Notify the AsyncExecutionCallback object of the armnn execution status virtual void Notify(armnn::Status status, InferenceTimingPair timeTaken) = 0; // Block the calling thread until the AsyncExecutionCallback object allows it to proceed virtual void Wait() const = 0; // Retrieve the ArmNN Status from the AsyncExecutionCallback that has been notified virtual armnn::Status GetStatus() const = 0; // Retrieve the start time before executing the inference virtual HighResolutionClock GetStartTime() const = 0; // Retrieve the time after executing the inference virtual HighResolutionClock GetEndTime() const = 0; }; } // experimental } // namespace armnn