SetObject (Subsystem function)
Set a subsystem object (Subsystem class)
The SetObject method makes a given object available with a specified name to the Online or Subsystem. An object made thus available is known as a "system-wide object".
Syntax
[%gen =] %(Subsystem):SetObject( name, object, [testGen])
Syntax terms
%gen | The new generation number associated with name. This is a positive integer (set to 1 the first time the method succeeds) that increases by one each time the name object is updated. gen is set to 0 if the method encounters a problem or if testGen differs from the current generation number of name.
All other errors result in request cancellation. |
---|---|
%(Subsystem) | The class name in parentheses denotes a shared method. SetObject can also be invoked via a Subsystem object variable, which may be null. |
name | The string name by which the system-wide object is identified. |
object | The object variable that becomes the current system-wide object. The object referenced by object must be "deep copyable"). |
testGen | An optional argument, this is an integer that is compared to the current generation number of name. If the values differ, SetObject fails to replace %obj, and it returns a 0 value. |
Examples
- The following example shows how the generation number can be used to make sure that you do not update an object that someone else updated after you got your copy.
%myObj is object myClass ... retry: %gen = %(system):getObject('FOO', %myObj) ... fiddle with the object * Now try to update it if not %(system):setObject('FOO', %myObj, %gen) then * Someone else changed it, let's see what they did jump to retry end if
In this case, when you try to update FOO, FOO's generation is compared with %gen. If the generation number changed, the SetObject call does not succeed, and 0 is returned.