added some data for node events to have a source field to help distinguish what originates from the gui or not

This commit is contained in:
Blake Harnden 2019-11-27 12:55:39 -08:00
parent 354d227cb3
commit d1db5e4b4e
7 changed files with 32 additions and 20 deletions

View file

@ -428,7 +428,7 @@ class CoreGrpcClient:
request = core_pb2.GetNodeRequest(session_id=session_id, node_id=node_id)
return self.stub.GetNode(request)
def edit_node(self, session_id, node_id, position, icon=None):
def edit_node(self, session_id, node_id, position, icon=None, source=None):
"""
Edit a node, currently only changes position.
@ -436,12 +436,17 @@ class CoreGrpcClient:
:param int node_id: node id
:param core_pb2.Position position: position to set node to
:param str icon: path to icon for gui to use for node
:param str source: application source editing node
:return: response with result of success or failure
:rtype: core_pb2.EditNodeResponse
:raises grpc.RpcError: when session or node doesn't exist
"""
request = core_pb2.EditNodeRequest(
session_id=session_id, node_id=node_id, position=position, icon=icon
session_id=session_id,
node_id=node_id,
position=position,
icon=icon,
source=source,
)
return self.stub.EditNode(request)

View file

@ -504,7 +504,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
position=position,
services=services,
)
return core_pb2.NodeEvent(node=node_proto)
return core_pb2.NodeEvent(node=node_proto, source=event.source)
def _handle_link_event(self, event):
"""
@ -800,7 +800,10 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
result = True
try:
session.edit_node(node.id, options)
node_data = node.data(0)
source = None
if request.source:
source = request.source
node_data = node.data(0, source=source)
session.broadcast_node(node_data)
except CoreError:
result = False

View file

@ -76,6 +76,7 @@ NodeData = collections.namedtuple(
"altitude",
"icon",
"opaque",
"source",
],
)
NodeData.__new__.__defaults__ = (None,) * len(NodeData._fields)

View file

@ -176,7 +176,7 @@ class NodeBase:
self.ifindex += 1
return ifindex
def data(self, message_type, lat=None, lon=None, alt=None):
def data(self, message_type, lat=None, lon=None, alt=None, source=None):
"""
Build a data object for this node.
@ -184,6 +184,7 @@ class NodeBase:
:param str lat: latitude
:param str lon: longitude
:param str alt: altitude
:param str source: source of node data
:return: node data object
:rtype: core.emulator.data.NodeData
"""
@ -217,6 +218,7 @@ class NodeBase:
model=model,
server=server,
services=services,
source=source,
)
return node_data