From Wikipedia, the free encyclopedia
Jump to: navigation, search

Desktop COmmunication Protocol (DCOP) was a light-weight interprocess and software componentry communication system. The design goal for the system was to allow applications to interoperate, and share complex tasks. Essentially, DCOP was a ‘remote control’ system, which allowed applications or scripts to enlist the help of other applications. It was built on top of the X Window System’s Inter-Client Exchange protocol.

The use of DCOP provides extensive new capabilities, without requiring entirely new applications to be written, as might otherwise be the case. KDE applications and the KDE libraries did make heavy use of DCOP and most of the KDE applications can be controlled by scripts via the DCOP mechanism. DCOP was replaced by D-Bus in KDE Software Compilation 4.

There is a command-line tool called ‘dcop’ (note the lower-case letters) that can be used for communication with the applications from the shell. ‘kdcop’ is a GUI tool to explore the interfaces of an application.

DCOP model[edit]

The model is simple. Each application using DCOP is a client. They communicate to each other through a DCOP server, which functions like a traffic director, dispatching messages/calls to the proper destinations. All clients are peers of each other.

Two types of actions are possible with DCOP: "send and forget" messages, which do not block, and "calls," which block waiting for some data to be returned.

Any data that will be sent is serialized (also referred to as marshalling in CORBA speak) using the built-in QDataStream operators available in all of the Qt classes. There is also a simple IDL-like compiler available (dcopidl and dcopidl2cpp) that generates stubs and skeletons. Using the dcopidl compiler has the additional benefit of type safety.

D-Bus, a message bus system standardized by freedesktop.org, was heavily influenced by the DCOP system and replaces DCOP in KDE Software Compilation 4.

DCOP continues to be used by the Trinity Desktop Environment.

See also[edit]

External links[edit]