org.freedesktop.dbus
Class AbstractConnection

java.lang.Object
  extended by org.freedesktop.dbus.AbstractConnection
Direct Known Subclasses:
DBusConnection, DirectConnection

public abstract class AbstractConnection
extends Object

Handles a connection to DBus.


Nested Class Summary
protected  class AbstractConnection._thread
           
protected  class AbstractConnection._workerthread
           
protected  class AbstractConnection.FallbackContainer
           
 
Field Summary
protected  boolean _run
           
protected  String addr
           
protected  boolean connected
           
static boolean EXCEPTION_DEBUG
           
protected  Map<String,org.freedesktop.dbus.ExportedObject> exportedObjects
           
protected  AbstractConnection.FallbackContainer fallbackcontainer
           
protected  Map<org.freedesktop.dbus.SignalTuple,Vector<DBusSigHandler<? extends DBusSignal>>> handledSignals
           
protected  Map<DBusInterface,org.freedesktop.dbus.RemoteObject> importedObjects
           
protected  Map<MethodCall,DBusAsyncReply<? extends Object>> pendingCallbackReplys
           
protected  Map<MethodCall,CallbackHandler<? extends Object>> pendingCallbacks
           
protected  org.freedesktop.dbus.EfficientMap pendingCalls
           
protected  LinkedList<Runnable> runnables
           
protected  org.freedesktop.dbus.AbstractConnection._sender sender
           
protected  AbstractConnection._thread thread
           
protected static int TIMEOUT
          Timeout in us on checking the BUS for incoming messages and sending outgoing messages
protected  Transport transport
           
protected  boolean weakreferences
           
protected  LinkedList<AbstractConnection._workerthread> workers
           
 
Constructor Summary
protected AbstractConnection(String address)
           
 
Method Summary
 void addFallback(String objectprefix, DBusInterface object)
          Export an object as a fallback object.
<T extends DBusSignal>
void
addSigHandler(Class<T> type, DBusInterface object, DBusSigHandler<T> handler)
          Add a Signal Handler.
<T extends DBusSignal>
void
addSigHandler(Class<T> type, DBusSigHandler<T> handler)
          Add a Signal Handler.
protected abstract
<T extends DBusSignal>
void
addSigHandler(DBusMatchRule rule, DBusSigHandler<T> handler)
           
protected
<T extends DBusSignal>
void
addSigHandlerWithoutMatch(Class<? extends DBusSignal> signal, DBusSigHandler<T> handler)
           
 DBusAsyncReply callMethodAsync(DBusInterface object, String m, Object... parameters)
          Call a method asynchronously and get a handle with which to get the reply.
<A> void
callWithCallback(DBusInterface object, String m, CallbackHandler<A> callback, Object... parameters)
          Call a method asynchronously and set a callback.
 void changeThreadCount(byte newcount)
          Change the number of worker threads to receive method calls and handle signals.
 void disconnect()
          Disconnect from the Bus.
 void exportObject(String objectpath, DBusInterface object)
          Export an object so that its methods can be called on DBus.
 void finalize()
           
 BusAddress getAddress()
          Returns the address this connection is connected to.
static DBusCallInfo getCallInfo()
          Returns a structure with information on the current method call.
 DBusExecutionException getError()
          Return any DBus error which has been received.
protected  void listen()
           
 void removeFallback(String objectprefix)
          Remove a fallback
<T extends DBusSignal>
void
removeSigHandler(Class<T> type, DBusInterface object, DBusSigHandler<T> handler)
          Remove a Signal Handler.
<T extends DBusSignal>
void
removeSigHandler(Class<T> type, DBusSigHandler<T> handler)
          Remove a Signal Handler.
protected abstract
<T extends DBusSignal>
void
removeSigHandler(DBusMatchRule rule, DBusSigHandler<T> handler)
           
protected  void sendMessage(Message m)
           
 void sendSignal(DBusSignal signal)
          Send a signal.
 void setWeakReferences(boolean weakreferences)
          If set to true the bus will not hold a strong reference to exported objects.
 void unExportObject(String objectpath)
          Stop Exporting an object
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TIMEOUT

protected static final int TIMEOUT
Timeout in us on checking the BUS for incoming messages and sending outgoing messages

See Also:
Constant Field Values

exportedObjects

protected Map<String,org.freedesktop.dbus.ExportedObject> exportedObjects

importedObjects

protected Map<DBusInterface,org.freedesktop.dbus.RemoteObject> importedObjects

handledSignals

protected Map<org.freedesktop.dbus.SignalTuple,Vector<DBusSigHandler<? extends DBusSignal>>> handledSignals

pendingCalls

protected org.freedesktop.dbus.EfficientMap pendingCalls

pendingCallbacks

protected Map<MethodCall,CallbackHandler<? extends Object>> pendingCallbacks

pendingCallbackReplys

protected Map<MethodCall,DBusAsyncReply<? extends Object>> pendingCallbackReplys

runnables

protected LinkedList<Runnable> runnables

workers

protected LinkedList<AbstractConnection._workerthread> workers

fallbackcontainer

protected AbstractConnection.FallbackContainer fallbackcontainer

_run

protected boolean _run

thread

protected AbstractConnection._thread thread

sender

protected org.freedesktop.dbus.AbstractConnection._sender sender

transport

protected Transport transport

addr

protected String addr

weakreferences

protected boolean weakreferences

EXCEPTION_DEBUG

public static final boolean EXCEPTION_DEBUG

connected

protected boolean connected
Constructor Detail

AbstractConnection

protected AbstractConnection(String address)
                      throws DBusException
Throws:
DBusException
Method Detail

listen

protected void listen()

changeThreadCount

public void changeThreadCount(byte newcount)
Change the number of worker threads to receive method calls and handle signals. Default is 4 threads

Parameters:
newcount - The new number of worker Threads to use.

getCallInfo

public static DBusCallInfo getCallInfo()
Returns a structure with information on the current method call.

Returns:
the DBusCallInfo for this method call, or null if we are not in a method call.

setWeakReferences

public void setWeakReferences(boolean weakreferences)
If set to true the bus will not hold a strong reference to exported objects. If they go out of scope they will automatically be unexported from the bus. The default is to hold a strong reference, which means objects must be explicitly unexported before they will be garbage collected.


exportObject

public void exportObject(String objectpath,
                         DBusInterface object)
                  throws DBusException
Export an object so that its methods can be called on DBus.

Parameters:
objectpath - The path to the object we are exposing. MUST be in slash-notation, like "/org/freedesktop/Local", and SHOULD end with a capitalised term. Only one object may be exposed on each path at any one time, but an object may be exposed on several paths at once.
object - The object to export.
Throws:
DBusException - If the objectpath is already exporting an object. or if objectpath is incorrectly formatted,

addFallback

public void addFallback(String objectprefix,
                        DBusInterface object)
                 throws DBusException
Export an object as a fallback object. This object will have it's methods invoked for all paths starting with this object path.

Parameters:
objectprefix - The path below which the fallback handles calls. MUST be in slash-notation, like "/org/freedesktop/Local",
object - The object to export.
Throws:
DBusException - If the objectpath is incorrectly formatted,

removeFallback

public void removeFallback(String objectprefix)
Remove a fallback

Parameters:
objectprefix - The prefix to remove the fallback for.

unExportObject

public void unExportObject(String objectpath)
Stop Exporting an object

Parameters:
objectpath - The objectpath to stop exporting.

sendSignal

public void sendSignal(DBusSignal signal)
Send a signal.

Parameters:
signal - The signal to send.

removeSigHandler

public <T extends DBusSignal> void removeSigHandler(Class<T> type,
                                                    DBusSigHandler<T> handler)
                      throws DBusException
Remove a Signal Handler. Stops listening for this signal.

Parameters:
type - The signal to watch for.
Throws:
DBusException - If listening for the signal on the bus failed.
ClassCastException - If type is not a sub-type of DBusSignal.

removeSigHandler

public <T extends DBusSignal> void removeSigHandler(Class<T> type,
                                                    DBusInterface object,
                                                    DBusSigHandler<T> handler)
                      throws DBusException
Remove a Signal Handler. Stops listening for this signal.

Parameters:
type - The signal to watch for.
object - The object emitting the signal.
Throws:
DBusException - If listening for the signal on the bus failed.
ClassCastException - If type is not a sub-type of DBusSignal.

removeSigHandler

protected abstract <T extends DBusSignal> void removeSigHandler(DBusMatchRule rule,
                                                                DBusSigHandler<T> handler)
                                  throws DBusException
Throws:
DBusException

addSigHandler

public <T extends DBusSignal> void addSigHandler(Class<T> type,
                                                 DBusSigHandler<T> handler)
                   throws DBusException
Add a Signal Handler. Adds a signal handler to call when a signal is received which matches the specified type and name.

Parameters:
type - The signal to watch for.
handler - The handler to call when a signal is received.
Throws:
DBusException - If listening for the signal on the bus failed.
ClassCastException - If type is not a sub-type of DBusSignal.

addSigHandler

public <T extends DBusSignal> void addSigHandler(Class<T> type,
                                                 DBusInterface object,
                                                 DBusSigHandler<T> handler)
                   throws DBusException
Add a Signal Handler. Adds a signal handler to call when a signal is received which matches the specified type, name and object.

Parameters:
type - The signal to watch for.
object - The object from which the signal will be emitted
handler - The handler to call when a signal is received.
Throws:
DBusException - If listening for the signal on the bus failed.
ClassCastException - If type is not a sub-type of DBusSignal.

addSigHandler

protected abstract <T extends DBusSignal> void addSigHandler(DBusMatchRule rule,
                                                             DBusSigHandler<T> handler)
                               throws DBusException
Throws:
DBusException

addSigHandlerWithoutMatch

protected <T extends DBusSignal> void addSigHandlerWithoutMatch(Class<? extends DBusSignal> signal,
                                                                DBusSigHandler<T> handler)
                                  throws DBusException
Throws:
DBusException

disconnect

public void disconnect()
Disconnect from the Bus.


finalize

public void finalize()
Overrides:
finalize in class Object

getError

public DBusExecutionException getError()
Return any DBus error which has been received.

Returns:
A DBusExecutionException, or null if no error is pending.

callWithCallback

public <A> void callWithCallback(DBusInterface object,
                                 String m,
                                 CallbackHandler<A> callback,
                                 Object... parameters)
Call a method asynchronously and set a callback. This handler will be called in a separate thread.

Parameters:
object - The remote object on which to call the method.
m - The name of the method on the interface to call.
callback - The callback handler.
parameters - The parameters to call the method with.

callMethodAsync

public DBusAsyncReply callMethodAsync(DBusInterface object,
                                      String m,
                                      Object... parameters)
Call a method asynchronously and get a handle with which to get the reply.

Parameters:
object - The remote object on which to call the method.
m - The name of the method on the interface to call.
parameters - The parameters to call the method with.
Returns:
A handle to the call.

sendMessage

protected void sendMessage(Message m)

getAddress

public BusAddress getAddress()
                      throws ParseException
Returns the address this connection is connected to.

Throws:
ParseException