What is the
PropsName variable in the Smarts SAM
ics-nl-processing.asl file and how is it used?
PropsName is the name of an object whose class is "ASL_NLData". The following presents the structure for this class:
Class ASL_NLData (MR_MetaObject)
no description available
Attributes for class ASL_NLData
----------------------------------------------------------------------------
CreationClassName (STRING):
The name of the most-derived class of this instance.
NLObjectName (STRING):
The object name of the NL that generated this notification
Name (STRING):
Name of object
ServiceName (STRING):
Name of external server used for imported events and
instrumented attributes.
Operations for class ASL_NLData
----------------------------------------------------------------------------
clone (OBJREF):
Returns a new instance of the same class as the present one,
duplicating the values of all attributes and tables except Name.
ARGS:
(STRING) clone_name
exists (BOOLEAN):
Returns TRUE if the property exists.
ARGS:
(STRING) name
get (STRING):
Retrieve the value for a given property. The empty string is
returned if the property does not exist. See the exists() method if
you need to know if the property exists or not.
ARGS:
(STRING) name
properties (STRING):
Return the set of property names
ARGS:
put (VOID):
Set the value of a property.
ARGS:
(STRING) name
(STRING) value
If we inspect ics-nl-processing.asl, we find the following code:
do { props = self->object("ASL_NLData", localProps); }
... and then later ...
hook->setVariable("PropsName", localProps) ? IGNORE;
So, PropsName is the name of an object whose class is "ASL_NLData". Note the following:
- The ASL_NLData object is used to store the attributes of the notification for easy access by the scripts which process the notification.
- The hookscript is passed the name of the ASL_NLData object in the PropsName variable.
- The hookscript can then access most of the attributes of the notification object by calling the get() method.
- The put() method can be used to update the ASL_NLData object, which may be useful as a way of passing data back to the calling script, but has no other use (it does not update the notification object).
- The advantage to using the ASL_NLData object rather than the notification object directly is that the ASL_NLData object is a local object, existing in the local repository, whereas the notification object might be in a remote repository.
- So, in essence, the object whose name is passed in PropsName is a local cache of most of the attributes of the notification object.
- To find out which attributes of the notification have been cached, inspect the properties attribute, or call the exists() method