Function mpstthree::functionmpst::offer::offer_mpst_session_to_c_from_a[][src]

pub fn offer_mpst_session_to_c_from_a<'a, S1, S2, S3, S4, S5, F, G, R1, R2, U>(
    s: MeshedChannels<OfferMpst<S1, S2, S3, S4, R1, R2, RoleC<RoleEnd>>, S5, RoleAlltoA<RoleEnd, RoleEnd>, RoleC<RoleEnd>>,
    f: F,
    g: G
) -> Result<U, Box<dyn Error + 'a>> where
    S1: Session,
    S2: Session,
    S3: Session,
    S4: Session,
    S5: Session,
    R1: Role,
    R2: Role,
    F: FnOnce(MeshedChannels<S1, S2, R1, RoleC<RoleEnd>>) -> Result<U, Box<dyn Error + 'a>>,
    G: FnOnce(MeshedChannels<S3, S4, R2, RoleC<RoleEnd>>) -> Result<U, Box<dyn Error + 'a>>, 
Expand description

Offer a choice to A from C (on its session field related to C) between two MeshedChannels, MeshedChannels<S1, S2, R1, N1> and MeshedChannels<S3, S4, R2, N2>.

Example

// Please check the tests usecase

offer_mpst_session_to_c_from_a(
   s,
   |s: EndpointCRecv<i32>| {
       let (request, s) = recv_mpst_c_from_a(s)?;
       close_mpst(s)
   },
   |s: EndpointCEnd| {
       close_mpst(s)
   },
)