From 9e2c045d6118ef264d6cf8fc655b72d7c4c403dc Mon Sep 17 00:00:00 2001 From: Angelo Mantellini Date: Tue, 9 Jun 2020 14:48:02 +0200 Subject: [HICN-626] Return output from libhicnlight Signed-off-by: Angelo Mantellini Change-Id: I2351ce4dcefa1311fa09049f87e8317c8fe449f4 --- hicn-light/src/hicn/config/controlState.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'hicn-light/src/hicn/config/controlState.c') diff --git a/hicn-light/src/hicn/config/controlState.c b/hicn-light/src/hicn/config/controlState.c index 2df8805c6..acdae9e52 100644 --- a/hicn-light/src/hicn/config/controlState.c +++ b/hicn-light/src/hicn/config/controlState.c @@ -54,7 +54,7 @@ int controlState_connectToFwdDeamon(char *server_ip, uint16_t port) { if ((sockfd = (int)socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("\nSocket Creation Failed \n"); - exit(EXIT_FAILURE); + return EXIT_FAILURE; } memset(&servaddr, 0, sizeof(servaddr)); @@ -67,7 +67,7 @@ int controlState_connectToFwdDeamon(char *server_ip, uint16_t port) { // Establish connection if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { printf("\nConnection Failed: hicn-light Daemon is not running \n"); - exit(EXIT_FAILURE); + return -1; } return sockfd; @@ -76,8 +76,8 @@ int controlState_connectToFwdDeamon(char *server_ip, uint16_t port) { ControlState *controlState_Create( void *userdata, struct iovec *(*writeRead)(ControlState *state, struct iovec *msg), - bool openControllerConnetion, - char *server_ip, uint16_t port) { + bool openControllerConnetion, + char *server_ip, uint16_t port) { ControlState *state = parcMemory_AllocateAndClear(sizeof(ControlState)); parcAssertNotNull(state, "parcMemory_AllocateAndClear(%zu) returned NULL", sizeof(ControlState)); @@ -91,6 +91,9 @@ ControlState *controlState_Create( if (openControllerConnetion) { state->sockfd = controlState_connectToFwdDeamon(server_ip, port); + if (state->sockfd == -1) { + return NULL; + } } else { state->sockfd = 2; // stderr } @@ -161,9 +164,11 @@ static PARCList *_controlState_ParseStringIntoTokens( } CommandReturn controlState_DispatchCommand(ControlState *state, - PARCList *args) { + PARCList *args, + char *output, + size_t output_size) { parcAssertNotNull(state, "Parameter state must be non-null"); - return commandParser_DispatchCommand(state->parser, args); + return commandParser_DispatchCommand(state->parser, args, output, output_size); } int controlState_Interactive(ControlState *state) { @@ -171,7 +176,7 @@ int controlState_Interactive(ControlState *state) { char *line = NULL; size_t linecap = 0; CommandReturn controlReturn = CommandReturn_Success; - + char output[8192]; while (controlReturn != CommandReturn_Exit && !feof(stdin)) { fputs("> ", stdout); fflush(stdout); @@ -179,7 +184,9 @@ int controlState_Interactive(ControlState *state) { parcAssertTrue(failure > -1, "Error getline"); PARCList *args = _controlState_ParseStringIntoTokens(line); - controlReturn = controlState_DispatchCommand(state, args); + + controlReturn = controlState_DispatchCommand(state, args, output, sizeof(output)); + printf("%s", output); // release and get command parcList_Release(&args); } -- cgit 1.2.3-korg