[][src]Struct buruma::ZooKeeper

pub struct ZooKeeper { /* fields omitted */ }

整个模块的 API 入口对象

Implementations

impl ZooKeeper[src]

pub async fn new(
    connect_string: &str,
    session_timeout: Duration
) -> ZKResult<ZooKeeper>
[src]

创建 ZooKeeper 客户端

Examples

let mut zk = ZooKeeper::new("127.0.0.1:2181", Duration::from_secs(5)).await.unwrap();

Args

  • connect_string: 连接字符串格式为 "ip1:port1,ip2:port2,ip3:port3.../chroot",其中 chroot 为可选
  • session_timeout: 会话超时时间, 参考 Duration

Returns

  • ZooKeeper:ZooKeeper 客户端对象

Errors

无法连接服务端或者连接字符串格式有问题将会返回异常

pub async fn create(
    &mut self,
    path: &str,
    data: Option<&[u8]>,
    acl_list: Vec<ACL>,
    create_model: CreateMode
) -> ZKResult<String>
[src]

创建目标路径的节点,数据是可选的

Examples

// 创建一个没有数据的节点
let path = zk.create("/a/new/path", None, ACL::world_acl(), CreateMode::Persistent)
       .await
       .unwrap();
// 创建一个带数据的节点
let path = zk.create("/your/path", Some("buruma".as_bytes()), ACL::world_acl(), CreateMode::Persistent)
       .await
       .unwrap();

Args

  • path: 目标路径,必须以 "/" 开头
  • data: 节点的数据,可选
  • acl: 该节点的权限数据,可以有多个,参考 ACL
  • create_model: 节点的模式,参考 CreateMode

Returns

  • String:目标路径,同参数 path

pub async fn delete(&mut self, path: &str) -> ZKResult<()>[src]

删除目标路径的节点数据

Examples

zk.delete("/your/path").await;

Args

  • path: 目标路径,必须以 "/" 开头

pub async fn deletev(&mut self, path: &str, version: i32) -> ZKResult<()>[src]

删除目标路径的节点数据携带版本条件,满足版本号才能删除

Examples

zk.deletev("/your/path", 1024).await;

Args

  • path: 目标路径,必须以 "/" 开头
  • version: 节点指定的版本号,-1 为忽略版本

pub async fn set(&mut self, path: &str, data: &[u8]) -> ZKResult<Stat>[src]

为目标路径设置数据

Examples

let stat = zk.set("/your/path", "Chinese Stand Up".as_bytes()).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • data: 节点数据

Returns

  • Stat: 统计对象,请查看 Stat

pub async fn setv(
    &mut self,
    path: &str,
    data: &[u8],
    version: i32
) -> ZKResult<Stat>
[src]

为目标路径设置数据,携带版本条件,满足版本号才能设置成功

Examples

let stat = zk.setv("/your/path", "Chinese Stand Up".as_bytes(), 19491001).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • data: 节点数据
  • version: 节点指定的版本号,-1 为忽略版本

Returns

  • Stat: 统计对象,请查看 Stat

pub async fn get(
    &mut self,
    path: &str,
    stat: Option<&mut Stat>
) -> ZKResult<Vec<u8>>
[src]

获取目标路径数据,不需要回调

Examples

let data = zk.get("/your/path", None).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • stat: 统计数据,可选,如果不为 None 则会将节点统计结果写入该对象, 关于更多统计对象,请查看 Stat

Returns

  • Vec<u8>: 目标节点的数据以字节数组的形式

pub async fn getw(
    &mut self,
    path: &str,
    watcher: Option<impl Watcher + 'static>,
    stat: Option<&mut Stat>
) -> ZKResult<Vec<u8>>
[src]

获取目标路径数据,需要回调通知

Examples

let data = zk.getw("/your/path", Some(YourWatcherImpl), None).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • watcher: 回调对象,必须实现 Watcher trait,可选
  • stat: 统计数据,可选,如果不为 None 则会将结果写入该对象, 关于更多统计对象,请查看 Stat

Returns

  • Vec<u8>: 目标节点的数据以字节数组的形式

pub async fn exists(&mut self, path: &str) -> ZKResult<Option<Stat>>[src]

判断目标路径是否存在,不需要回调

Examples

let stat = zk.exists("/your/path").await?;

Args

  • path: 目标路径,必须以 "/" 开头

Returns

  • Stat: 统计对象,请查看 Stat

pub async fn existsw(
    &mut self,
    path: &str,
    watcher: Option<impl Watcher + 'static>
) -> ZKResult<Option<Stat>>
[src]

判断目标路径是否存在,需要回调通知

Examples

let stat = zk.existsw("/your/path", Some(YourWatcherImpl), None).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • watcher: 回调对象,必须实现 Watcher trait,可选

Returns

  • Stat: 统计对象,请查看 Stat

pub async fn children(&mut self, path: &str) -> ZKResult<Vec<String>>[src]

获取节点的子节点列表,不需要回调

Examples

let children_list = zk.children("/your/path").await?;

Args

  • path: 目标路径,必须以 "/" 开头

Returns

  • Vec<String>: 子节点列表

pub async fn childrenw(
    &mut self,
    path: &str,
    watcher: Option<impl Watcher + 'static>
) -> ZKResult<Vec<String>>
[src]

获取节点的子节点列表,需要回调通知

Examples

let stat = zk.childrenw("/your/path", Some(YourWatcherImpl), None).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • watcher: 回调对象,必须实现 Watcher trait,可选

Returns

  • Vec<String>: 子节点列表

pub async fn childrens(
    &mut self,
    path: &str,
    stat: &mut Stat
) -> ZKResult<Vec<String>>
[src]

获取节点的子节点列表,不需要回调,可以写入 stat

Examples

let stat = Stat::default();
let children_list = zk.childrens("/your/path", stat).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • stat: 统计数据,统计结果会写入该对象, 关于更多统计对象,请查看 Stat

Returns

  • Vec<String>: 子节点列表

pub async fn childrensw(
    &mut self,
    path: &str,
    watcher: Option<impl Watcher + 'static>,
    stat: &mut Stat
) -> ZKResult<Vec<String>>
[src]

获取节点的子节点列表,需要回调通知,可以写入 stat

Examples

let stat = Stat::default();
let children_list = zk.childrensw("/your/path", Some(YourWatcherImpl), stat).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • watcher: 回调对象,必须实现 Watcher trait,可选
  • stat: 统计数据,统计结果会写入该对象, 关于更多统计对象,请查看 Stat

Returns

  • Vec<String>: 子节点列表

pub async fn children_count(&mut self, path: &str) -> ZKResult<u32>[src]

获取目标路径下的所有子节点数量(包括孙子节点)

Examples

let total_number = zk.children_count("/your/path").await?;

Args

  • path: 目标路径,必须以 "/" 开头

Returns

  • u32: 目标路径下的所有子节点数量

pub async fn get_ephemerals(&mut self, path: &str) -> ZKResult<Vec<String>>[src]

获取目标路径前缀下的所有临时节点(包括孙子节点)

Examples

let path_list = zk.get_ephemerals("/your/path").await?;

Args

  • path: 目标路径,必须以 "/" 开头,不会拼接 chroot

Returns

  • Vec<String>: 所有符合条件临时节点的列表

pub async fn get_acl(
    &mut self,
    path: &str,
    stat: Option<&mut Stat>
) -> ZKResult<Vec<ACL>>
[src]

获取目标路径的权限信息

Examples

let acl_list = zk.get_acl("/your/path", None).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • stat: 统计数据,可选,如果不为 None 则会将结果写入该对象, 关于更多统计对象,请查看 Stat

Returns

  • Vec<ACL>: 节点的 ACL 列表

pub async fn set_acl(
    &mut self,
    path: &str,
    acl_list: Vec<ACL>,
    version: i32
) -> ZKResult<Stat>
[src]

设置目标路径的权限信息

Examples

let acl_list = zk.get_acl("/your/path", None).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • acl_list: 该节点的权限数据,可以有多个,参考 ACL

Returns

  • Stat: 统计对象,请查看 Stat

pub async fn add_watch<W: Watcher + 'static>(
    &mut self,
    path: &str,
    watcher: W,
    mode: AddWatchMode
) -> ZKResult<()>
[src]

为目标路径添加回调通知

Examples

zk.add_watch("/your/path", YourWatcherImpl, AddWatchMode::Persistent).await?;

Args

  • path: 目标路径,必须以 "/" 开头
  • watcher: 回调对象,必须实现 Watcher trait
  • mode: 添加回调的种类,请查看 AddWatchMode

pub fn state(&self) -> ZKResult<States>[src]

获取客户端当前状态

Examples

let state = zk.state()?;

Returns

  • States: 关于更多客户端状态,请查看 States

pub fn session_id(&self) -> ZKResult<i64>[src]

获取客户端当前 session_id

Examples

let session_id = zk.session_id()?;

Returns

  • i64: 服务端分配的唯一会话 ID

pub fn session_timeout(&self) -> ZKResult<u32>[src]

获取客户端当前会话超时时间

Examples

let session_id = zk.session_timeout()?;

Returns

  • u32: 客户端的会话超时时间

Trait Implementations

impl Debug for ZooKeeper[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.