grpc added get hooks and add hook
This commit is contained in:
parent
8559b425ee
commit
5d72b6af26
3 changed files with 81 additions and 2 deletions
|
@ -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))
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -3,6 +3,7 @@ syntax = "proto3";
|
|||
package core;
|
||||
|
||||
service CoreApi {
|
||||
// session rpc
|
||||
rpc CreateSession (CreateSessionRequest) returns (CreateSessionResponse) {
|
||||
}
|
||||
rpc DeleteSession (DeleteSessionRequest) returns (DeleteSessionResponse) {
|
||||
|
@ -19,6 +20,8 @@ service CoreApi {
|
|||
}
|
||||
rpc SetSessionState (SetSessionStateRequest) returns (SetSessionStateResponse) {
|
||||
}
|
||||
|
||||
// node rpc
|
||||
rpc CreateNode (CreateNodeRequest) returns (CreateNodeResponse) {
|
||||
}
|
||||
rpc GetNode (GetNodeRequest) returns (GetNodeResponse) {
|
||||
|
@ -27,6 +30,8 @@ service CoreApi {
|
|||
}
|
||||
rpc DeleteNode (DeleteNodeRequest) returns (DeleteNodeResponse) {
|
||||
}
|
||||
|
||||
// link rpc
|
||||
rpc GetNodeLinks (GetNodeLinksRequest) returns (GetNodeLinksResponse) {
|
||||
}
|
||||
rpc CreateLink (CreateLinkRequest) returns (CreateLinkResponse) {
|
||||
|
@ -35,6 +40,14 @@ service CoreApi {
|
|||
}
|
||||
rpc DeleteLink (DeleteLinkRequest) returns (DeleteLinkResponse) {
|
||||
}
|
||||
|
||||
// hook rpc
|
||||
rpc GetHooks (GetHooksRequest) returns (GetHooksResponse) {
|
||||
}
|
||||
rpc AddHook (AddHookRequest) returns (AddHookResponse) {
|
||||
}
|
||||
|
||||
// service rpc
|
||||
rpc GetServices (GetServicesRequest) returns (GetServicesResponse) {
|
||||
}
|
||||
rpc GetServiceDefaults (GetServiceDefaultsRequest) returns (GetServiceDefaultsResponse) {
|
||||
|
@ -43,6 +56,8 @@ service CoreApi {
|
|||
}
|
||||
rpc GetNodeService (GetNodeServiceRequest) returns (GetNodeServiceResponse) {
|
||||
}
|
||||
|
||||
// emane rpc
|
||||
rpc GetEmaneConfig (GetEmaneConfigRequest) returns (GetEmaneConfigResponse) {
|
||||
}
|
||||
rpc SetEmaneConfig (SetEmaneConfigRequest) returns (SetEmaneConfigResponse) {
|
||||
|
@ -55,6 +70,8 @@ service CoreApi {
|
|||
}
|
||||
rpc GetEmaneModelConfigs (GetEmaneModelConfigsRequest) returns (GetEmaneModelConfigsResponse) {
|
||||
}
|
||||
|
||||
// xml rpc
|
||||
rpc SaveXml (SaveXmlRequest) returns (SaveXmlResponse) {
|
||||
}
|
||||
rpc OpenXml (OpenXmlRequest) returns (OpenXmlResponse) {
|
||||
|
@ -221,6 +238,23 @@ message DeleteLinkResponse {
|
|||
bool result = 1;
|
||||
}
|
||||
|
||||
message GetHooksRequest {
|
||||
int32 session = 1;
|
||||
}
|
||||
|
||||
message GetHooksResponse {
|
||||
repeated Hook hooks = 1;
|
||||
}
|
||||
|
||||
message AddHookRequest {
|
||||
int32 session = 1;
|
||||
Hook hook = 2;
|
||||
}
|
||||
|
||||
message AddHookResponse {
|
||||
bool result = 1;
|
||||
}
|
||||
|
||||
message GetServicesRequest {
|
||||
|
||||
}
|
||||
|
@ -365,6 +399,12 @@ enum ServiceValidationMode {
|
|||
TIMER = 2;
|
||||
}
|
||||
|
||||
message Hook {
|
||||
SessionState state = 1;
|
||||
string file = 2;
|
||||
bytes data = 3;
|
||||
}
|
||||
|
||||
message ServiceDefaults {
|
||||
string node_type = 1;
|
||||
repeated string services = 2;
|
||||
|
|
Loading…
Reference in a new issue