Publishing R5 content (#72)
[platform/upstream/dldt.git] / inference-engine / src / hetero_plugin / hetero_async_infer_request.h
1 // Copyright (C) 2018 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 /**
6  * @brief a header file for IInferRequest interface
7  * @file ie_iinfer_request.hpp
8  */
9
10 #pragma once
11
12 #include <unordered_set>
13 #include <utility>
14 #include <string>
15 #include <map>
16 #include <memory>
17
18 #include "cpp_interfaces/impl/ie_infer_async_request_thread_safe_default.hpp"
19 #include "hetero_infer_request.h"
20
21 namespace HeteroPlugin {
22
23 class HeteroAsyncInferRequest : public InferenceEngine::AsyncInferRequestThreadSafeDefault {
24 public:
25     typedef std::shared_ptr<HeteroAsyncInferRequest> Ptr;
26
27     HeteroAsyncInferRequest(HeteroInferRequest::Ptr request,
28                             const InferenceEngine::ITaskExecutor::Ptr &taskExecutor,
29                             const InferenceEngine::TaskSynchronizer::Ptr &taskSynchronizer,
30                             const InferenceEngine::ITaskExecutor::Ptr &callbackExecutor);
31
32     void StartAsync() override;
33
34     InferenceEngine::StatusCode Wait(int64_t millis_timeout) override;
35
36     void SetCompletionCallback(InferenceEngine::IInferRequest::CompletionCallback callback) override;
37
38 private:
39     HeteroInferRequest::Ptr _heteroInferRequest;
40 };
41
42 }  // namespace HeteroPlugin
43