Re: A stab at the sealer in E Ka-Ping Yee (ping@lfw.org)
Wed, 3 Nov 1999 14:04:45 -0800 (PST)

On Wed, 3 Nov 1999, Marc Stiegler wrote:
>
> ? def sealSystemMaker new() : any {
> > def privateCurrentContent := null
> > def sysUnsealer unseal(box) : any {
> > privateCurrentContent := null
> > box offerContent
> > def content := privateCurrentContent
> > privateCurrentContent := null
> > content
> > }
> > def boxMaker new(message) : any {
> > def box {
> > to offerContent {
> > privateCurrentContent := message
> > }
> > }
> > }
> > def sysSealer seal(message) : any {boxMaker new(message)}
> > [sysSealer,sysUnsealer]
> > }

Very interesting! I would have avoided doing something like this for fear of a race condition when attempting to unseal two different envelopes made by the same sealer -- but with E's event model i guess this isn't a problem, is it? This makes it a good example for your class. :)

I suppose you could call mine the "coat-check model" (you get a unique token) in contrast to this "locked-box model" (the unsealer has special access to get the content out of the envelope). I believe you are correct about the garbage collection -- when you run a coat check, there's always the problem of not knowing when people will come back to get their coats. So i think yours is the best solution.

This is eerily reminiscent of the alternative to EQ that Dean proposed...

"The biggest cause of trouble in the world today is that the stupid people are so sure about things and the intelligent folk are so full of doubts."