1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
11 #include <ie_plugin_ptr.hpp>
12 #include "cpp_interfaces/interface/ie_iinfer_request_internal.hpp"
13 #include "cpp_interfaces/interface/ie_iexecutable_network_internal.hpp"
14 #include "cpp_interfaces/impl/ie_infer_request_internal.hpp"
15 #include "cpp_interfaces/impl/ie_infer_async_request_internal.hpp"
17 namespace InferenceEngine {
19 class InferencePluginInternal;
21 typedef std::shared_ptr<InferencePluginInternal> InferencePluginInternalPtr;
24 * @brief minimum API to be implemented by plugin, which is used in ExecutableNetworkBase forwarding mechanism
26 class ExecutableNetworkInternal : public IExecutableNetworkInternal {
28 typedef std::shared_ptr<ExecutableNetworkInternal> Ptr;
30 virtual void setNetworkInputs(const InferenceEngine::InputsDataMap networkInputs) {
31 _networkInputs = networkInputs;
34 virtual void setNetworkOutputs(const InferenceEngine::OutputsDataMap networkOutputs) {
35 _networkOutputs = networkOutputs;
38 ConstOutputsDataMap GetOutputsInfo() const override {
39 ConstOutputsDataMap outputMap;
40 for (const auto & output : _networkOutputs) {
41 outputMap[output.first] = output.second;
46 ConstInputsDataMap GetInputsInfo() const override {
47 ConstInputsDataMap inputMap;
48 for (const auto & input : _networkInputs) {
49 inputMap[input.first] = input.second;
54 void Export(const std::string &modelFileName) override {
55 THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str;
58 void GetMappedTopology(std::map<std::string, std::vector<PrimitiveInfo::Ptr>> &deployedTopology) override {
59 THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str;
62 void GetExecGraphInfo(InferenceEngine::ICNNNetwork::Ptr &graphPtr) override {
63 THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str;
66 void SetPointerToPluginInternal(InferencePluginInternalPtr plugin) {
70 std::vector<IMemoryStateInternal::Ptr> QueryState() override {
71 // meaning base plugin reports as no state available - plugin owners need to create proper override of this
77 InferenceEngine::InputsDataMap _networkInputs;
78 InferenceEngine::OutputsDataMap _networkOutputs;
80 InferencePluginInternalPtr _plugin;
83 } // namespace InferenceEngine