CVB++ 15.0
Loading...
Searching...
No Matches
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
32 class SingleStreamHandler : public MultiStreamHandler
33 {
34
35 public:
37
49
50 protected:
52
61 virtual void HandleAsyncStream(const Driver::StreamPtr &stream);
62
64
73 virtual void HandleAsyncWaitResult(const Driver::StreamImagePtr &streamImage, WaitStatus waitStatus);
74
76
82 virtual void Setup(const Driver::StreamPtr &stream);
83
85
91 virtual void TearDown(const Driver::StreamPtr &stream) noexcept;
92
94
100 explicit SingleStreamHandler(const Driver::StreamPtr &stream);
101
103
107 StreamPtr Stream() const noexcept
108 {
109 return StreamVector().front();
110 }
111
112 private:
113 void HandleAsyncStream(const std::vector<Driver::StreamPtr> &streamVector) override;
114
116 const std::vector<Driver::WaitResult<typename Internal::DeliverableTraits<Driver::Stream>::type>>
117 &waitResultVector) override;
118
119 void Setup(const std::vector<Driver::StreamPtr> streamVector) override;
120
121 void TearDown(const std::vector<Driver::StreamPtr> streamVector) noexcept override;
122 };
123
124 } // namespace Async
125
126 using Async::SingleStreamHandler;
127
128 CVB_END_INLINE_NS
129
130} // 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:107
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:45
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:84
std::shared_ptr< Stream > StreamPtr
Convenience shared pointer for Stream.
Definition driver.hpp:96
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:393