dbus: remove unused server-side object support
This commit is contained in:
parent
6489c2821c
commit
9e428510ca
7 changed files with 15 additions and 487 deletions
|
|
@ -6,16 +6,13 @@ use {
|
|||
crate::{
|
||||
dbus::{
|
||||
CallError, DbusError, DbusSocket, Headers, MSG_ERROR, MSG_METHOD_CALL,
|
||||
MSG_METHOD_RETURN, MSG_SIGNAL, MemberHandlerKey, Message, MethodHandlerApi,
|
||||
NO_REPLY_EXPECTED, Parser, PropertyGetAllHandlerProxy, PropertyGetHandlerProxy,
|
||||
MSG_METHOD_RETURN, MSG_SIGNAL, Parser,
|
||||
},
|
||||
utils::{
|
||||
bitflags::BitflagsExt,
|
||||
bufio::BufIoIncoming,
|
||||
errorfmt::ErrorFmt,
|
||||
ptr_ext::{MutPtrExt, PtrExt},
|
||||
},
|
||||
wire_dbus::org::freedesktop::dbus::properties::{Get, GetAll},
|
||||
},
|
||||
std::{cell::UnsafeCell, ops::Deref, rc::Rc},
|
||||
};
|
||||
|
|
@ -64,7 +61,6 @@ impl Incoming {
|
|||
return Err(DbusError::InvalidEndianess);
|
||||
}
|
||||
let msg_ty = msg_buf[1];
|
||||
let flags = msg_buf[2];
|
||||
let protocol = msg_buf[3];
|
||||
if protocol != 1 {
|
||||
return Err(DbusError::InvalidProtocol);
|
||||
|
|
@ -94,66 +90,12 @@ impl Incoming {
|
|||
};
|
||||
match msg_ty {
|
||||
MSG_METHOD_CALL => {
|
||||
let (sender, interface, member, path) = match (
|
||||
&headers.sender,
|
||||
&headers.interface,
|
||||
&headers.member,
|
||||
&headers.path,
|
||||
) {
|
||||
(Some(s), Some(i), Some(m), Some(p)) => (s, i, m, p),
|
||||
let sender = match &headers.sender {
|
||||
Some(s) => s,
|
||||
_ => return Err(DbusError::MissingMethodCallHeaders),
|
||||
};
|
||||
if let Some(object) = self.socket.objects.get(path.deref()) {
|
||||
let method_handler;
|
||||
let handler: Option<&dyn MethodHandlerApi> =
|
||||
if (interface.deref(), member.deref()) == (Get::INTERFACE, Get::MEMBER) {
|
||||
Some(&PropertyGetHandlerProxy)
|
||||
} else if (interface.deref(), member.deref())
|
||||
== (GetAll::INTERFACE, GetAll::MEMBER)
|
||||
{
|
||||
Some(&PropertyGetAllHandlerProxy)
|
||||
} else {
|
||||
let key = MemberHandlerKey {
|
||||
interface: interface.deref(),
|
||||
member: member.deref(),
|
||||
};
|
||||
method_handler = object.methods.get(&key);
|
||||
method_handler.as_deref()
|
||||
};
|
||||
if let Some(handler) = handler {
|
||||
let sig = headers.signature.as_deref().unwrap_or("");
|
||||
if sig != handler.signature() {
|
||||
let msg = format!(
|
||||
"Method call has an invalid signature: expected: {}, actual: {}",
|
||||
handler.signature(),
|
||||
sig,
|
||||
);
|
||||
self.socket.send_error(sender.deref(), serial, &msg);
|
||||
} else {
|
||||
let reply_expected = !flags.contains(NO_REPLY_EXPECTED);
|
||||
if let Err(e) = handler.handle(
|
||||
&object,
|
||||
&self.socket,
|
||||
sender,
|
||||
serial,
|
||||
reply_expected,
|
||||
&mut parser,
|
||||
) {
|
||||
log::error!(
|
||||
"{}: Could not handle method call: {}",
|
||||
self.socket.bus_name,
|
||||
ErrorFmt(e)
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
self.socket
|
||||
.send_error(sender.deref(), serial, "Method does not exist");
|
||||
}
|
||||
} else {
|
||||
self.socket
|
||||
.send_error(sender.deref(), serial, "Object does not exist");
|
||||
}
|
||||
self.socket
|
||||
.send_error(sender.deref(), serial, "Object does not exist");
|
||||
}
|
||||
MSG_METHOD_RETURN | MSG_ERROR => {
|
||||
let serial = match headers.reply_serial {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue