use ozzy_proto::{
ConsumerGroupId, ConsumerMemberId, NodeId, OperationId, PartitionIncarnation, group::Start,
};
pub const GROUP_PLAN_MAX_MEMBERS: usize = ozzy_proto::group::MAX_MEMBERS;
pub const GROUP_PLAN_MAX_PARTITIONS: usize = ozzy_proto::group::MAX_PARTITIONS;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct GroupMember {
pub id: ConsumerMemberId,
pub node: NodeId,
pub join: OperationId,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct GroupTarget {
pub partition: PartitionIncarnation,
pub plan_revision: u64,
pub member: Option<GroupMember>,
pub prior_member: Option<GroupMember>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GroupPlan<'a> {
pub coordinator: PartitionIncarnation,
pub group: ConsumerGroupId,
pub name: &'a str,
pub expected_revision: u64,
pub revision: u64,
pub initial: Start,
pub members: Vec<GroupMember>,
pub targets: Vec<GroupTarget>,
pub operation_id: OperationId,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct GroupDelete {
pub coordinator: PartitionIncarnation,
pub group: ConsumerGroupId,
pub revision: u64,
pub operation_id: OperationId,
}