Kaspersky Neuromorphic Platform  1.0.0
API Reference
Loading...
Searching...
No Matches
output_channel.h
Go to the documentation of this file.
1
21#pragma once
22
23#include <knp/core/core.h>
24#include <knp/core/impexp.h>
27
28#include <algorithm>
29#include <utility>
30#include <vector>
31
32#include "output_converter.h"
33
34
39{
43class KNP_DECLSPEC OutputChannel
44{
45public:
51 OutputChannel(const core::UID &channel_uid, core::MessageEndpoint &&endpoint)
52 : base_{channel_uid}, endpoint_(std::move(endpoint))
53 {
54 }
55
59 OutputChannel(OutputChannel &&) = default;
60
61public:
66 [[nodiscard]] const auto &get_uid() const { return base_.uid_; }
72 [[nodiscard]] auto &get_tags() { return base_.tags_; }
73
74public:
80 std::vector<core::messaging::SpikeMessage> update();
81
88 std::vector<core::messaging::SpikeMessage> read_some_from_buffer(core::Step starting_step, core::Step final_step);
89
90protected:
94 core::BaseData base_;
95
99 core::MessageEndpoint endpoint_;
100
104 std::vector<core::messaging::SpikeMessage> message_buffer_; // cppcheck-suppress unusedStructMember
105};
106
107
116template <typename ResultType>
117[[nodiscard]] ResultType output_channel_get(
118 OutputChannel &output_channel, OutputConverter<ResultType> converter, core::Step step_from, core::Step step_to)
119{
120 output_channel.update();
121 return converter(output_channel.read_some_from_buffer(step_from, step_to));
122}
123
124} // namespace knp::framework::io::output
The OutputChannel class is a definition of an output channel.
std::vector< core::messaging::SpikeMessage > read_some_from_buffer(core::Step starting_step, core::Step final_step)
Read a specified interval of messages from sorted internal message buffer.
OutputChannel(OutputChannel &&)=default
Move constructor.
auto & get_tags()
Get tags used by the backend.
OutputChannel(const core::UID &channel_uid, core::MessageEndpoint &&endpoint)
Base output channel constructor.
std::vector< core::messaging::SpikeMessage > update()
Unload spike messages from the endpoint into the message buffer.
const auto & get_uid() const
Get backend UID.
Class definition for core library basic entities.
Message endpoint interface.
Common header for messaging.
uint64_t Step
Type used to store a step number in the form of a 64-bit unsigned integer.
Definition core.h:68
Output channel namespace.
ResultType output_channel_get(OutputChannel &output_channel, OutputConverter< ResultType > converter, core::Step step_from, core::Step step_to)
Read all accumulated spike messages from subscription and convert them to output data.
std::function< ResultType(const std::vector< core::messaging::SpikeMessage > &messages)> OutputConverter
Function used to convert spike messages into output data.
Header for output converter.