rusmpp_extra/concatenation/owned/
fallback.rs1use 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}