netxclient 2.2.0

netx client assembly.
Documentation
use crate::test_struct::{Foo, LogOn, LogOnResult};
use netxclient::prelude::{error::Result, *};

#[build]
pub trait IServer: Sync + Send {
    #[tag(1)]
    async fn test_base_type(
        &self,
        v: (bool, i8, u8, i16, u16, i32, u32, i64, u64, f32, f64),
    ) -> anyhow::Result<(bool, i8, u8, i16, u16, i32, u32, i64, u64, f32, f64)>;
    #[tag(2)]
    async fn test_string(
        &self,
        v: &(String, Option<String>, Option<String>),
    ) -> Result<(String, Option<String>, Option<String>)>;
    #[tag(3)]
    async fn test_buff(
        &self,
        v: &(Vec<u8>, Option<Vec<u8>>, Option<Vec<u8>>),
    ) -> Result<(Vec<u8>, Option<Vec<u8>>, Option<Vec<u8>>)>;
    #[tag(4)]
    async fn test_struct(&self, value: &Foo) -> Result<Foo>;

    #[tag(1000)]
    async fn add(&self, a: i32, b: i32) -> Result<i32>;
    #[tag(800)]
    async fn print(&self, a: i32) -> Result<()>;
    #[tag(600)]
    async fn print2(&self, a: i32, b: &str) -> Result<()>;
    #[tag(700)]
    async fn run_test(&self, a: Option<&str>) -> Result<()>;
    #[tag(5001)]
    #[allow(dead_code)]
    async fn test(&self, msg: &str, i: i32);
    #[tag(1003)]
    async fn to_client_add_one(&self, a: i32) -> Result<i32>;
    #[tag(1005)]
    async fn recursive_test(&self, a: i32) -> Result<i32>;
    #[tag(10000)]
    async fn logon(&self, info: LogOn) -> Result<(bool, String)>;
    #[tag(10001)]
    async fn logon2(&self, info: (String, String)) -> Result<LogOnResult>;
    #[tag(2501)]
    async fn test_cow(&self, is_str: bool) -> Result<String>;
}