org.kde.koala
Class DCOPObject

java.lang.Object
  extended by org.kde.koala.DCOPObject
All Implemented Interfaces:
DCOPObjectInterface, org.kde.qt.QtSupport
Direct Known Subclasses:
KDirNotify

public class DCOPObject
extends java.lang.Object
implements org.kde.qt.QtSupport, DCOPObjectInterface

Provides an interface for receiving DCOP messages. This class provides an interface for receiving DCOP messages. To use it, simply multiply-inherit from DCOPObject and from some other class, and then implement the DCOPObject.process() method. Because this method is pure virtual, you must implement the method. Note that it is usually more convenient to mark a section in the class with "k_dcop:", add your DCOP methods there and let the IDL compiler do the rest. Read the tutorials for more information.

Author:
Preston Brown , Matthias Ettrich
See Also:
DCOPClient, DCOPObjectProxy

Constructor Summary
  DCOPObject()
          Creates a DCOPObject and calculates the object id using its physical memory address.
protected DCOPObject(java.lang.Class dummy)
           
  DCOPObject(org.kde.qt.QObject arg1)
          Creates a DCOPObject and calculates the object id using QObject.name().
  DCOPObject(java.lang.String objId)
          Creates a DCOPObject with object Id objId.
 
Method Summary
 DCOPClient callingDcopClient()
          Returns the DCOPClient responsible for making the call.
 boolean connectDCOPSignal(java.lang.String sender, java.lang.String senderObj, java.lang.String signal, java.lang.String slot, boolean Volatile)
          Connects to a DCOP signal.
 boolean disconnectDCOPSignal(java.lang.String sender, java.lang.String senderObj, java.lang.String signal, java.lang.String slot)
          Disconnects a DCOP signal.
 void dispose()
          Delete the wrapped C++ instance ahead of finalize()
 void emitDCOPSignal(java.lang.String signal, byte[] data)
          Emit signal as DCOP signal from this object with data as arguments
protected  void finalize()
          Deletes the wrapped C++ instance
static DCOPObjectInterface find(java.lang.String objId)
          Try to find a dcop object with the given id.
 java.util.ArrayList functions()
          Returns the list of functions understood by the object.
 java.util.ArrayList functionsDynamic()
          This function is of interest when you used an IDL compiler to generate the implementation for functions() but you still want to list some functions dynamically.
static boolean hasObject(java.lang.String objId)
          Checks whether an object with the given id is known in this process.
 java.util.ArrayList interfaces()
          Returns the names of the interfaces, specific ones last.
 java.util.ArrayList interfacesDynamic()
          This function is of interest when you used an IDL compiler to generate the implementation for interfaces() but you still want to list some interfaces dynamically.
 boolean isDisposed()
          Has the wrapped C++ instance been deleted?
static java.lang.String objectName(org.kde.qt.QObject arg1)
          Creates an object id for the QObject obj. This is done using the QObject.name() function.
 java.lang.String objId()
          Returns the object id of the DCOPObject.
 boolean process(java.lang.String fun, byte[] data, java.lang.StringBuffer replyType, byte[] replyData)
          Dispatches a message.
 boolean processDynamic(java.lang.String fun, byte[] data, java.lang.StringBuffer replyType, byte[] replyData)
          This function is of interest when you used an IDL compiler to generate the implementation for process() but you still want to dispatch some functions dynamically.
 void setCallingDcopClient(DCOPClient arg1)
           
 boolean setObjId(java.lang.String objId)
          Renames a dcop object, if no other with the same name exists Use with care, all dcop signals are disconnected
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DCOPObject

protected DCOPObject(java.lang.Class dummy)

DCOPObject

public DCOPObject()
Creates a DCOPObject and calculates the object id using its physical memory address.


DCOPObject

public DCOPObject(org.kde.qt.QObject arg1)
Creates a DCOPObject and calculates the object id using QObject.name().

Parameters:
obj - the object to extract the name from

DCOPObject

public DCOPObject(java.lang.String objId)
Creates a DCOPObject with object Id objId.

Parameters:
objId - the object id of the DCOP object
Method Detail

objId

public java.lang.String objId()
Returns the object id of the DCOPObject.

Specified by:
objId in interface DCOPObjectInterface
Returns:
the object's id

setObjId

public boolean setObjId(java.lang.String objId)
Renames a dcop object, if no other with the same name exists Use with care, all dcop signals are disconnected

Specified by:
setObjId in interface DCOPObjectInterface
Parameters:
objId - the new object id

process

public boolean process(java.lang.String fun,
                       byte[] data,
                       java.lang.StringBuffer replyType,
                       byte[] replyData)
Dispatches a message. Usually you want to use an IDL compiler to automatically generate an implementation for this function. If this function returns false, then processDynamic() is called. Note to implementators: remember to call the baseclasses implementation. It handles the functions "functions()" and "interfaces()" which return the lists of supported functions and interfaces, respectively.

Specified by:
process in interface DCOPObjectInterface
Parameters:
fun - is the normalized function signature. Such a signature usually looks like foobar(String,int). The return type, qualifiers like "const" etc. are not part of the signature.
data - the received data
replyType - write the reply type in this string
replyData - write the reply data in this array
Returns:
true if successful, false otherwise. The default implementation returns false for all fun except "functions()" and "interfaces()".
See Also:
DCOPClient.normalizeFunctionSignature(java.lang.String), functions(), DCOPClient.process(java.lang.String, byte[], java.lang.StringBuffer, byte[])

processDynamic

public boolean processDynamic(java.lang.String fun,
                              byte[] data,
                              java.lang.StringBuffer replyType,
                              byte[] replyData)
This function is of interest when you used an IDL compiler to generate the implementation for process() but you still want to dispatch some functions dynamically. Dynamically means that methods may appear and vanish during runtime.

Specified by:
processDynamic in interface DCOPObjectInterface
Parameters:
fun - is the normalized function signature. Such a signature usually looks like foobar(String,int). The return type, qualifiers like "const" etc. are not part of the signature.
data - the received data
replyType - write the reply type in this string
replyData - write the reply data in this array
Returns:
true if successful, false otherwise. The default implementation returns always false.
See Also:
process(java.lang.String, byte[], java.lang.StringBuffer, byte[]), DCOPClient.normalizeFunctionSignature(java.lang.String), functions(), DCOPClient.process(java.lang.String, byte[], java.lang.StringBuffer, byte[])

functionsDynamic

public java.util.ArrayList functionsDynamic()
This function is of interest when you used an IDL compiler to generate the implementation for functions() but you still want to list some functions dynamically. Dynamically means that the methods may appear and vanish during runtime.

Specified by:
functionsDynamic in interface DCOPObjectInterface
Returns:
A list of the additional functions, default is an empty list.
See Also:
functions()

interfacesDynamic

public java.util.ArrayList interfacesDynamic()
This function is of interest when you used an IDL compiler to generate the implementation for interfaces() but you still want to list some interfaces dynamically. Dynamically means that they may appear and vanish during runtime.

Specified by:
interfacesDynamic in interface DCOPObjectInterface
Returns:
A list of the additional interfaces, default is an empty list.
See Also:
interfaces()

interfaces

public java.util.ArrayList interfaces()
Returns the names of the interfaces, specific ones last. The functions gets reimplemented by the IDL compiler. If you don't use the IDL compiler, consider implementing this function manually if you want your object to be easily explorable.

Specified by:
interfaces in interface DCOPObjectInterface
Returns:
a list of interfaces
See Also:
functions()

functions

public java.util.ArrayList functions()
Returns the list of functions understood by the object. It gets reimplemented by the IDL compiler. If you don't use the IDL compiler, consider implementing this function manually if you want your object to be easily scriptable. Rationale: functions() allows an interpreter to do client-side type-casting properly. Note to implementators: remember to call the baseclasses implementation.

Specified by:
functions in interface DCOPObjectInterface
Returns:
a list of functions
See Also:
interfaces(), process(java.lang.String, byte[], java.lang.StringBuffer, byte[]), processDynamic(java.lang.String, byte[], java.lang.StringBuffer, byte[]), DCOPClient.normalizeFunctionSignature(java.lang.String)

emitDCOPSignal

public void emitDCOPSignal(java.lang.String signal,
                           byte[] data)
Emit signal as DCOP signal from this object with data as arguments

Specified by:
emitDCOPSignal in interface DCOPObjectInterface
Parameters:
signal - the signal to emit
data - the data to send

connectDCOPSignal

public boolean connectDCOPSignal(java.lang.String sender,
                                 java.lang.String senderObj,
                                 java.lang.String signal,
                                 java.lang.String slot,
                                 boolean Volatile)
Connects to a DCOP signal.

Specified by:
connectDCOPSignal in interface DCOPObjectInterface
Parameters:
sender - the name of the client that emits the signal. When empty the signal will be passed from any client.
senderObj - the name of the sending object that emits the signal.
signal - the name of the signal. The arguments should match with slot.
slot - The name of the slot to call. Its arguments should match with signal.
Volatile - If true, the connection will not be reestablished when sender unregisters and reregisters with DCOP. In this case the sender must be registered when the connection is made. If false, the connection will be reestablished when sender reregisters. In this case the connection can be made even if sender is not registered at that time.
  • Volatile is true and sender does not exist.
  • signal and slot do not have matching arguments.
  • @return false if a connection could not be established. This will be the case when

    disconnectDCOPSignal

    public boolean disconnectDCOPSignal(java.lang.String sender,
                                        java.lang.String senderObj,
                                        java.lang.String signal,
                                        java.lang.String slot)
    Disconnects a DCOP signal. A special case is when both sender & signal are empty. In this case all connections related to this object in the current client are disconnected. (Both connections from as well as to this object!)

    Specified by:
    disconnectDCOPSignal in interface DCOPObjectInterface
    Parameters:
    sender - the name of the client that emits the signal.
    senderObj - the name of the object that emits the signal. If empty all objects will be disconnected.
    signal - the name of the signal. The arguments should match with slot. If empty all objects will be disconnected.
    slot - The name of the slot the signal is connected to. If empty all slots will be disconnected.
    Returns:
    false if no connection(s) where removed.

    callingDcopClient

    public DCOPClient callingDcopClient()
    Returns the DCOPClient responsible for making the call. Only call this function while you are handling a DCOP call.

    Specified by:
    callingDcopClient in interface DCOPObjectInterface
    Returns:
    the DCOPClient responsible for making the call. This information is only guaranteed to be correct when entering your DCOP function.

    setCallingDcopClient

    public void setCallingDcopClient(DCOPClient arg1)
    Specified by:
    setCallingDcopClient in interface DCOPObjectInterface

    hasObject

    public static boolean hasObject(java.lang.String objId)
    Checks whether an object with the given id is known in this process. DCOPObjectProxy

    Returns:
    true if an object with the questionable objId is known in this process. This query does not ask proxies.

    find

    public static DCOPObjectInterface find(java.lang.String objId)
    Try to find a dcop object with the given id. This function does not query the DCOPObjectProxy.

    Parameters:
    objId - the object id to search
    Returns:
    the DCOPObject for the id objId.

    objectName

    public static java.lang.String objectName(org.kde.qt.QObject arg1)
    Creates an object id for the QObject obj. This is done using the QObject.name() function.

    Parameters:
    obj - the object whose name will be used
    Returns:
    the created object id

    finalize

    protected void finalize()
                     throws java.lang.InternalError
    Deletes the wrapped C++ instance

    Overrides:
    finalize in class java.lang.Object
    Throws:
    java.lang.InternalError

    dispose

    public void dispose()
    Delete the wrapped C++ instance ahead of finalize()


    isDisposed

    public boolean isDisposed()
    Has the wrapped C++ instance been deleted?