
org.freedesktop.dbus.connections.config.TransportConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dbus-java-osgi Show documentation
Show all versions of dbus-java-osgi Show documentation
Improved version of the DBus-Java library provided by freedesktop.org (https://dbus.freedesktop.org/doc/dbus-java/).
This is the OSGi compliant bundle of all required libraries in one bundle.
package org.freedesktop.dbus.connections.config;
import org.freedesktop.dbus.connections.BusAddress;
import org.freedesktop.dbus.connections.impl.BaseConnectionBuilder;
import org.freedesktop.dbus.connections.transports.AbstractTransport;
import org.freedesktop.dbus.connections.transports.TransportBuilder;
import org.freedesktop.dbus.utils.Util;
import java.nio.file.attribute.PosixFilePermission;
import java.util.*;
import java.util.function.Consumer;
/**
* Configuration used to setup a transport.
*
* @author hypfvieh
* @since v4.2.0 - 2022-07-21
*/
public final class TransportConfig {
private SaslConfig saslConfig;
private BusAddress busAddress;
private Consumer preConnectCallback;
private Consumer afterBindCallback;
private int timeout = 10000;
private boolean autoConnect = true;
/** user to set on socket file if this is a server transport (null to do nothing). */
private String fileOwner;
/** group to set on socket file if this is a server transport (null to do nothing). */
private String fileGroup;
private byte endianess = BaseConnectionBuilder.getSystemEndianness();
private boolean registerSelf = true;
private ClassLoader serviceLoaderClassLoader = TransportBuilder.class.getClassLoader();
private ModuleLayer serviceLoaderModuleLayer;
/**
* Unix file permissions to set on socket file if this is a server transport (ignored on Windows, does nothing if
* null)
*/
private Set fileUnixPermissions;
/**
* Contains additional configuration where no direct getter/setter is available for.
*/
private Map additionalConfig = new LinkedHashMap<>();
public TransportConfig(BusAddress _address) {
busAddress = _address;
}
public TransportConfig() {
this(null);
}
public BusAddress getBusAddress() {
return busAddress;
}
public void setBusAddress(BusAddress _busAddress) {
busAddress = Objects.requireNonNull(_busAddress, "BusAddress required");
}
public void setListening(boolean _listen) {
updateBusAddress(_listen);
}
public boolean isListening() {
return busAddress != null && busAddress.isListeningSocket();
}
public Consumer getPreConnectCallback() {
return preConnectCallback;
}
public void setPreConnectCallback(Consumer _preConnectCallback) {
preConnectCallback = _preConnectCallback;
}
public Consumer getAfterBindCallback() {
return afterBindCallback;
}
public void setAfterBindCallback(Consumer _afterBindCallback) {
afterBindCallback = _afterBindCallback;
}
public boolean isAutoConnect() {
return autoConnect;
}
public void setAutoConnect(boolean _autoConnect) {
autoConnect = _autoConnect;
}
public int getTimeout() {
return timeout;
}
public void setTimeout(int _timeout) {
timeout = _timeout;
}
public String getFileOwner() {
return fileOwner;
}
public void setFileOwner(String _fileOwner) {
fileOwner = _fileOwner;
}
public String getFileGroup() {
return fileGroup;
}
public void setFileGroup(String _fileGroup) {
fileGroup = _fileGroup;
}
public Set getFileUnixPermissions() {
return fileUnixPermissions;
}
public void setFileUnixPermissions(PosixFilePermission... _permissions) {
if (Util.isWindows()) {
return;
}
if (_permissions == null || _permissions.length < 1) {
return;
}
fileUnixPermissions = new LinkedHashSet<>(Arrays.asList(_permissions));
}
public Map getAdditionalConfig() {
return additionalConfig;
}
public void setAdditionalConfig(Map _additionalConfig) {
additionalConfig = _additionalConfig;
}
public SaslConfig getSaslConfig() {
if (saslConfig == null) {
saslConfig = new SaslConfig();
}
return saslConfig;
}
void setSaslConfig(SaslConfig _saslCfg) {
saslConfig = _saslCfg;
}
public byte getEndianess() {
return endianess;
}
public void setEndianess(byte _endianess) {
endianess = _endianess;
}
public boolean isRegisterSelf() {
return registerSelf;
}
public void setRegisterSelf(boolean _registerSelf) {
registerSelf = _registerSelf;
}
public ClassLoader getServiceLoaderClassLoader() {
return serviceLoaderClassLoader;
}
public void setServiceLoaderClassLoader(ClassLoader _serviceLoaderClassLoader) {
serviceLoaderClassLoader = _serviceLoaderClassLoader;
}
public ModuleLayer getServiceLoaderModuleLayer() {
return serviceLoaderModuleLayer;
}
public void setServiceLoaderModuleLayer(ModuleLayer _serviceLoaderModuleLayer) {
serviceLoaderModuleLayer = _serviceLoaderModuleLayer;
}
/**
* Toggles the busaddress to be a listening (server) or non listening (client) connection.
* @param _listening true to be a server connection
*/
void updateBusAddress(boolean _listening) {
if (busAddress == null) {
return;
}
if (!busAddress.isListeningSocket() && _listening) { // not a listening address, but should be one
busAddress.addParameter("listen", "true");
} else if (busAddress.isListeningSocket() && !_listening) { // listening address, but should not be one
busAddress.removeParameter("listen");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy