CVB++ 15.0
decl_single_stream_handler.hpp
1#pragma once
2
3#include <vector>
4#include <atomic>
5#include <thread>
6#include <cassert>
7
8#include "../../global.hpp"
9#include "../../driver/driver.hpp"
10
11#include "decl_multi_stream_handler.hpp"
12
13namespace Cvb
14{
15
16 CVB_BEGIN_INLINE_NS
17
18 namespace Async
19 {
20
22
36 class SingleStreamHandler : public MultiStreamHandler
37 {
38
39 public:
41
53
54 protected:
56
65 virtual void HandleAsyncStream(const Driver::StreamPtr &stream);
66
68
77 virtual void HandleAsyncWaitResult(const Driver::StreamImagePtr &streamImage, WaitStatus waitStatus);
78
80
86 virtual void Setup(const Driver::StreamPtr &stream);
87
89
95 virtual void TearDown(const Driver::StreamPtr &stream) noexcept;
96
98
104 explicit SingleStreamHandler(const Driver::StreamPtr &stream);
105
107
111 StreamPtr Stream() const noexcept
112 {
113 return StreamVector().front();
114 }
115
116 private:
117 void HandleAsyncStream(const std::vector<Driver::StreamPtr> &streamVector) override;
118
120 const std::vector<Driver::WaitResult<typename Internal::DeliverableTraits<Driver::Stream>::type>>
121 &waitResultVector) override;
122
123 void Setup(const std::vector<Driver::StreamPtr> streamVector) override;
124
125 void TearDown(const std::vector<Driver::StreamPtr> streamVector) noexcept override;
126 };
127
128 } // namespace Async
129
130 using Async::SingleStreamHandler;
131
132 CVB_END_INLINE_NS
133
134} // namespace Cvb
virtual void HandleAsyncWaitResult(const Driver::StreamImagePtr &streamImage, WaitStatus waitStatus)
Asynchronously called for an acquired images.
Definition detail_single_stream_handler.hpp:32
StreamPtr Stream() const noexcept
Get the stream associated with this handler.
Definition decl_single_stream_handler.hpp:111
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
static std::unique_ptr< SingleStreamHandler > Create(const Driver::StreamPtr &stream)
Create a stream handler object.
Definition decl_single_stream_handler.hpp:49
std::vector< StreamPtrType > StreamVector() const noexcept
Definition decl_stream_handler_base.hpp:351
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