Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / src / inference_engine / cpp_interfaces / ie_executor_manager.cpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #include <memory>
6 #include <string>
7 #include "cpp_interfaces/ie_executor_manager.hpp"
8 #include "cpp_interfaces/ie_task_executor.hpp"
9
10 namespace InferenceEngine {
11
12 ITaskExecutor::Ptr ExecutorManagerImpl::getExecutor(std::string id) {
13     auto foundEntry = executors.find(id);
14     if (foundEntry == executors.end()) {
15         auto newExec = std::make_shared<TaskExecutor>(id);
16         executors[id] = newExec;
17         return newExec;
18     }
19     return foundEntry->second;
20 }
21
22 // for tests purposes
23 size_t ExecutorManagerImpl::getExecutorsNumber() {
24     return executors.size();
25 }
26
27 void ExecutorManagerImpl::clear() {
28     executors.clear();
29 }
30
31 ExecutorManager *ExecutorManager::_instance = nullptr;
32
33 ITaskExecutor::Ptr ExecutorManager::getExecutor(std::string id) {
34     return _impl.getExecutor(id);
35 }
36
37 size_t ExecutorManager::getExecutorsNumber() {
38     return _impl.getExecutorsNumber();
39 }
40
41 void ExecutorManager::clear() {
42     _impl.clear();
43 }
44
45 }  // namespace InferenceEngine