sysConnect()
The function allows to connect to specific system events.
Synopsis
int sysConnect([class object,] string|function_ptr work, string
event]);
Parameters
Parameter | Description |
---|---|
object | Class in which the work function is located. Only necessary if sysConnect function is called from outside of the class. |
work | Work function that is called in case of the event being triggered |
event | Event on which should be connected |
Return value
Returns 0, in case of an error -1 is returned.
Errors
missing/incorrect arguments
Description
The function allows to connect to specific system events and trigger a user defined callback function.
Following events are currently available:
- "exitRequested"
-
This event is triggered the first time a CTRL manager is requested to exit, e.g. either by losing the connection to the event manager or by a stop request from pmon (e.g. project shutdown) or a SIGTERM signal.
Exiting is done in the following steps:
- stop all running scripts (threads/CTRL-modules)
- start "exitRequested" event callback threads
- disconnect everything (e.g. dpConnect, query connects, alertConnect, sysConnect)
When the last thread started for the exitRequest event will stop, the manager stops as well. Be careful that the started threads will not take too long, since on a project shutdown pmon will kill the CTRL manager when it does not terminate in the defined number of seconds (set via console panel). When a second exit request happens while the "exit requested" threads are still running, the manager will terminate immediately without starting any threads again.
The callback receives the exit code (int) as an argument
Note: Can only be used within the context of a CTRL manager.Example
callback(string event, int exitCode)
- "dpCreated", "dpDeleted"
-
The callback gets a mapping as data argument, which holds the following key/value pairs.
- "requesterManagerId"/(int) … the manager ID, e.g. 16843777 - see also the function getManIdFromInt().
- "dp"/(string) ... the datapoint name including the system
- "dpType"/(string) ... the datapoint type name
- "requesterUserId"/(int) ... e.g. 1024 for para
Example
callback(string event, mapping data);
- "dpRenamed"
-
Triggered when a name of a DP was changed. The callback gets a mapping as data argument, which holds the following key/value pairs.
- "requesterManagerId"/(int) … the manager ID, e.g. 16843777 - see also the function getManIdFromInt().
- "oldName"/(string)
- "newName"/(string)
- "dpType"/(string) ... the datapoint type name
- "requesterUserId"/(int) ... e.g. 1024 for para
The DP names include the system name.
- "dpTypeCreated", "dpTypeDeleted"
-
The callback gets a mapping as data argument, which holds the following key/value pairs.
- "requesterManagerId"/(int) … the manager ID, e.g. 16843777 - see also the function getManIdFromInt().
- "system"/(int) ... the system number on which the dpType resides
- "systemName"/(string) ... the system name on which the dpType resides
- "dpType"/(string) ... the name of the dpType
- "requesterUserId"/(int) ... e.g. 1024 for para
- "dpTypeChanged"
-
The callback gets a mapping as data argument, which holds the following key/value pairs.
- "requesterManagerId"/(int) … the manager ID, e.g. 16843777 - see also the function getManIdFromInt().
- "system"/(int) ... the system number on which the dpType resides
- "systemName"/(string) ... the system name on which the dpType resides
- "oldName"/(string) ... in case the dpType's name was changed, contains the old name
- "newName"/(string) ... the current (new) name of the dpType
- "dpType"/(string) ... the current (new) name of the dpType
- "requesterUserId"/(int) ... e.g. 1024 for para
- "redu"
-
In a redundant system this event is always triggered when the active/passive status is changed. The callback receives a mapping as data argument with the following key/value pairs:
- "reason"/(string) ... can be: "active", "passive"
- "hostNum"/(int) ... 1 or 2 (1 = first redu host, 2 = second redu host), from which the status changed.
A manager which is connected to both redu event managers (UI or a CTRL with -connectToRedundantHosts) will trigger 2 callbacks, one for each connection.
- "dist"
-
In a distributed system, this event is triggered when the status of any connection to another system changes. The callback receives a mapping as data argument with the following key/value pairs.
- "reason"/(string) ... can be: "connected", "disconnected", "allDisconnected" when the reason is "allDisconnected", no other member is given in the mapping. For "allDisconnected" the local Dist manager also needs to be stopped.
For connected/disconnected 2 other keys will be present:
- "systemName"/(string) ... the name of the other system
- "system"/(int) ... the system number of the other system
- "dpAlias"
-
The callback gets a mapping as data argument, which holds the following key/value pairs.
- "requesterManagerId"/(int) … the manager ID, e.g. 16843777 - see also the function getManIdFromInt().
- "dp"/(string) ... name of the dp element
- "dpType"/(string) ... the datapoint type name
- "oldName"/(string)
- "newName"/(string)
- "requesterUserId"/(int) ... e.g. 1024 for para
- "dpDescription"
-
The callback gets a mapping as data argument, which holds the following key/value pairs.
- "requesterManagerId"/(int) … the manager ID, e.g. 16843777 - see also the function getManIdFromInt().
- "dp"/(string) ... name of the dp element
- "dpType"/(string) ... the datapoint type name
- "oldText"/(langString)
- "newText"/(langString)
- "requesterUserId"/(int) ... e.g. 1024 for para
- "dpFormatUnit"
-
The callback gets a mapping as data argument, which holds the following key/value pairs.
- "requesterManagerId"/(int) … the manager ID, e.g. 16843777 - see also the function getManIdFromInt().
- "dp"/(string) ... name of the dp element
- "dpType"/(string) ... the datapoint type name
- "oldFormat"/(string)
- "newFormat"/(string)
- "oldUnit"/(string)
- "newUnit"/(string)
- "requesterUserId"/(int) ... e.g. 1024 for para
- "fswPathChanged"
-
The "fswPathChanged" is triggered of a file or folder that is monitored by the FileSystemWatcher is changed, renamed or removed and will return the path of the changed file or folder.
If a file or folder is renamed or removed the FileSystemWatcher will no longer monitor the file/folder. The renamed files or folders must be readded to the FileSystemWatcher by using the function fswAddPath().
For folders the event is triggered if:
- A new file is added to the folder
- A file is renamed within the folder
- A file is removed from within the folder
For files the event is triggered if:
- The content of a file changed
- The file is renamed
- The file is deleted
- The folder containing the file is deleted
Example
main() { fswAddPath("/tmp"); fswAddPath("/someDir/someFile"); sysConnect("pathChanged", "fswPathChanged"); } pathChanged(string eventName, string path) { DebugN(__FUNCTION__, path); }
- "reportRequested"
- The event is triggered when a report should be printed and all report flags that
are currently active (set) are passed to the callback.
Example
main() { sysConnect("cb", "reportRequested"); } cb(string name, dyn_string flags) { DebugN(name, flags); }
Assignment
Miscellaneous functions
Availability
UI, CTRL