Legion 1.4
System Administrator Manual

7.0 Legion core objects

The Legion core object model specifies the composition and functionality of Legion's core objects--those objects that cooperate to create, locate, manage, and remove objects in the Legion system. Legion provides implementations of the objects that comprise the core, but users are not obligated to use them.

Although the object model includes, and relies on, a few single logical Legion objects, access to these objects is limited because of heavy caching and hierarchical organization of lower level objects. Objects can be replicated to reduce any contention, and an increase in the number of Legion computing resources will not increase competition for the few "centralized" Legion objects.

In the Legion object model, each Legion object belongs to a class, and each class is itself a Legion object. All Legion objects export a common set of object-mandatory member functions, including save_state() and restore_state(). Class objects export an additional set of class-mandatory member functions, including create(), derive(), and inherit_from(). The power of the object model comes from the important role of Legion classes. Much of what is usually considered system-level responsibility is delegated to user-level class objects. Legion classes are responsible for creating and locating their instances and subclasses, and for selecting appropriate security and object placement policies. The core Legion objects simply provide mechanisms for user-level classes to implement the policies and algorithms that they choose. Assuming that we define the operations on core objects appropriately (i.e., that they are the right set of primitive operations to enable a wide enough range of policies to be implemented), this philosophy effectively eliminates the danger of imposing inappropriate policy decisions, and opens up a much wider range of possibilities for the applications developer.

7.1 Core class objects

There are six core objects: LegionObject, LegionBindingAgent, LegionHost, LegionVault, ContextObject, and ImplementationObject. From these, the core class types--hosts, vaults, and binding agents--are derived. The core classes set the minimal interface that the core objects export. Every core object is an instance of some class that is eventually derived from one of the class objects above.

For more detailed information on the Legion core objects, please see About core objects in the Developer Manual.

Back to System Administrator Manual Table of Contents