haproxy_api/
stick_table.rs

1use std::ops::Deref;
2
3use mlua::{FromLua, Lua, Result, Table, TableExt, Value};
4
5/// The "StickTable" class can be used to access the HAProxy stick tables.
6#[derive(Clone)]
7pub struct StickTable<'lua> {
8    class: Table<'lua>,
9}
10
11impl<'lua> StickTable<'lua> {
12    /// Returns stick table attributes as a Lua table.
13    #[inline]
14    pub fn info(&self) -> Result<Table<'lua>> {
15        self.class.call_method("info", ())
16    }
17
18    /// Returns stick table entry for given `key`.
19    #[inline]
20    pub fn lookup(&self, key: &str) -> Result<Table<'lua>> {
21        self.class.call_method("lookup", key)
22    }
23
24    /// Returns all entries in stick table.
25    ///
26    /// An optional `filter` can be used to extract entries with specific data values.
27    /// Filter is a table with valid comparison operators as keys followed by data type name and value pairs.
28    /// Check out the HAProxy docs for "show table" for more details.
29    #[inline]
30    pub fn dump(&self, filter: Option<&str>) -> Result<Table<'lua>> {
31        self.class.call_method("dump", filter)
32    }
33}
34
35impl<'lua> FromLua<'lua> for StickTable<'lua> {
36    #[inline]
37    fn from_lua(value: Value<'lua>, lua: &'lua Lua) -> Result<Self> {
38        let class = Table::from_lua(value, lua)?;
39        Ok(StickTable { class })
40    }
41}
42
43impl<'lua> Deref for StickTable<'lua> {
44    type Target = Table<'lua>;
45
46    #[inline]
47    fn deref(&self) -> &Self::Target {
48        &self.class
49    }
50}