hc
2023-02-14 9c26bd2fb3d1b04cfe748cd7a8d8883feff5250f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// This file is part of OpenCV project.
// It is subject to the license terms in the LICENSE file found in the top-level directory
// of this distribution and at http://opencv.org/license.html.
//
// Copyright (C) 2019 Intel Corporation
 
#ifndef OPENCV_GAPI_GASYNC_CONTEXT_HPP
#define OPENCV_GAPI_GASYNC_CONTEXT_HPP
 
#if !defined(GAPI_STANDALONE)
#  include <opencv2/core/cvdef.h>
#else   // Without OpenCV
#  include <opencv2/gapi/own/cvdefs.hpp>
#endif // !defined(GAPI_STANDALONE)
 
#include <opencv2/gapi/own/exports.hpp>
 
namespace cv {
namespace gapi{
namespace wip {
 
/**
 * @brief A class to group async requests to cancel them in a single shot.
 *
 * GAsyncContext is passed as an argument to async() and async_apply() functions
 */
 
class GAPI_EXPORTS GAsyncContext{
    std::atomic<bool> cancelation_requested = {false};
public:
    /**
     * @brief Start cancellation process for an associated request.
     *
     * User still has to wait for each individual request (either via callback or according std::future object) to make sure it actually canceled.
     *
     * @return true if it was a first request to cancel the context
     */
    bool cancel();
 
    /**
    * @brief Returns true if cancellation was requested for this context.
    *
    * @return true if cancellation was requested for this context
    */
    bool isCanceled() const;
};
 
class GAPI_EXPORTS GAsyncCanceled : public std::exception {
public:
    virtual const char* what() const noexcept CV_OVERRIDE;
};
} // namespace wip
} // namespace gapi
} // namespace cv
 
#endif //OPENCV_GAPI_GASYNC_CONTEXT_HPP