SRS-control
0.1.4
Loading...
Searching...
No Matches
DataConverterBase.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <boost/asio/experimental/coro.hpp>
4
#include <fmt/ranges.h>
5
6
#include <
srs/utils/CommonFunctions.hpp
>
7
#include <
srs/writers/DataWriter.hpp
>
8
9
namespace
srs::process
10
{
11
template
<
typename
Input,
typename
Output>
12
class
DataConverterBase
13
{
14
public
:
15
using
InputType
= Input;
16
using
OutputType
= Output;
17
using
InputFuture
= boost::shared_future<std::optional<InputType>>;
18
using
OutputFuture
= boost::shared_future<std::optional<OutputType>>;
19
using
CoroType
= asio::experimental::coro<
OutputType
(std::optional<InputType>)>;
20
21
using
enum
DataConvertOptions
;
22
23
explicit
DataConverterBase
(
auto
coro)
24
:
coro_
(std::move(coro))
25
{
26
common::coro_sync_start
(
coro_
, std::optional<InputType>{}, asio::use_awaitable);
27
}
28
29
auto
create_future
(
this
auto
&& self,
InputFuture
& pre_fut,
writer::Manager
& writers) ->
OutputFuture
30
{
31
constexpr
auto
converter_options = std::remove_cvref_t<
decltype
(self)>::ConverterOption;
32
auto
is_needed = std::ranges::any_of(
33
converter_options, [&writers](
auto
option) {
return
writers.is_convert_required(option); });
34
return
is_needed ?
common::create_coro_future
(self.coro_, pre_fut) :
OutputFuture
{};
35
}
36
37
private
:
38
CoroType
coro_
;
39
};
40
}
// namespace srs
CommonFunctions.hpp
DataWriter.hpp
srs::process::DataConverterBase::InputType
Input InputType
Definition
DataConverterBase.hpp:15
srs::process::DataConverterBase::CoroType
asio::experimental::coro< OutputType(std::optional< InputType >)> CoroType
Definition
DataConverterBase.hpp:19
srs::process::DataConverterBase::OutputType
Output OutputType
Definition
DataConverterBase.hpp:16
srs::process::DataConverterBase::DataConverterBase
DataConverterBase(auto coro)
Definition
DataConverterBase.hpp:23
srs::process::DataConverterBase::InputFuture
boost::shared_future< std::optional< InputType > > InputFuture
Definition
DataConverterBase.hpp:17
srs::process::DataConverterBase::coro_
CoroType coro_
Definition
DataConverterBase.hpp:38
srs::process::DataConverterBase::create_future
auto create_future(this auto &&self, InputFuture &pre_fut, writer::Manager &writers) -> OutputFuture
Definition
DataConverterBase.hpp:29
srs::process::DataConverterBase::OutputFuture
boost::shared_future< std::optional< OutputType > > OutputFuture
Definition
DataConverterBase.hpp:18
srs::writer::Manager
Definition
DataWriter.hpp:23
srs::common::create_coro_future
auto create_coro_future(auto &coro, auto &&pre_fut)
Definition
CommonFunctions.hpp:68
srs::common::coro_sync_start
void coro_sync_start(auto &coro, auto &&... args)
Definition
CommonFunctions.hpp:95
srs::process
Definition
DataConverterBase.hpp:10
srs::process::DataConvertOptions
DataConvertOptions
Definition
DataConvertOptions.hpp:12
backend
srs
converters
DataConverterBase.hpp
Impressum
Datenschutzerklärung
Generated by
1.13.2