| @@ 315-324 (lines=10) @@ | ||
| 312 | ||
| 313 | # insert monitored item into map to avoid notification arrive before result return |
|
| 314 | # server_handle is left as None in purpose as we don't get it yet. |
|
| 315 | with self._lock: |
|
| 316 | for mi in monitored_items: |
|
| 317 | data = SubscriptionItemData() |
|
| 318 | data.client_handle = mi.RequestedParameters.ClientHandle |
|
| 319 | data.node = Node(self.server, mi.ItemToMonitor.NodeId) |
|
| 320 | data.attribute = mi.ItemToMonitor.AttributeId |
|
| 321 | data.mfilter = mi.RequestedParameters.Filter |
|
| 322 | self._monitoreditems_map[mi.RequestedParameters.ClientHandle] = data |
|
| 323 | results = self.server.create_monitored_items(params) |
|
| 324 | mids = [] |
|
| 325 | # process result, add server_handle, or remove it if failed |
|
| 326 | with self._lock: |
|
| 327 | for idx, result in enumerate(results): |
|
| @@ 111-117 (lines=7) @@ | ||
| 108 | ||
| 109 | def __init__(self): |
|
| 110 | super(CustomEvent, self).__init__(extended=True) |
|
| 111 | self.EventType = node.nodeid |
|
| 112 | curr_node = node |
|
| 113 | ||
| 114 | while curr_node.nodeid.Identifier != parent_identifier: |
|
| 115 | for prop in curr_node.get_properties(): |
|
| 116 | setattr(self, prop.get_browse_name().Name, prop.get_value()) |
|
| 117 | parents = curr_node.get_referenced_nodes(refs=ua.ObjectIds.HasSubtype, direction=ua.BrowseDirection.Inverse, includesubtypes=False) |
|
| 118 | if len(parents) != 1: # Something went wrong |
|
| 119 | return None |
|
| 120 | curr_node = parents[0] |
|