On 18.09.2006, at 23:03, Stephen Deasey wrote:


I mean that

    Ns_ProxyGet()

might be appropriate for C programmers, but that doesn't mean that

    ns_proxy get

is for Tcl programmers.  It's not just about level of difficulty
either. Mapping the low level C APIs directly seems to add a lot of
difficulty, because you have to take account of the Tcl environment
and all the crazy things that you just don't allow in the C API.

Aha. Well, in that particular case, the [ns_proxy get] is not bad at all! You get the handle of "something" that you use to do all kinds of things.
Later on, when you're done with it, you [ns_proxy put] itback, allowing
others to use the same "something"

How would you make this in a "Tcl way"?

After  all, you [open] the channel, then you [puts] to it and then
[close] it. What is not OK here?

I think I know where are you heading and I can understand the idea
but this particular example may not be optimal.

I believe you are thinking about something like this:

  ns_mutex lock $lock
  do bla bla bla
  ns_mutex unlock $lock

The "optimal" way to do that would really be:

   ns_mutex lock $lock {
      do bla bla bla
   }

as it will save you the trouble if "do bla bla" throws error.
In the latter case you must ugly things like

  ns_mutex lock $lock
  if {[catch {do bla bla} err]} {
      ns_mutex unlock $lock
      error $err
  }
  ns_mutex unlock $lock

which is just plain rubbish (because of which we had to invent
our own do/catch/finally command)...

I will take more time to answer on your nsproxy email
as this two are really comming close...



Reply via email to