use serde::{Deserialize, Serialize};
use super::{ParticipantBindingPolicy, ParticipantId, ParticipantKind, SystemRoleId};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct LogicalParticipant {
id: ParticipantId,
role: SystemRoleId,
kind: ParticipantKind,
#[serde(default)]
binding: ParticipantBindingPolicy,
}
impl LogicalParticipant {
#[must_use]
pub const fn new(
id: ParticipantId,
role: SystemRoleId,
kind: ParticipantKind,
binding: ParticipantBindingPolicy,
) -> Self {
Self {
id,
role,
kind,
binding,
}
}
#[must_use]
pub const fn id(&self) -> &ParticipantId {
&self.id
}
#[must_use]
pub const fn role(&self) -> &SystemRoleId {
&self.role
}
#[must_use]
pub const fn kind(&self) -> ParticipantKind {
self.kind
}
#[must_use]
pub const fn binding(&self) -> &ParticipantBindingPolicy {
&self.binding
}
}