manul/
protocol.rs

1/*!
2API for protocol implementors.
3
4A protocol is a directed acyclic graph with the nodes being objects of types implementing [`Round`]
5(to be specific, "acyclic" means that the values returned in the `id` field of [`TransitionInfo`]
6should not repeat during the protocol execution; the types might).
7The starting point is a type that implements [`EntryPoint`].
8All the rounds must have their associated type [`Round::Protocol`] set to the same [`Protocol`] instance
9to be executed by a [`Session`](`crate::session::Session`).
10
11For more details, see the documentation of the mentioned traits.
12*/
13
14mod boxed_format;
15mod boxed_round;
16mod errors;
17mod message;
18mod round;
19mod round_id;
20
21pub use boxed_format::BoxedFormat;
22pub use boxed_round::BoxedRound;
23pub use errors::{
24    DeserializationError, DirectMessageError, EchoBroadcastError, LocalError, MessageValidationError,
25    NormalBroadcastError, ProtocolValidationError, ReceiveError, RemoteError,
26};
27pub use message::{DirectMessage, EchoBroadcast, NormalBroadcast, ProtocolMessage, ProtocolMessagePart};
28pub use round::{
29    Artifact, CommunicationInfo, EchoRoundParticipation, EntryPoint, FinalizeOutcome, NoProtocolErrors, PartyId,
30    Payload, Protocol, ProtocolError, RequiredMessageParts, RequiredMessages, Round,
31};
32pub use round_id::{RoundId, TransitionInfo};
33
34pub(crate) use errors::ReceiveErrorType;
35pub(crate) use message::ProtocolMessagePartHashable;