![JAR search and dependency download from the Maven repository](/logo.png)
org.freedesktop.dbus.MessageWriter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dbus-java Show documentation
Show all versions of dbus-java Show documentation
Slightly improved version of the Java DBus library
provided by freedesktop.org (https://dbus.freedesktop.org/doc/dbus-java/).
Changes:
- Fixed lot's of Java warnings
- Fixed broken 'Gettext' feature (Exceptions on unsupported languages, usage of "_" as method name).
- Renamed some classes/methods/variables to comply with Java naming scheme.
- Removed usage of proprietary logger and replaced it with sl4fj.
- Renamed/refactored some parts to be more 'Java' like (e.g. naming, shadowing)
- Fixed problems with DbusConnection.getConnection(SESSION) when using display export (e.g. SSH X11 forward)
/*
D-Bus Java Implementation
Copyright (c) 2005-2006 Matthew Johnson
This program is free software; you can redistribute it and/or modify it
under the terms of either the GNU Lesser General Public License Version 2 or the
Academic Free Licence Version 2.1.
Full licence texts are included in the COPYING file with this program.
*/
package org.freedesktop.dbus;
import java.io.BufferedOutputStream;
import java.io.Closeable;
import java.io.IOException;
import java.io.OutputStream;
import org.freedesktop.Hexdump;
import org.freedesktop.dbus.messages.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cx.ath.matthew.unix.USOutputStream;
public class MessageWriter implements Closeable {
private final Logger logger = LoggerFactory.getLogger(getClass());
private OutputStream outputStream;
private boolean unixSocket;
public MessageWriter(OutputStream _out) {
this.outputStream = _out;
this.unixSocket = false;
try {
if (_out instanceof USOutputStream) {
this.unixSocket = true;
}
} catch (Throwable t) {
}
if (!this.unixSocket) {
this.outputStream = new BufferedOutputStream(_out);
}
}
public void writeMessage(Message m) throws IOException {
logger.debug("<= {}", m);
if (null == m) {
return;
}
if (null == m.getWireData()) {
logger.warn("Message {} wire-data was null!", m);
return;
}
if (unixSocket) {
if (logger.isTraceEnabled()) {
logger.debug("Writing all {} buffers simultaneously to Unix Socket", m.getWireData().length );
for (byte[] buf : m.getWireData()) {
logger.trace("({}):{}", buf, (null == buf ? "" : Hexdump.format(buf)));
}
}
((USOutputStream) outputStream).write(m.getWireData());
} else {
for (byte[] buf : m.getWireData()) {
logger.trace("({}):{}", buf, (null == buf ? "" : Hexdump.format(buf)));
if (null == buf) {
break;
}
outputStream.write(buf);
}
}
outputStream.flush();
}
@Override
public void close() throws IOException {
logger.info("Closing Message Writer");
if (outputStream != null) {
outputStream.close();
}
outputStream = null;
}
public boolean isClosed() {
return outputStream != null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy