The system topic is implemented as a predefined dispatching topic called :system
. It is automatically available to all defined DDE servers. Its class is dde-system-topic
, which is a subclass of dde-dispatching-topic
.
The following items are implemented by the system topic:
The constant SZDDESYS_ITEM_TOPICS
has the value " Topics"
. Referring to this item in the system topic calls dde-server-topics
to obtain a list of topics implemented by the server. The server should define a method on this generic function to return a list of strings naming the topics supported by the server. If this item is not to be implemented, do not define a method on the function, or define a method that returns :unknown
.
The constant SZDDESYS_ITEM_SYSITEMS
has the value " SysItems
". Referring to this item in the system topic calls dde-topic-items
to obtain a list of items implemented by the system topic. If a server implements additional system topic items it should define a method on the generic function specialized on its server class and dde-system-topic
returning the complete list of supported topics. The server can return :unknown
if this item is not to be implemented.
The constant SZDDESYS_ITEM_FORMATS
has the value " Formats
", and returns unicodetext
and text
. Currently only text formats are supported.
The system topic is a single object which is used by all DDE servers running in the Lisp image. You should therefore not under normal circumstances modify it with define-dde-server-function
by specifying a value of :system
for the topic argument, as this would make the changes to the system topic visible to all users of DDE within the Lisp image.
Instead, specify :server
my-server :topic :system
, where my-server is the name of your DDE server. This makes the additional items available only on the system topic of the specified server.