CVB++ 15.0
cancellation_token.hpp
1#pragma once
2
3#include "global.hpp"
4
5namespace Cvb
6{
7
8 CVB_BEGIN_INLINE_NS
9
10 template <>
11 inline HandleGuard<CancellationToken>::HandleGuard(void *handle) noexcept
12 : HandleGuard<CancellationToken>(handle, [](void *handle) { CVB_CALL_CAPI(ReleaseObject(handle)); })
13 {
14 }
15
17
19 class CancellationToken
20 {
21 friend class CancellationTokenSource;
22 struct PrivateTag
23 {
24 };
25
26 public:
27 CancellationToken(HandleGuard<CancellationToken> &&guard, PrivateTag) noexcept
28 : handle_(std::move(guard))
29 {
30 }
31
33
39 void *Handle() const noexcept
40 {
41 return handle_.Handle();
42 }
43
45
49 bool IsCanceled() const noexcept
50 {
51 CExports::cvbbool_t status = false;
52 CVB_CALL_CAPI(CVCCancellationTokenIsCanceled(Handle(), status));
53 // suppress VC waring
54 return status != 0;
55 }
56
57 private:
58 HandleGuard<CancellationToken> handle_;
59 };
60
61 CVB_END_INLINE_NS
62
63} // namespace Cvb
bool IsCanceled() const noexcept
Check if token has been canceled.
Definition cancellation_token.hpp:49
void * Handle() const noexcept
Classic API image handle.
Definition cancellation_token.hpp:39
cvbbool_t ReleaseObject(OBJ &Object)
T move(T... args)
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17