blob: 6fca42d2ed1b2f2b435fc6321673efbbb529b164 [file] [log] [blame]
David Beck1b61be52018-11-08 09:19:14 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
Sadik Armagan045f6be2020-09-10 13:37:32 +01007#include <armnn/BackendOptions.hpp>
David Beck1b61be52018-11-08 09:19:14 +00008#include <armnn/IRuntime.hpp>
9#include <memory>
10
11namespace armnn
12{
13
14class IBackendContext
15{
16protected:
17 IBackendContext(const IRuntime::CreationOptions&) {}
18
19public:
Ryan OShea2bbfaa72020-02-12 16:15:27 +000020 /// Before and after Load network events
David Beck1b61be52018-11-08 09:19:14 +000021 virtual bool BeforeLoadNetwork(NetworkId networkId) = 0;
22 virtual bool AfterLoadNetwork(NetworkId networkId) = 0;
23
Ryan OShea2bbfaa72020-02-12 16:15:27 +000024 /// Before and after Unload network events
David Beck1b61be52018-11-08 09:19:14 +000025 virtual bool BeforeUnloadNetwork(NetworkId networkId) = 0;
26 virtual bool AfterUnloadNetwork(NetworkId networkId) = 0;
27
Narumol Prangnawaratec5463d2022-02-04 17:50:20 +000028 // After Enqueue workload events
29 virtual bool AfterEnqueueWorkload(NetworkId networkId) = 0;
30
David Beck1b61be52018-11-08 09:19:14 +000031 virtual ~IBackendContext() {}
32};
33
34using IBackendContextUniquePtr = std::unique_ptr<IBackendContext>;
35
Sadik Armagan045f6be2020-09-10 13:37:32 +010036class IBackendModelContext
37{
38public:
39 virtual ~IBackendModelContext() {}
40};
41
David Beck1b61be52018-11-08 09:19:14 +000042} // namespace armnn