|
2 | 2 | from queue import Empty, Queue
|
3 | 3 | from typing import Iterable, Optional
|
4 | 4 |
|
5 |
| -from core.api.grpc import core_pb2 |
| 5 | +from core.api.grpc import core_pb2, grpcutils |
6 | 6 | from core.api.grpc.grpcutils import convert_link_data
|
7 | 7 | from core.emulator.data import (
|
8 | 8 | ConfigData,
|
|
17 | 17 | logger = logging.getLogger(__name__)
|
18 | 18 |
|
19 | 19 |
|
20 |
| -def handle_node_event(node_data: NodeData) -> core_pb2.Event: |
| 20 | +def handle_node_event(session: Session, node_data: NodeData) -> core_pb2.Event: |
21 | 21 | """
|
22 | 22 | Handle node event when there is a node event
|
23 | 23 |
|
| 24 | + :param session: session node is from |
24 | 25 | :param node_data: node data
|
25 | 26 | :return: node event that contains node id, name, model, position, and services
|
26 | 27 | """
|
27 | 28 | node = node_data.node
|
28 |
| - x, y, _ = node.position.get() |
29 |
| - position = core_pb2.Position(x=x, y=y) |
30 |
| - lon, lat, alt = node.position.get_geo() |
31 |
| - geo = core_pb2.Geo(lon=lon, lat=lat, alt=alt) |
32 |
| - services = [x.name for x in node.services] |
33 |
| - node_proto = core_pb2.Node( |
34 |
| - id=node.id, |
35 |
| - name=node.name, |
36 |
| - model=node.model, |
37 |
| - icon=node.icon, |
38 |
| - position=position, |
39 |
| - geo=geo, |
40 |
| - services=services, |
41 |
| - ) |
| 29 | + emane_configs = grpcutils.get_emane_model_configs_dict(session) |
| 30 | + node_emane_configs = emane_configs.get(node.id, []) |
| 31 | + node_proto = grpcutils.get_node_proto(session, node, node_emane_configs) |
42 | 32 | message_type = node_data.message_type.value
|
43 | 33 | node_event = core_pb2.NodeEvent(message_type=message_type, node=node_proto)
|
44 | 34 | return core_pb2.Event(node_event=node_event, source=node_data.source)
|
@@ -189,7 +179,7 @@ def process(self) -> Optional[core_pb2.Event]:
|
189 | 179 | try:
|
190 | 180 | data = self.queue.get(timeout=1)
|
191 | 181 | if isinstance(data, NodeData):
|
192 |
| - event = handle_node_event(data) |
| 182 | + event = handle_node_event(self.session, data) |
193 | 183 | elif isinstance(data, LinkData):
|
194 | 184 | event = handle_link_event(data)
|
195 | 185 | elif isinstance(data, EventData):
|
|
0 commit comments