grpc added create session and set session location

This commit is contained in:
bharnden 2019-02-24 07:44:41 -08:00
parent e819b706bc
commit fcff9e4551
3 changed files with 98 additions and 6 deletions

View file

@ -1,4 +1,4 @@
from core.enumerations import NodeTypes
from core.enumerations import NodeTypes, EventTypes
from concurrent import futures
import time
@ -81,6 +81,27 @@ class CoreApiServer(core_pb2_grpc.CoreApiServicer):
super(CoreApiServer, self).__init__()
self.coreemu = coreemu
def CreateSession(self, request, context):
session = self.coreemu.create_session()
session.set_state(EventTypes.DEFINITION_STATE)
# default set session location
session.location.setrefgeo(47.57917, -122.13232, 2.0)
session.location.refscale = 150000.0
# grpc stream handlers
# session.event_handlers.append(websocket_routes.broadcast_event)
# session.node_handlers.append(websocket_routes.broadcast_node)
# session.config_handlers.append(websocket_routes.broadcast_config)
# session.link_handlers.append(websocket_routes.broadcast_link)
# session.exception_handlers.append(websocket_routes.broadcast_exception)
# session.file_handlers.append(websocket_routes.broadcast_file)
response = core_pb2.CreateSessionResponse()
response.id = session.session_id
response.state = session.state
return response
def GetSessions(self, request, context):
response = core_pb2.SessionsResponse()
for session_id in self.coreemu.sessions:
@ -95,7 +116,7 @@ class CoreApiServer(core_pb2_grpc.CoreApiServicer):
session = self.coreemu.sessions.get(request.id)
x, y, z = session.location.refxyz
lat, lon, alt = session.location.refgeo
response = core_pb2.SessionLocationResponse()
response = core_pb2.GetSessionLocationResponse()
update_proto(
response.position,
x=x,
@ -108,6 +129,15 @@ class CoreApiServer(core_pb2_grpc.CoreApiServicer):
update_proto(response, scale=session.location.refscale)
return response
def SetSessionLocation(self, request, context):
session = self.coreemu.sessions.get(request.id)
session.location.refxyz = (request.position.x, request.position.y, request.position.z)
session.location.setrefgeo(request.position.lat, request.position.lon, request.position.alt)
session.location.refscale = request.scale
return core_pb2.SetSessionLocationResponse()
def GetSessionOptions(self, request, context):
session = self.coreemu.sessions.get(request.id)
config = session.options.get_configs()