Re: Yet Another Choreography Specification

Assaf Arkin wrote,
> I never thought of it that way, but you are absolutely right!
>
> You could say that a file stream or a datagram are processes that are
> passed by name from one process (isolate) to another process
> (isolate). And of course an isolate process could be passed by name
> to another isolate process.

At the risk of cluttering this list with OT postings ...

You could, but it's actually IsolateMessages containing Links that are 
the real manifestation of mobility. I prefer to think of the other I/O 
types as being closer to capabilities (tho' I'd agree that there are a 
lot of connections between mobility and capabilities).

Here's a Link example ... we have a manager isolate which controls 
access to a resource-providing isolate. Clients request a link to the 
resource isolate from the manager, then communicate with the resource 
via that link,

// In the client

  Link returnLink = Link.newLink(manager, Isolate.currentIsolate());

  IsolateMessage request =
    IsolateMessage.newCompositeMessage(
      new IsolateMessage[] {
        IsolateMessage.newIsolateMessage(Isolate.currentIsolate())
        IsolateMessage.newLinkMessage(returnLink) });

  linkToManager.send(request);

  Link accessLink = returnLink.receive().getLink();

  // now communicate with resource via accessLink ...

// In the manager

  IsolateMessage[] request = linkFromClient.receive().getComposite();
  Isolate client = request[0].getIsolate();
  Link returnLink = request[1].getLink();

  Link accessLink = Link.newLink(client, resource);
  IsolateMessage accessLinkMsg =
    IsolateMessage.newLinkMessage(clientLinkToResource);

  linkToResource.send(accessLink);
  returnLink.send(accessLink);
  
// In the resource

  Link accessLink = managerLink.receive().getLink();

  // now communicate with the client via accessLink

If you've done much with Pi, this should seem fairly familiar.

Cheers,


Miles

Received on Friday, 31 January 2003 13:51:15 UTC