use gio_sys;
use glib;
#[cfg(any(unix, feature = "dox"))]
use glib::object::IsA;
use glib::translate::*;
use glib::GString;
use std::fmt;
use DBusConnection;
use DBusMessage;
use DBusMethodInfo;
use DBusPropertyInfo;
#[cfg(any(unix, feature = "dox"))]
use UnixFDList;
glib_wrapper! {
pub struct DBusMethodInvocation(Object<gio_sys::GDBusMethodInvocation, DBusMethodInvocationClass>);
match fn {
get_type => || gio_sys::g_dbus_method_invocation_get_type(),
}
}
impl DBusMethodInvocation {
pub fn get_connection(&self) -> Option<DBusConnection> {
unsafe {
from_glib_none(gio_sys::g_dbus_method_invocation_get_connection(
self.to_glib_none().0,
))
}
}
pub fn get_interface_name(&self) -> Option<GString> {
unsafe {
from_glib_none(gio_sys::g_dbus_method_invocation_get_interface_name(
self.to_glib_none().0,
))
}
}
pub fn get_message(&self) -> Option<DBusMessage> {
unsafe {
from_glib_none(gio_sys::g_dbus_method_invocation_get_message(
self.to_glib_none().0,
))
}
}
pub fn get_method_info(&self) -> Option<DBusMethodInfo> {
unsafe {
from_glib_none(gio_sys::g_dbus_method_invocation_get_method_info(
self.to_glib_none().0,
))
}
}
pub fn get_method_name(&self) -> Option<GString> {
unsafe {
from_glib_none(gio_sys::g_dbus_method_invocation_get_method_name(
self.to_glib_none().0,
))
}
}
pub fn get_object_path(&self) -> Option<GString> {
unsafe {
from_glib_none(gio_sys::g_dbus_method_invocation_get_object_path(
self.to_glib_none().0,
))
}
}
pub fn get_parameters(&self) -> Option<glib::Variant> {
unsafe {
from_glib_none(gio_sys::g_dbus_method_invocation_get_parameters(
self.to_glib_none().0,
))
}
}
pub fn get_property_info(&self) -> Option<DBusPropertyInfo> {
unsafe {
from_glib_none(gio_sys::g_dbus_method_invocation_get_property_info(
self.to_glib_none().0,
))
}
}
pub fn get_sender(&self) -> Option<GString> {
unsafe {
from_glib_none(gio_sys::g_dbus_method_invocation_get_sender(
self.to_glib_none().0,
))
}
}
pub fn return_dbus_error(&self, error_name: &str, error_message: &str) {
unsafe {
gio_sys::g_dbus_method_invocation_return_dbus_error(
self.to_glib_full(),
error_name.to_glib_none().0,
error_message.to_glib_none().0,
);
}
}
pub fn return_value(&self, parameters: Option<&glib::Variant>) {
unsafe {
gio_sys::g_dbus_method_invocation_return_value(
self.to_glib_full(),
parameters.to_glib_none().0,
);
}
}
#[cfg(any(unix, feature = "dox"))]
pub fn return_value_with_unix_fd_list<P: IsA<UnixFDList>>(
&self,
parameters: Option<&glib::Variant>,
fd_list: Option<&P>,
) {
unsafe {
gio_sys::g_dbus_method_invocation_return_value_with_unix_fd_list(
self.to_glib_full(),
parameters.to_glib_none().0,
fd_list.map(|p| p.as_ref()).to_glib_none().0,
);
}
}
}
impl fmt::Display for DBusMethodInvocation {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "DBusMethodInvocation")
}
}