Tequila

Tequila is a Tcl client-server mechanism which lets you transparently share global arrays between clients, with all data automatically stored on a central server. The distribution includes the "TequiCal" demo, a simple distributed yearly calendar. Tequila is an example of scripting which has turned out to be very effective almost overnight, yet it is yearning to be extended in all sorts of ways.

The Tequila homepage is at:

	https://www.equi4.com/tequila/

March 2000 - the Tequila server has been extended with "proxy" support (it's in the 2.01 release). What this means is that a Tequila client can do "tequila::proxy" after a connextion to the server has been set up, and from then on commands like "mk::file", "mk::select", and all the otherse except "mk::loop" are available in the client. They are redirected to the server, execute there, and then results are sent back. This super-lightweight client/server mechanism is a quick way to get a basic form of multi-user capability, and works as a pure-Tcl solution on the client end.

October 2001 - Tequila is in production use in several commercial projects. There are several incarnations of it floating around. The latest revision pushes the client-side of the protocol on startup, using just a little bit of startup code in each client:

  namespace eval tequila {
    variable conn [socket 127.0.0.1 20458]
    fconfigure $conn -translation binary -encoding binary
    puts $conn "B 1.tcl"; flush $conn; uplevel #0 [gets $conn]
  }

As you can see, this is pretty nasty stuff... it all hinges on the client connecting to a trusted server. After that, a lot of things can be done by just adding a line such as this to the client code:

  tequila::shared myarray

From then on, all clients can treat the global "myarray" as being shared between them. Changes from any client are propagated to all others.