1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
11 #include <ie_iinfer_request.hpp>
12 #include "cpp_interfaces/interface/ie_iexecutable_network_internal.hpp"
13 #include "cpp_interfaces/interface/ie_iinfer_async_request_internal.hpp"
14 #include "cpp_interfaces/base/ie_infer_async_request_base.hpp"
15 #include "cpp_interfaces/impl/ie_executable_network_internal.hpp"
16 #include "cpp_interfaces/impl/ie_infer_async_request_internal.hpp"
18 namespace InferenceEngine {
20 class ExecutableNetworkThreadSafeAsyncOnly
21 : public ExecutableNetworkInternal, public std::enable_shared_from_this<ExecutableNetworkThreadSafeAsyncOnly> {
23 typedef std::shared_ptr<ExecutableNetworkThreadSafeAsyncOnly> Ptr;
25 virtual AsyncInferRequestInternal::Ptr
26 CreateAsyncInferRequestImpl(InputsDataMap networkInputs, OutputsDataMap networkOutputs) = 0;
28 void CreateInferRequest(IInferRequest::Ptr &asyncRequest) override {
29 auto asyncRequestImpl = this->CreateAsyncInferRequestImpl(_networkInputs, _networkOutputs);
30 asyncRequestImpl->setPointerToExecutableNetworkInternal(shared_from_this());
31 asyncRequest.reset(new InferRequestBase<AsyncInferRequestInternal>(asyncRequestImpl),
32 [](IInferRequest *p) { p->Release(); });
33 asyncRequestImpl->SetPublicInterfacePtr(asyncRequest);
37 } // namespace InferenceEngine