rusmpp_extra/concatenation/owned/
fallback.rs

1use rusmpp_core::values::DataCoding;
2
3use crate::{
4    concatenation::owned::{Concatenation, Concatenator},
5    fallback::{Fallback, FallbackError},
6};
7
8impl<T, U> Concatenator for Fallback<T, U>
9where
10    T: Concatenator,
11    U: Concatenator,
12{
13    type Error = FallbackError<T::Error, U::Error>;
14
15    fn concatenate(
16        &self,
17        message: &str,
18        max_message_size: usize,
19        part_header_size: usize,
20    ) -> Result<(Concatenation, DataCoding), Self::Error> {
21        match self
22            .first
23            .concatenate(message, max_message_size, part_header_size)
24        {
25            Ok(result) => Ok(result),
26            Err(first_err) => {
27                match self
28                    .second
29                    .concatenate(message, max_message_size, part_header_size)
30                {
31                    Ok(result) => Ok(result),
32                    Err(second_err) => Err(FallbackError::new(first_err, second_err)),
33                }
34            }
35        }
36    }
37}