grpc added get hooks and add hook

This commit is contained in:
bharnden 2019-03-16 12:33:24 -07:00
parent 8559b425ee
commit 5d72b6af26
3 changed files with 81 additions and 2 deletions

View file

@ -212,6 +212,19 @@ class CoreApiClient(object):
)
return self.stub.DeleteLink(request)
def get_hooks(self, session):
request = core_pb2.GetHooksRequest()
request.session = session
return self.stub.GetHooks(request)
def add_hook(self, session, state, file_name, file_data):
request = core_pb2.AddHookRequest()
request.session = session
request.hook.state = state.value
request.hook.file = file_name
request.hook.data = file_data
return self.stub.AddHook(request)
def get_services(self):
request = core_pb2.GetServicesRequest()
return self.stub.GetServices(request)
@ -317,10 +330,10 @@ def main():
# create session
session_data = client.create_session()
print("created session: {}".format(session_data))
print("default services: {}".format(client.get_service_defaults(session_data.id)))
print("emane models: {}".format(client.get_emane_models(session_data.id)))
print("add hook: {}".format(client.add_hook(session_data.id, EventTypes.RUNTIME_STATE, "test", "echo hello")))
print("hooks: {}".format(client.get_hooks(session_data.id)))
response = client.get_sessions()
print("core client received: {}".format(response))

View file

@ -507,6 +507,32 @@ class CoreApiServer(core_pb2_grpc.CoreApiServicer):
response.result = True
return response
def GetHooks(self, request, context):
session = self.coreemu.sessions.get(request.session)
if not session:
raise Exception("no session found")
response = core_pb2.GetHooksResponse()
for state, state_hooks in session._hooks.iteritems():
for file_name, file_data in state_hooks:
hook = response.hooks.add()
hook.state = state
hook.file = file_name
hook.data = file_data
return response
def AddHook(self, request, context):
session = self.coreemu.sessions.get(request.session)
if not session:
raise Exception("no session found")
hook = request.hook
session.add_hook(hook.state, hook.file, None, hook.data)
response = core_pb2.AddHookResponse()
response.result = True
return response
def GetServices(self, request, context):
response = core_pb2.GetServicesResponse()
for service in ServiceManager.services.itervalues():