MCPcopy Create free account
hub / github.com/FreeOpcUa/python-opcua / EventGenerator

Class EventGenerator

opcua/server/event_generator.py:13–109  ·  view source on GitHub ↗

Create an event based on an event type. Per default is BaseEventType used. Object members are dynamically created from the base event type and send to client when event is triggered (see example code in source) Arguments to constructor are: server: The InternalSession obje

Source from the content-addressed store, hash-verified

11
12
13class EventGenerator(object):
14
15 """
16 Create an event based on an event type. Per default is BaseEventType used.
17 Object members are dynamically created from the base event type and send to
18 client when event is triggered (see example code in source)
19
20 Arguments to constructor are:
21
22 server: The InternalSession object to use for query and event triggering
23
24 source: The emiting source for the node, either an objectId, NodeId or a Node
25
26 etype: The event type, either an objectId, a NodeId or a Node object
27 """
28
29 def __init__(self, isession, etype=None, emitting_node=ua.ObjectIds.Server):
30 if not etype:
31 etype = event_objects.BaseEvent()
32
33 self.logger = logging.getLogger(__name__)
34 self.isession = isession
35 self.event = None
36 node = None
37
38 if isinstance(etype, event_objects.BaseEvent):
39 self.event = etype
40 elif isinstance(etype, Node):
41 node = etype
42 elif isinstance(etype, ua.NodeId):
43 node = Node(self.isession, etype)
44 else:
45 node = Node(self.isession, ua.NodeId(etype))
46
47 if node:
48 self.event = events.get_event_obj_from_type_node(node)
49
50 if isinstance(emitting_node, Node):
51 pass
52 elif isinstance(emitting_node, ua.NodeId):
53 emitting_node = Node(isession, emitting_node)
54 else:
55 emitting_node = Node(isession, ua.NodeId(emitting_node))
56
57 self.event.emitting_node = emitting_node.nodeid
58
59 if not self.event.SourceNode:
60 self.event.SourceNode = emitting_node.nodeid
61 self.event.SourceName = emitting_node.get_browse_name().Name
62
63 emitting_node.set_event_notifier([ua.EventNotifier.SubscribeToEvents])
64 refs = []
65 ref = ua.AddReferencesItem()
66 ref.IsForward = True
67 ref.ReferenceTypeId = ua.NodeId(ua.ObjectIds.GeneratesEvent)
68 ref.SourceNodeId = emitting_node.nodeid
69 ref.TargetNodeClass = ua.NodeClass.ObjectType
70 ref.TargetNodeId = self.event.EventType

Callers 1

get_event_generatorMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected