blob: f489b7309a4e1618af7dd12a8bdcf18bd59a5110 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
use crate::metadata::inner::InnerMetadata;
use crate::metadata::{
ConsumerGroupId, ConsumerGroupMeta, PartitionId, PartitionMeta, StreamId, StreamMeta, TopicId,
TopicMeta, UserId, UserMeta,
};
use crate::streaming::partitions::consumer_group_offsets::ConsumerGroupOffsets;
use crate::streaming::partitions::consumer_offsets::ConsumerOffsets;
use iggy_common::{CompressionAlgorithm, IggyExpiry, MaxTopicSize, PersonalAccessToken};
use std::sync::Arc;
use std::sync::atomic::AtomicUsize;
#[derive(Clone)]
pub enum MetadataOp {
Initialize(Box<InnerMetadata>),
AddStream {
meta: StreamMeta,
assigned_id: Arc<AtomicUsize>,
},
UpdateStream {
id: StreamId,
new_name: Arc<str>,
},
DeleteStream {
id: StreamId,
},
AddTopic {
stream_id: StreamId,
meta: TopicMeta,
assigned_id: Arc<AtomicUsize>,
},
UpdateTopic {
stream_id: StreamId,
topic_id: TopicId,
new_name: Arc<str>,
message_expiry: IggyExpiry,
compression_algorithm: CompressionAlgorithm,
max_topic_size: MaxTopicSize,
replication_factor: u8,
},
DeleteTopic {
stream_id: StreamId,
topic_id: TopicId,
},
AddPartitions {
stream_id: StreamId,
topic_id: TopicId,
partitions: Vec<PartitionMeta>,
revision_id: u64,
},
DeletePartitions {
stream_id: StreamId,
topic_id: TopicId,
count: u32,
},
SetPartitionOffsets {
stream_id: StreamId,
topic_id: TopicId,
partition_id: PartitionId,
consumer_offsets: Arc<ConsumerOffsets>,
consumer_group_offsets: Arc<ConsumerGroupOffsets>,
},
AddUser {
meta: UserMeta,
assigned_id: Arc<AtomicUsize>,
},
UpdateUserMeta {
id: UserId,
meta: UserMeta,
},
DeleteUser {
id: UserId,
},
AddPersonalAccessToken {
user_id: UserId,
pat: PersonalAccessToken,
},
DeletePersonalAccessToken {
user_id: UserId,
token_hash: Arc<str>,
},
AddConsumerGroup {
stream_id: StreamId,
topic_id: TopicId,
meta: ConsumerGroupMeta,
assigned_id: Arc<AtomicUsize>,
},
DeleteConsumerGroup {
stream_id: StreamId,
topic_id: TopicId,
group_id: ConsumerGroupId,
},
JoinConsumerGroup {
stream_id: StreamId,
topic_id: TopicId,
group_id: ConsumerGroupId,
client_id: u32,
member_id: Arc<AtomicUsize>,
},
LeaveConsumerGroup {
stream_id: StreamId,
topic_id: TopicId,
group_id: ConsumerGroupId,
client_id: u32,
removed_member_id: Arc<AtomicUsize>,
},
RebalanceConsumerGroupsForTopic {
stream_id: StreamId,
topic_id: TopicId,
partitions_count: u32,
},
}