grpc added listen to server class and updated server/client to specify grpc in their names

This commit is contained in:
bharnden 2019-03-21 22:56:33 -07:00
parent 16d9009c3f
commit 0c0ff95fb6
3 changed files with 26 additions and 26 deletions

View file

@ -38,7 +38,7 @@ def start_streamer(stream, handler):
thread.start() thread.start()
class CoreApiClient(object): class CoreGrpcClient(object):
def __init__(self, address="localhost:50051"): def __init__(self, address="localhost:50051"):
self.address = address self.address = address
self.stub = None self.stub = None
@ -463,7 +463,7 @@ class CoreApiClient(object):
def main(): def main():
xml_file_name = "/tmp/core.xml" xml_file_name = "/tmp/core.xml"
client = CoreApiClient() client = CoreGrpcClient()
with client.context_connect(): with client.context_connect():
if os.path.exists(xml_file_name): if os.path.exists(xml_file_name):
response = client.open_xml(xml_file_name) response = client.open_xml(xml_file_name)
@ -473,12 +473,12 @@ def main():
# create session # create session
session_data = client.create_session() session_data = client.create_session()
client.exception_events(session_data.id, lambda x: print(type(x))) client.exception_events(session_data.id, lambda x: print(x))
client.node_events(session_data.id, lambda x: print(type(x))) client.node_events(session_data.id, lambda x: print(x))
client.session_events(session_data.id, lambda x: print(type(x))) client.session_events(session_data.id, lambda x: print(x))
client.link_events(session_data.id, lambda x: print(type(x))) client.link_events(session_data.id, lambda x: print(x))
client.file_events(session_data.id, lambda x: print(type(x))) client.file_events(session_data.id, lambda x: print(x))
client.config_events(session_data.id, lambda x: print(type(x))) client.config_events(session_data.id, lambda x: print(x))
print("created session: {}".format(session_data)) print("created session: {}".format(session_data))
print("default services: {}".format(client.get_service_defaults(session_data.id))) print("default services: {}".format(client.get_service_defaults(session_data.id)))
print("emane models: {}".format(client.get_emane_models(session_data.id))) print("emane models: {}".format(client.get_emane_models(session_data.id)))

View file

@ -211,9 +211,9 @@ def send_objects(session):
logging.debug("informed GUI about %d nodes and %d links", len(nodes_data), len(links_data)) logging.debug("informed GUI about %d nodes and %d links", len(nodes_data), len(links_data))
class CoreApiServer(core_pb2_grpc.CoreApiServicer): class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
def __init__(self, coreemu): def __init__(self, coreemu):
super(CoreApiServer, self).__init__() super(CoreGrpcServer, self).__init__()
self.coreemu = coreemu self.coreemu = coreemu
self.running = True self.running = True
atexit.register(self._exit_handler) atexit.register(self._exit_handler)
@ -228,6 +228,19 @@ class CoreApiServer(core_pb2_grpc.CoreApiServicer):
def _cancel_stream(self, context): def _cancel_stream(self, context):
context.abort(grpc.StatusCode.CANCELLED, "server stopping") context.abort(grpc.StatusCode.CANCELLED, "server stopping")
def listen(self, address="[::]:50051"):
logging.info("starting grpc api: %s", address)
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
core_pb2_grpc.add_CoreApiServicer_to_server(self, server)
server.add_insecure_port(address)
server.start()
try:
while True:
time.sleep(_ONE_DAY_IN_SECONDS)
except KeyboardInterrupt:
server.stop(0)
def get_session(self, _id, context): def get_session(self, _id, context):
session = self.coreemu.sessions.get(_id) session = self.coreemu.sessions.get(_id)
if not session: if not session:
@ -1142,17 +1155,3 @@ class CoreApiServer(core_pb2_grpc.CoreApiServicer):
self.coreemu.delete_session(session.session_id) self.coreemu.delete_session(session.session_id)
return response return response
def listen(coreemu, address="[::]:50051"):
logging.info("starting grpc api: %s", address)
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
core_pb2_grpc.add_CoreApiServicer_to_server(CoreApiServer(coreemu), server)
server.add_insecure_port(address)
server.start()
try:
while True:
time.sleep(_ONE_DAY_IN_SECONDS)
except KeyboardInterrupt:
server.stop(0)

View file

@ -17,7 +17,7 @@ from core import constants
from core import enumerations from core import enumerations
from core.corehandlers import CoreHandler from core.corehandlers import CoreHandler
from core.coreserver import CoreServer from core.coreserver import CoreServer
from core.grpc.server import listen from core.grpc.server import CoreGrpcServer
from core.misc.utils import close_onexec from core.misc.utils import close_onexec
load_logging_config() load_logging_config()
@ -56,7 +56,8 @@ def cored(cfg):
# initialize grpc api # initialize grpc api
if cfg["grpc"] == "True": if cfg["grpc"] == "True":
grpc_thread = threading.Thread(target=listen, args=(server.coreemu,)) api_server = CoreGrpcServer(server.coreemu)
grpc_thread = threading.Thread(target=api_server.listen)
grpc_thread.daemon = True grpc_thread.daemon = True
grpc_thread.start() grpc_thread.start()