in dbus-java/src/main/java/org/freedesktop/dbus/connections/AbstractConnection.java [1066:1124]
private void sendMessageInternally(Message m) {
try {
if (!connected) {
throw new NotConnected("Disconnected");
}
if (m instanceof DBusSignal) {
((DBusSignal) m).appendbody(this);
}
if (m instanceof MethodCall) {
if (0 == (m.getFlags() & Message.Flags.NO_REPLY_EXPECTED)) {
if (null == getPendingCalls()) {
((MethodCall) m).setReply(new Error("org.freedesktop.DBus.Local",
"org.freedesktop.DBus.Local.Disconnected", 0, "s", "Disconnected"));
} else {
synchronized (getPendingCalls()) {
getPendingCalls().put(m.getSerial(), (MethodCall) m);
}
}
}
}
transport.writeMessage(m);
} catch (Exception e) {
logger.debug("Exception while sending message.", e);
if (m instanceof MethodCall && e instanceof NotConnected) {
try {
((MethodCall) m).setReply(new Error("org.freedesktop.DBus.Local",
"org.freedesktop.DBus.Local.Disconnected", 0, "s", "Disconnected"));
} catch (DBusException exDe) {
}
}
if (m instanceof MethodCall && e instanceof DBusExecutionException) {
try {
((MethodCall) m).setReply(new Error(m, e));
} catch (DBusException exDe) {
}
} else if (m instanceof MethodCall) {
try {
logger.info("Setting reply to {} as an error", m);
((MethodCall) m).setReply(
new Error(m, new DBusExecutionException("Message Failed to Send: " + e.getMessage())));
} catch (DBusException exDe) {
}
} else if (m instanceof MethodReturn) {
try {
transport.writeMessage(new Error(m, e));
} catch (IOException exIo) {
logger.debug("", exIo);
} catch (DBusException exDe) {
logger.debug("", exDe);
}
}
if (e instanceof IOException) {
disconnect();
}
}
}