Webconfig communication to aker via parodus

This commit is contained in:
Sadhyama Vengilat
2020-07-16 16:20:18 +05:30
parent 1d85742497
commit 19056ddfec
6 changed files with 90 additions and 9 deletions

View File

@@ -294,3 +294,24 @@ int sendMsgtoRegisteredClients(char *dest,const char **Msg,size_t msgSize)
release_global_node ();
return 0;
}
//To check client registration status with parodus.
int checkClientStatus(char *serviceName)
{
reg_list_item_t *temp = NULL;
temp = get_global_node();
while (NULL != temp)
{
ParodusPrint("node is pointing to temp->service_name %s \n",temp->service_name);
// Sending message to registered clients
if( strcmp(serviceName, temp->service_name) == 0)
{
release_global_node ();
return 1;
}
ParodusPrint("checking the next item in the list\n");
temp= temp->next;
}
release_global_node ();
return 0;
}

View File

@@ -56,7 +56,7 @@ int sendMsgtoRegisteredClients(char *dest,const char **Msg,size_t msgSize);
reg_list_item_t * get_global_node(void);
void release_global_node (void);
int checkClientStatus();
#ifdef __cplusplus
}
#endif

View File

@@ -26,6 +26,9 @@
#include "config.h"
#include "connection.h"
#include "close_retry.h"
#include "client_list.h"
#define SERVICE_STATUS "service-status"
static void freeObjArray(char *(*obj)[], int size);
static int writeIntoCrudJson(cJSON *res_obj, char * object, cJSON *objValue, int freeFlag);
@@ -589,6 +592,34 @@ int retrieveFromMemory(char *keyName, cJSON **jsonresponse)
cJSON_AddItemToObject( *jsonresponse, CLOUD_STATUS , cJSON_CreateString(get_parodus_cfg()->cloud_status));
}
}
else if(strstr(keyName, "status") !=NULL)
{
char *service = NULL;
const char s[2] = "-";
service = strtok(keyName, s);
if(service !=NULL)
{
ParodusPrint("service is %s\n", service);
char *regstatus = NULL;
if(checkClientStatus(service))
{
regstatus = strdup("online");
}
else
{
regstatus = strdup("offline");
}
ParodusInfo("retrieveFromMemory: keyName:%s value:%s\n", keyName, regstatus);
cJSON_AddItemToObject( *jsonresponse, SERVICE_STATUS , cJSON_CreateString(regstatus));
free(regstatus);
regstatus = NULL;
}
else
{
ParodusError("Failed to get service name\n");
}
}
else if(strcmp(BOOT_TIME, keyName)==0)
{
ParodusInfo("retrieveFromMemory: keyName:%s value:%d\n",keyName,get_parodus_cfg()->boot_time);

View File

@@ -417,12 +417,43 @@ void *processUpstreamMessage()
{
ParodusError("Failed to get device_id\n");
}
} else if (WRP_MSG_TYPE__SVC_ALIVE != msgType) {
}
else if((WRP_MSG_TYPE__UPDATE == msgType) || (WRP_MSG_TYPE__DELETE == msgType))
{
ParodusPrint("UPDATE/DELETE request\n");
ret = getDeviceId(&device_id, &device_id_len);
if(ret == 0)
{
ParodusPrint("device_id %s device_id_len %lu\n", device_id, device_id_len);
/* Match dest based on device_id. Check dest start with: "mac:112233445xxx" ? */
if( 0 == strncasecmp(device_id, msg->u.crud.dest, device_id_len-1) )
{
/* For this device. For nanomsg clients.*/
getServiceNameAndSendResponse(msg, &message->msg, message->len);
}
else
{
/* Not for this device. Send upstream */
ParodusInfo("sendUpstreamMsgToServer \n");
sendUpstreamMsgToServer(&message->msg, message->len);
}
if(device_id != NULL)
{
free(device_id);
device_id = NULL;
}
}
else
{
ParodusError("Failed to get device_id\n");
}
}
else if (WRP_MSG_TYPE__SVC_ALIVE != msgType) {
/* Don't reply to service alive message */
sendUpstreamMsgToServer(&message->msg, message->len);
}
}
}
}
}
}
else
{

View File

@@ -225,7 +225,7 @@ target_link_libraries (test_crud_tasks -lcmocka ${PARODUS_COMMON_LIBS} )
#-------------------------------------------------------------------------------
add_test(NAME test_crud_internal COMMAND ${MEMORY_CHECK} ./test_crud_internal)
add_executable(test_crud_internal test_crud_internal.c ../src/config.c ../src/close_retry.c
../src/ParodusInternal.c ../src/string_helpers.c ../src/crud_internal.c )
../src/ParodusInternal.c ../src/string_helpers.c ../src/crud_internal.c ../src/client_list.c)
target_link_libraries (test_crud_internal -lcmocka ${PARODUS_COMMON_LIBS} -lcurl -luuid)
#-------------------------------------------------------------------------------
@@ -236,7 +236,7 @@ add_executable(test_upstream test_upstream.c ../src/upstream.c ../src/close_retr
target_link_libraries (test_upstream -lcmocka gcov -lcunit -lcimplog
-lwrp-c -luuid -lpthread -lmsgpackc -lnopoll
-Wl,--no-as-needed -lcjson -lcjwt -ltrower-base64
-lssl -lcrypto -lrt -lm)
-lssl -lcrypto -lrt -lm -lnanomsg)
#-------------------------------------------------------------------------------
# test_upstream_sock
@@ -287,6 +287,7 @@ set(CONIFC_SRC test_conn_interface.c
../src/heartBeat.c
../src/close_retry.c
../src/event_handler.c
../src/client_list.c
)
if (ENABLE_SESHAT)
set(CONIFC_SRC ${CONIFC_SRC} ../src/seshat_interface.c)

View File

@@ -291,9 +291,6 @@ void timespec_diff(struct timespec *start, struct timespec *stop,
diff->tv_nsec = 1000;
}
void deleteAllClients (void)
{
}
/*----------------------------------------------------------------------------*/
/* Tests */