use open_xiaoai::services::connect::message::MessageManager; use pyo3::prelude::*; use pyo3::types::PyBytes; use server::AppServer; pub mod macros; pub mod python; pub mod server; #[pyfunction] fn on_output_data(py: Python, data: Py) -> PyResult> { let bytes = data.as_bytes(py).to_vec(); pyo3_async_runtimes::tokio::future_into_py(py, async move { let _ = MessageManager::instance() .send_stream("play", bytes, None) .await; Ok(()) }) } #[pyfunction] fn start_server(py: Python) -> PyResult> { pyo3_async_runtimes::tokio::future_into_py(py, async { AppServer::run().await; Ok(()) }) } #[pymodule] fn open_xiaoai_server(_py: Python, m: Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(start_server, &m)?)?; m.add_function(wrap_pyfunction!(on_output_data, &m)?)?; crate::python::init_module(&m)?; Ok(()) }