COMMS
Template library intended to help with implementation of communication protocols.
Loading...
Searching...
No Matches
process.h
Go to the documentation of this file.
1//
2// Copyright 2019 - 2025 (C). Alex Robenko. All rights reserved.
3//
4// This Source Code Form is subject to the terms of the Mozilla Public
5// License, v. 2.0. If a copy of the MPL was not distributed with this
6// file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
10
11#pragma once
12
14
15#include <cstddef>
16
17namespace comms
18{
19
41template <typename TBufIter, typename TFrame, typename TMsg, typename... TExtraValues>
43 TBufIter& bufIter,
44 std::size_t len,
45 TFrame&& frame,
46 TMsg& msg,
47 TExtraValues... extraValues)
48{
49 return details::ProcessHelper::processSingle(bufIter, len, std::forward<TFrame>(frame), msg, std::forward<TExtraValues>(extraValues)...);
50}
51
79template <typename TBufIter, typename TFrame, typename TMsg, typename THandler, typename... TExtraValues>
81 TBufIter& bufIter,
82 std::size_t len,
83 TFrame&& frame,
84 TMsg& msg,
85 THandler& handler,
86 TExtraValues... extraValues)
87{
88 return details::ProcessHelper::processSingleWithDispatch(bufIter, len, std::forward<TFrame>(frame), msg, handler, std::forward<TExtraValues>(extraValues)...);
89}
90
121template <typename TDispatcher, typename TBufIter, typename TFrame, typename TMsg, typename THandler, typename... TExtraValues>
123 TBufIter& bufIter,
124 std::size_t len,
125 TFrame&& frame,
126 TMsg& msg,
127 THandler& handler,
128 TExtraValues... extraValues)
129{
130 return details::ProcessHelper::processSingleWithDispatchViaDispatcher<TDispatcher>(bufIter, len, std::forward<TFrame>(frame), msg, handler, std::forward<TExtraValues>(extraValues)...);
131}
132
155template <typename TBufIter, typename TFrame, typename THandler, typename... TExtraValues>
157 TBufIter bufIter,
158 std::size_t len,
159 TFrame&& frame,
160 THandler& handler)
161{
162 return details::ProcessHelper::processAllWithDispatch(bufIter, len, std::forward<TFrame>(frame), handler);
163}
164
188template <typename TDispatcher, typename TBufIter, typename TFrame, typename THandler, typename... TExtraValues>
190 TBufIter bufIter,
191 std::size_t len,
192 TFrame&& frame,
193 THandler& handler)
194{
195 return details::ProcessHelper::processAllWithDispatchViaDispatcher<TDispatcher>(bufIter, len, std::forward<TFrame>(frame), handler);
196}
197
198} // namespace comms
Provides auxiliary functions for processing input and dispatching messages.
Main namespace for all classes / functions of COMMS library.
ErrorStatus
Error statuses reported by the Communication module.
Definition ErrorStatus.h:17
std::size_t processAllWithDispatch(TBufIter bufIter, std::size_t len, TFrame &&frame, THandler &handler)
Process all available input and dispatch all created message objects to appropriate handling function...
Definition process.h:156
comms::ErrorStatus processSingle(TBufIter &bufIter, std::size_t len, TFrame &&frame, TMsg &msg, TExtraValues... extraValues)
Process input until first message is recognized and its object is created or missing data is reported...
Definition process.h:42
comms::ErrorStatus processSingleWithDispatch(TBufIter &bufIter, std::size_t len, TFrame &&frame, TMsg &msg, THandler &handler, TExtraValues... extraValues)
Process input until first message is recognized, its object is created and dispatched to appropriate ...
Definition process.h:80
comms::ErrorStatus processSingleWithDispatchViaDispatcher(TBufIter &bufIter, std::size_t len, TFrame &&frame, TMsg &msg, THandler &handler, TExtraValues... extraValues)
Process input until first message is recognized, its object is created and dispatched to appropriate ...
Definition process.h:122
std::size_t processAllWithDispatchViaDispatcher(TBufIter bufIter, std::size_t len, TFrame &&frame, THandler &handler)
Process all available input and dispatch all created message objects to appropriate handling function...
Definition process.h:189