CVB++ 15.0
detail_single_stream_handler.hpp
1#pragma once
2
3#include "../../global.hpp"
4
5#include "../_decl/decl_single_stream_handler.hpp"
6
7#include "../../driver/_decl/decl_stream.hpp"
8
9namespace Cvb
10{
11
12 CVB_BEGIN_INLINE_NS
13
14 namespace Async
15 {
16
18 {
19 try
20 {
21 auto waitResult = stream->Wait();
22 HandleAsyncWaitResult(waitResult.Image, waitResult.Status);
23 }
24 catch (const std::exception &error)
25 {
26 if (!IsActive())
27 return;
28 HandleError(error);
29 }
30 }
31
33
35 {
36 stream->Start();
37 }
38
39 inline void SingleStreamHandler::TearDown(const Driver::StreamPtr &stream) noexcept
40 {
41 stream->TryAbort();
42 }
43
45 : MultiStreamHandler(stream)
46 {
47 }
48
50 {
51 for (auto &stream : streamVector)
52 HandleAsyncStream(stream);
53 }
54
56 const std::vector<Driver::WaitResult<typename Internal::DeliverableTraits<Driver::Stream>::type>> &)
57 {
58 throw std::runtime_error("list of streams not supported in SingleStreamHandler");
59 }
60
62 {
63 for (auto &stream : streamVector)
64 Setup(stream);
65 }
66
67 inline void SingleStreamHandler::TearDown(const std::vector<Driver::StreamPtr> streamVector) noexcept
68 {
69 for (auto &stream : streamVector)
70 TearDown(stream);
71 }
72
73 } // namespace Async
74
75 CVB_END_INLINE_NS
76
77} // namespace Cvb
virtual void HandleAsyncWaitResult(const Driver::StreamImagePtr &streamImage, WaitStatus waitStatus)
Asynchronously called for an acquired images.
Definition detail_single_stream_handler.hpp:32
virtual void TearDown(const Driver::StreamPtr &stream) noexcept
Tear down the stream after acquisition.
Definition detail_single_stream_handler.hpp:39
virtual void HandleAsyncStream(const Driver::StreamPtr &stream)
Asynchronously called for the registered stream.
Definition detail_single_stream_handler.hpp:17
SingleStreamHandler(const Driver::StreamPtr &stream)
Creates a stream handler object.
Definition detail_single_stream_handler.hpp:44
virtual void Setup(const Driver::StreamPtr &stream)
Setup the stream for acquisition.
Definition detail_single_stream_handler.hpp:34
bool IsActive() const noexcept
Definition decl_stream_handler_base.hpp:205
virtual void HandleError(const std::exception &error) noexcept
Convenience classes for asynchronous image acquisition.
Definition decl_multi_stream_handler.hpp:11
std::shared_ptr< StreamImage > StreamImagePtr
Convenience shared pointer for StreamImage.
Definition driver.hpp:93
std::shared_ptr< Stream > StreamPtr
Convenience shared pointer for Stream.
Definition driver.hpp:105
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
WaitStatus
Status after waiting for an image to be returned.
Definition global.hpp:396
A combined result returned after waiting for a image.
Definition driver.hpp:391