ddb1fb6a0a47ac3641c4a699ec290f97231e2402
[platform/core/ml/nnfw.git] / runtime / onert / core / src / exec / ExecutionObservee.cc
1 /*
2  * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "ExecutionObservee.h"
18
19 namespace onert
20 {
21 namespace exec
22 {
23
24 void ExecutionObservee::add(std::unique_ptr<IExecutionObserver> observer)
25 {
26   _observers.emplace_back(std::move(observer));
27 }
28
29 void ExecutionObservee::notifyModelBegin(IExecutor *executor)
30 {
31   for (auto &o : _observers)
32   {
33     o->handleBegin(executor);
34   }
35 }
36
37 void ExecutionObservee::notifyModelEnd(IExecutor *executor)
38 {
39   for (auto &o : _observers)
40   {
41     o->handleEnd(executor);
42   }
43 }
44
45 void ExecutionObservee::notifyJobBegin(IExecutor *executor, const ir::OpSequence *op_seq,
46                                        const backend::Backend *backend)
47 {
48   for (auto &o : _observers)
49   {
50     o->handleBegin(executor, op_seq, backend);
51   }
52 }
53
54 void ExecutionObservee::notifyJobEnd(IExecutor *executor, const ir::OpSequence *op_seq,
55                                      const backend::Backend *backend)
56 {
57   for (auto &o : _observers)
58   {
59     o->handleEnd(executor, op_seq, backend);
60   }
61 }
62
63 } // namespace exec
64 } // namespace onert