[e-lang] Lamport slots with PBC

Martin Scheffler martinscheffler at googlemail.com
Thu Feb 1 14:04:47 CST 2007


>From org.e.erights.elib.slot.makeLamportSlot.emaker:

* Once we support PassByConstruction from E, the lamportSlot/Lamport Cell
 * will be the primary example of presence/unum. It will pass itself by
 * making a new Slot at
 * the new location, and hooking the new Slot up to the Slot being
 * passed so that they update each other appropriately. When this is
 * supported, this presence creation should also follow the reference
 * forking semantics of E's partially ordered messages.

I can't figure out how this is supposed to work.
When I want to create a remote presence of my unum object, I can pbc
the unum object to the remote location. But the remote slots can only
subscribe to updates from my local slots when they have a proxy
reference to them.
So to create and subscribe a slot at a far location I would have to do
something like
	
def myslot:=makeLamportSlot("hi")
def myslotNoPBC extends myslot {
}
remoteObj<-send(myslot, myslotNoPBC)

Or would this be handled by the slot itself? Something like

def slot {
    (...)
    __to optUncall() :any {
        def noPBCSlot extends slot {}
        return [makeSlot, "run", [guard, val, noPBCSlot]
    }
}

BTW is there a less ugly way to pass a PBC object by proxy?

Martin


More information about the e-lang mailing list