Artifact [f1d66eb12d]

Login

Artifact f1d66eb12d94842718a14f3769fbdef416b0a03999444c65732c1a85586a816a:


TIP:		130
Title:		Unique DDE server names.
Version:	$Revision: 1.4 $
Author:		Pat Thoyts <[email protected]>
State:		Final
Tcl-Version:	8.5
Created:	23-Mar-2003
Type:		Project
Vote:		Done
Post-History:	

~ Abstract

The ''dde'' package server registration code should ensure that the
server names are unique. The proposed changes will mean end-user
visible changes for some scripts.

~ Rationale

This TIP is really driven by Bug 219293
[[http://sf.net/tracker/?func=detail&aid=219293&group_id=10894&atid=110894]]

The DDE system actually identifies servers by combination of window ID
and a service and topic string identifier. There is nothing to prevent
multiple servers having the same string identifiers but it is then a
problem to determine which server you need to communicate with.

The ''tk appname'' command handles a similar situation by making the
name unique during registration by appending a numerical suffix to the
suggested name and then returning the name registered as the result of
the command.

~ Proposed Changes

This TIP proposes to use the ''tk appname'' unique name algorithm
within the DDE server-name registration code.  This TIP also proposes a
''-force'' option to this command to force the suggested name to be
registered.  The ''-force'' option would then provide the current
registration scheme.

~ Reference Implementation

See the patch attached to SF patch 690354
[https://sourceforge.net/tracker/?func=detail&aid=690354&group_id=10894&atid=310894]

~ Consequences

Firstly the ''dde servername'' command may register a different name
than that provided to the command.  Scripts will need to check the
name actually registered by either maintaining the result of this
command, or by executing the ''dde servername'' command without any
arguments.  This may impact scripts that assume the supplied argument
was in fact the name registered.

Secondly, the name registration code must obtain a list of the dde
server names currently registered on the system.  It can do this by
effectively calling ''dde services TclEval''.  In previous versions of
the ''dde'' package there is a potential for the ''dde services''
command to hang in the presence of applications that are not
processing messages.  However, this issue has been addressed by Bug
707822's resolution.

~ Copyright

This document is hereby placed in the public domain.