hyprwire 0.4.2

A fast and consistent wire protocol for IPC
Documentation
use crate::client::event_queue;
use crate::server::server_client;
use crate::{client, server};
use hyprwire_core::types;
use std::{any, sync};

pub trait ObjectData: Send + Sync {
    fn dispatch(&self, method: u32, data: &[u8], fds: &[i32], state: &mut dyn any::Any);

    fn destroyed(&self) {}
}

pub trait Object: Send + Sync {
    fn call(&self, id: u32, args: &[types::CallArg]) -> u32;

    fn event_queue(&self) -> Option<event_queue::EventQueue> {
        None
    }

    fn client_sock(&self) -> Option<client::Client> {
        None
    }

    fn server_sock(&self) -> Option<server::Server> {
        None
    }

    fn server_client(&self) -> Option<server_client::ServerClient> {
        None
    }

    fn create_object(&self, _object_name: &str, _seq: u32) -> Option<sync::Arc<dyn Object>> {
        None
    }

    fn error(&self, error_id: u32, error_msg: &str);

    fn set_object_data(&self, data: Box<dyn ObjectData>);

    fn dispatch(&self, method: u32, data: &[u8], fds: &[i32], state: &mut dyn any::Any);
}