Function mpstthree::functionmpst::choose::choose_right_mpst_session_a_to_all[][src]

pub fn choose_right_mpst_session_a_to_all<'a, S0, S1, S2, S3, S4, S5, R0, R1, R2, R3, R4, R5>(
    s: MeshedChannels<ChooseMpst<S2, S0, S4, S1, R0, R1, RoleBDual<RoleEnd>>, ChooseMpst<S3, <S0 as Session>::Dual, S5, <S1 as Session>::Dual, R2, R3, RoleCDual<RoleEnd>>, RoleAtoAll<R4, R5>, RoleA<RoleEnd>>
) -> MeshedChannels<S4, S5, R5, RoleA<RoleEnd>> where
    S0: Session + 'a,
    S1: Session + 'a,
    S2: Session + 'a,
    S3: Session + 'a,
    S4: Session + 'a,
    S5: Session + 'a,
    R0: Role + 'a,
    R0: Role + 'a,
    R1: Role + 'a,
    R2: Role + 'a,
    R3: Role + 'a,
    R4: Role + 'a,
    R5: Role + 'a, 
Expand description

Given a choice from A, to other processes, between two MeshedChannels, choose the second option for each.

A has to encapsulate all possible MeshedChannels for each other role. This function creates the 6 new binary Session, the 3 new Role related to each second option then the related [mpstthree::meshedchannels:: MeshedChannels]. It then sends those options to the related processes.

  • S0: dual session from B to C on left branch

  • S1: dual session from B to C on right branch

  • S2: session from A to B on left branch

  • S3: session from A to C on left branch

  • S4: session from A to B on right branch

  • S5: session from A to C on right branch

  • R0: dual stack of B on left branch

  • R1: dual stack of B on right branch

  • R2: dual stack of C on left branch

  • R3: dual stack of C on right branch

  • R4: stack of A on left branch

  • R5: stack of A on right branch