use crate::ha::ha_connection_state::HAConnectionState;
#[trait_variant::make(HAClient: Send)]
pub trait RocketmqHAClient: Sync {
async fn start(&mut self);
async fn shutdown(&self);
async fn wakeup(&self);
async fn update_master_address(&self, new_address: &str);
async fn update_ha_master_address(&self, new_address: &str);
fn get_master_address(&self) -> String;
fn get_ha_master_address(&self) -> String;
fn get_last_read_timestamp(&self) -> i64;
fn get_last_write_timestamp(&self) -> i64;
fn get_current_state(&self) -> HAConnectionState;
fn change_current_state(&self, ha_connection_state: HAConnectionState);
async fn close_master(&self);
fn get_transferred_byte_in_second(&self) -> i64;
}