grpc: updated node events to leverage the common grpcutils.get_node_proto so that service and emane config data will be included
This commit is contained in:
parent
f422d05215
commit
a3892d6b0e
1 changed files with 7 additions and 22 deletions
|
@ -2,7 +2,7 @@ import logging
|
||||||
from queue import Empty, Queue
|
from queue import Empty, Queue
|
||||||
from typing import Iterable, Optional
|
from typing import Iterable, Optional
|
||||||
|
|
||||||
from core.api.grpc import core_pb2
|
from core.api.grpc import core_pb2, grpcutils
|
||||||
from core.api.grpc.grpcutils import convert_link_data
|
from core.api.grpc.grpcutils import convert_link_data
|
||||||
from core.emulator.data import (
|
from core.emulator.data import (
|
||||||
ConfigData,
|
ConfigData,
|
||||||
|
@ -13,37 +13,22 @@ from core.emulator.data import (
|
||||||
NodeData,
|
NodeData,
|
||||||
)
|
)
|
||||||
from core.emulator.session import Session
|
from core.emulator.session import Session
|
||||||
from core.nodes.base import CoreNodeBase
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def handle_node_event(node_data: NodeData) -> core_pb2.Event:
|
def handle_node_event(session: Session, node_data: NodeData) -> core_pb2.Event:
|
||||||
"""
|
"""
|
||||||
Handle node event when there is a node event
|
Handle node event when there is a node event
|
||||||
|
|
||||||
|
:param session: session node is from
|
||||||
:param node_data: node data
|
:param node_data: node data
|
||||||
:return: node event that contains node id, name, model, position, and services
|
:return: node event that contains node id, name, model, position, and services
|
||||||
"""
|
"""
|
||||||
node = node_data.node
|
node = node_data.node
|
||||||
x, y, _ = node.position.get()
|
emane_configs = grpcutils.get_emane_model_configs_dict(session)
|
||||||
position = core_pb2.Position(x=x, y=y)
|
node_emane_configs = emane_configs.get(node.id, [])
|
||||||
lon, lat, alt = node.position.get_geo()
|
node_proto = grpcutils.get_node_proto(session, node, node_emane_configs)
|
||||||
geo = core_pb2.Geo(lon=lon, lat=lat, alt=alt)
|
|
||||||
services = [x.name for x in node.services]
|
|
||||||
config_services = []
|
|
||||||
if isinstance(node, CoreNodeBase):
|
|
||||||
config_services = [x for x in node.config_services]
|
|
||||||
node_proto = core_pb2.Node(
|
|
||||||
id=node.id,
|
|
||||||
name=node.name,
|
|
||||||
model=node.model,
|
|
||||||
icon=node.icon,
|
|
||||||
position=position,
|
|
||||||
geo=geo,
|
|
||||||
services=services,
|
|
||||||
config_services=config_services,
|
|
||||||
)
|
|
||||||
message_type = node_data.message_type.value
|
message_type = node_data.message_type.value
|
||||||
node_event = core_pb2.NodeEvent(message_type=message_type, node=node_proto)
|
node_event = core_pb2.NodeEvent(message_type=message_type, node=node_proto)
|
||||||
return core_pb2.Event(node_event=node_event, source=node_data.source)
|
return core_pb2.Event(node_event=node_event, source=node_data.source)
|
||||||
|
@ -194,7 +179,7 @@ class EventStreamer:
|
||||||
try:
|
try:
|
||||||
data = self.queue.get(timeout=1)
|
data = self.queue.get(timeout=1)
|
||||||
if isinstance(data, NodeData):
|
if isinstance(data, NodeData):
|
||||||
event = handle_node_event(data)
|
event = handle_node_event(self.session, data)
|
||||||
elif isinstance(data, LinkData):
|
elif isinstance(data, LinkData):
|
||||||
event = handle_link_event(data)
|
event = handle_link_event(data)
|
||||||
elif isinstance(data, EventData):
|
elif isinstance(data, EventData):
|
||||||
|
|
Loading…
Reference in a new issue