Sending to Alternate Runners

Mark S. Miller markm@erights.org
Tue, 03 Nov 1998 23:15:36 -0800


At 06:58 PM 11/3/98 , Bill Frantz wrote:
>With some subconscious reflection, I think what I am looking for is the E
>runtime equivalent of a Device Driver API.  I have all these wild Java
>threads that need to communicate with a civilized community of objects that
>live in a vat.  The functions needed include:
>
>Invoking an object in the vat.

[+] Runner.callNow()
http://erights.org/doc/javadoc/org.erights.e.elib.prim.Runner.html#callNow


>Being invoked by an object in the vat.

[?] Can't you just call 'em?


>Waiting for Promises to be broken/kept.

[?] How badly do you need to do this from outside any vats?

I quite like Jeff's approach (in the LDAP stuff I think) to device drivers
-- wrap each separately blockable service in its own "vat".  (scare quotes
since its just like a vat, except that it blocks on this external service).
 In that case, you'd get notified of the resolution of a promise in another
vat if you send an ExternalRef on a notifier in your vat as an argument of
a whenResolved message to an ExternalRef on a promise in another vat.


>At this time, the parameters tend to be pass-by-copy objects like byte
>arrays, but the next application may see things differently.

This is the difference between ExternalRef (which sounds like it should be
adequate for your current needs) on the one hand, and Membranes (not yet
written) or ProxyComm on the other hand.  The ProxyComm system may be way
too heavy for this, but it would work!