things.thinger
Interface SystemSuperInterface

All Superinterfaces:
SystemInterface
All Known Implementing Classes:
KernelBasic, KernelBasicBase

public interface SystemSuperInterface
extends SystemInterface

System Interface used by internal systems.

Version:
1.0

Version History

 EPG - Initial - 8 OCT 03
 EPG - Add user global properties - 19 JUL 07
 
Author:
Erich P. Gatejen

Field Summary
 
Fields inherited from interface things.thinger.SystemInterface
DEFAULT_REPORTING_THRESHOLD
 
Method Summary
 void deathNotice(ThingsException te)
          Typically, this is how a process will tell the kernel it is dying, so that the kernel can clear resources.
 void flingException(ThingsException te)
          Typically, this is a last ditch way for a process or module to pass info to the kernel when something very bad is happening.
 ThingsPropertyView getConfigPropertiesWritable()
          Get the configuration properties that are writable.
 ThingsPropertyView getGlobalProperties()
          Get system global property view.
 ThingsPropertyView getLocalProperties(java.lang.String id)
          Get local property view for the given id.
 ConduitController getSystemConduits()
          Get the system conduit controller.
 ThingsPropertyView getUserGlobalProperties()
          Get user global property view.
 void registerProcess(PCB processPCB, Clearance processClearance)
          Register a ready-made PCB.
 void requestQuit()
          Ask the server to quit.
 WhoAmI startProcess(ThingsProcess processObject, ThingsPropertyView properties)
          Start the passed process.
 WhoAmI startProcess(ThingsProcess processObject, ThingsPropertyView properties, Clearance processClearance)
          Start the passed process.
 
Methods inherited from interface things.thinger.SystemInterface
getCallingProcessId, getConfigProperties, getLocalProperties, getLocalPropertiesImplementation, getLogLocal, getNamedExpressor, getNamedLogger, getProcessInterface, getProcessList, getProcessState, getSharedProperties, getSystemLogger, getUniverse, loadModule, loadThing, requestSuperSystemInterface, runThing, runThing, runThing, waitProcessDone
 

Method Detail

getGlobalProperties

ThingsPropertyView getGlobalProperties()
                                       throws SystemException
Get system global property view. This is primarily for system work.

Returns:
a property view
Throws:
SystemException

getUserGlobalProperties

ThingsPropertyView getUserGlobalProperties()
                                           throws SystemException
Get user global property view. These properties are copied into a user process as local properties when the process is created. It's a snapshot, updated to the original global properties and the new local properties will not affect each other.

Returns:
a property view
Throws:
SystemException

getConfigPropertiesWritable

ThingsPropertyView getConfigPropertiesWritable()
                                               throws SystemException
Get the configuration properties that are writable. Anything that has access to the SSI can touch these.

Returns:
a property view
Throws:
SystemException

getLocalProperties

ThingsPropertyView getLocalProperties(java.lang.String id)
                                      throws SystemException
Get local property view for the given id.

Parameters:
id - String id of the process.
Returns:
a property view or null if the id doesn't identify any known process.
Throws:
SystemException

flingException

void flingException(ThingsException te)
Typically, this is a last ditch way for a process or module to pass info to the kernel when something very bad is happening. There is no feedback loop.

Parameters:
te - a Things exception
Throws:
SystemException
See Also:
WhoAmI

deathNotice

void deathNotice(ThingsException te)
Typically, this is how a process will tell the kernel it is dying, so that the kernel can clear resources. This really should be the LAST thing a process does before exiting run(). If can be used instead of flingException.

Parameters:
te - a Things exception that indicates the reason for the death. It may be null if it was normal termination.
Throws:
SystemException
See Also:
WhoAmI

requestQuit

void requestQuit()
Ask the server to quit.


startProcess

WhoAmI startProcess(ThingsProcess processObject,
                    ThingsPropertyView properties,
                    Clearance processClearance)
                    throws java.lang.Throwable
Start the passed process. Assume a loader will be doing this. The process should be loaded, constructed, but not initialized. If the state is not STATE_CONSTRUCTION, it will throw an exception.

Parameters:
processObject - This will be a ThingsProcess or subclass.
properties - These are properties to add (or supplant) to the processes specific view before starting the process. It is ok to pass null if there are none.
processClearance - specify the process clearance level. This must be at or lower than the calling process's clearance.
Returns:
the ID of the started process.
Throws:
java.lang.Throwable
See Also:
WhoAmI

startProcess

WhoAmI startProcess(ThingsProcess processObject,
                    ThingsPropertyView properties)
                    throws java.lang.Throwable
Start the passed process. Assume a loader will be doing this. The process should be loaded, constructed, but not initialized. If the state is not STATE_CONSTRUCTION, it will throw an exception.
All processes started with this will have DEFAULT_USER_CLEARANCE.

Parameters:
processObject - This will be a ThingsProcess or subclass.
properties - These are properties to add (or supplant) to the processes specific view before starting the process. It is ok to pass null if there are none.
Returns:
the ID of the started process.
Throws:
java.lang.Throwable
See Also:
WhoAmI

registerProcess

void registerProcess(PCB processPCB,
                     Clearance processClearance)
                     throws ThingsException
Register a ready-made PCB. It'll allows you to set the clearance level. The kernel may choose to deny the operation. So normally, use startProcess instead. The process will not be given standard property paths and initialization, as you get with the startProcess method. This exists mostly for debugging and testing, but may be useful for processes that live outside the normal processing framework.

Parameters:
processPCB - This will be a ready-made PCB.
processClearance - The clearance level. This will be immutable.
Throws:
ThingsException

getSystemConduits

ConduitController getSystemConduits()
                                    throws SystemException
Get the system conduit controller. These are for conduits between privileged services.

Returns:
a ConduitController
Throws:
SystemException
See Also:
ConduitController


Things.