| // 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::{ |
| ClusterClient, ConsumerGroupClient, ConsumerOffsetClient, MessageClient, PartitionClient, |
| PersonalAccessTokenClient, SegmentClient, StreamClient, SystemClient, TopicClient, UserClient, |
| }; |
| use crate::{DiagnosticEvent, IggyError}; |
| use async_broadcast::Receiver; |
| use async_trait::async_trait; |
| use std::fmt::Debug; |
| |
| /// The client trait which is the main interface to the Iggy server. |
| /// It consists of multiple modules, each of which is responsible for a specific set of commands. |
| /// Except the ping, login and get me, all the other methods require authentication. |
| #[async_trait] |
| pub trait Client: |
| ClusterClient |
| + SystemClient |
| + UserClient |
| + PersonalAccessTokenClient |
| + StreamClient |
| + TopicClient |
| + PartitionClient |
| + SegmentClient |
| + MessageClient |
| + ConsumerOffsetClient |
| + ConsumerGroupClient |
| + Sync |
| + Send |
| + Debug |
| { |
| /// Connect to the server. Depending on the selected transport and provided configuration it might also perform authentication, retry logic etc. |
| /// If the client is already connected, it will do nothing. |
| async fn connect(&self) -> Result<(), IggyError>; |
| |
| /// Disconnect from the server. If the client is not connected, it will do nothing. |
| async fn disconnect(&self) -> Result<(), IggyError>; |
| |
| // Shutdown the client and release all the resources. |
| async fn shutdown(&self) -> Result<(), IggyError>; |
| |
| /// Subscribe to diagnostic events. |
| async fn subscribe_events(&self) -> Receiver<DiagnosticEvent>; |
| } |