JanosVM v1.0 API

java.lang.isolate
Class AggregateStateManager

java.lang.Object
  |
  +--java.lang.isolate.AggregateStateManager

class AggregateStateManager
extends java.lang.Object

A global map of aggregate-wide Isolate state.

All globally useful state related to an isolate is kept here, in IsolateStatus objects. The IsolateStatus is Exportable (exported under the isolate's GUID). All this state may continue to exist after an isolate has terminated (any active handle on the isolate may query this or may create an EventLink to the isolate).

The parent isolate will advance a new isolate from 'INVALID' to 'NEWBORN' to 'STARTING'. The main thread of the isolate will advance it to 'RUNNING'. The IsolateBackEnd in the isolate will advance it to 'DYING' and 'DEAD'. Thus we avoid race conditions.

XXX: Kernel entry/exit on each method is really verbose and ugly.


Inner Class Summary
(package private) static class AggregateStateManager.EventStatusHandle
          A handle on an IsolateStatus used by an EventLink (enables state tracking in the IsolateStatus).
private static class AggregateStateManager.IsolateStatus
          Global state for a single isolate.
(package private) static class AggregateStateManager.IsolateStatusHandle
          A handle on an IsolateStatus for use by an Isolate object.
 
Field Summary
private static java.lang.String EXIT_ON_LAST
           
private  int isolateCount
           
private  java.lang.Object lock
           
 
Constructor Summary
(package private) AggregateStateManager()
           
 
Method Summary
(package private)  void isolateDied(IsolateBackEnd ibe)
          Invoked by IsolateBackEnd.event(edu.utah.janosvm.sys.EventTeamHandle, edu.utah.janosvm.sys.TeamReservation, edu.utah.janosvm.sys.TeamEvent) to indicate when the given isolate has died.
(package private)  AggregateStateManager.EventStatusHandle newEventHandleOn(java.lang.Long targetGUID)
           
(package private)  AggregateStateManager.IsolateStatusHandle newHandleOn(java.lang.Long targetGUID)
          Create a new handle on the given Isolate's IsolateState
(package private)  AggregateStateManager.IsolateStatusHandle newHandleOn(java.lang.Long targetGUID, IsolateServer isoServer)
          Create a new handle on the given Isolate's IsolateState
(package private)  AggregateStateManager.IsolateStatusHandle registerNewIsolate(java.lang.Long targetGUID)
           
(package private)  AggregateStateManager.IsolateStatusHandle registerNewIsolate(java.lang.Long targetGUID, IsolateServer isoServer)
          Register a new isolate with the aggregate.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait, wait0
 

Field Detail

EXIT_ON_LAST

private static final java.lang.String EXIT_ON_LAST

lock

private final java.lang.Object lock

isolateCount

private int isolateCount
Constructor Detail

AggregateStateManager

AggregateStateManager()
Method Detail

registerNewIsolate

AggregateStateManager.IsolateStatusHandle registerNewIsolate(java.lang.Long targetGUID)

registerNewIsolate

AggregateStateManager.IsolateStatusHandle registerNewIsolate(java.lang.Long targetGUID,
                                                             IsolateServer isoServer)
Register a new isolate with the aggregate. Invoked exactly once for each isolate (see {@linkIsolate#Isolate}).

newHandleOn

AggregateStateManager.IsolateStatusHandle newHandleOn(java.lang.Long targetGUID)
Create a new handle on the given Isolate's IsolateState

newHandleOn

AggregateStateManager.IsolateStatusHandle newHandleOn(java.lang.Long targetGUID,
                                                      IsolateServer isoServer)
Create a new handle on the given Isolate's IsolateState

newEventHandleOn

AggregateStateManager.EventStatusHandle newEventHandleOn(java.lang.Long targetGUID)

isolateDied

void isolateDied(IsolateBackEnd ibe)
Invoked by IsolateBackEnd.event(edu.utah.janosvm.sys.EventTeamHandle, edu.utah.janosvm.sys.TeamReservation, edu.utah.janosvm.sys.TeamEvent) to indicate when the given isolate has died.

Warning: Invoked in the context of an arbitrary team


JanosVM v1.0 API

This documentation is Copyright (C) 2000-2003 The University of Utah. All Rights Reserved. See the documentation license for distribution terms and restrictions.
Documentation, software, and mailing lists for the JanosVM can be found at the Janos Project web page: http://www.cs.utah.edu/flux/janos/
Generated on Feb 13, 2003