Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions C/scripts/dispatcher_c
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash
# Run a Fledge Dispatcher service written in C/C++
if [ "${FLEDGE_ROOT}" = "" ]; then
FLEDGE_ROOT=/usr/local/fledge
fi

if [ ! -d "${FLEDGE_ROOT}" ]; then
logger "Fledge home directory missing or incorrectly set environment"
exit 1
fi

# startup with delay
delay() {
for ARG in "$@";
do
PARAM=$(echo $ARG | cut -f1 -d=)
if [ $PARAM = '--delay' ]; then
PARAM_LENGTH=${#PARAM}
VALUE="${ARG:$PARAM_LENGTH+1}"
sleep $VALUE
break
fi
done
}

cd "${FLEDGE_ROOT}/services"
delay "$@"
./fledge.services.dispatcher "$@"
3 changes: 3 additions & 0 deletions C/services/dispatcher/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,7 @@ set(FLEDGE_INSTALL "" CACHE INTERNAL "")
if (FLEDGE_INSTALL)
message(STATUS "Installing ${PROJECT_NAME} in ${FLEDGE_INSTALL}/services")
install(TARGETS ${EXEC} RUNTIME DESTINATION ${FLEDGE_INSTALL}/services)
# Install the dispatcher_c startup script
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/dispatcher_c DESTINATION ${FLEDGE_INSTALL}/scripts/services
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
endif()
13 changes: 13 additions & 0 deletions C/services/dispatcher/dispatcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,14 @@ static void signalHandler(int signal)
}
}

// Displays service information in JSON format
static void printServiceInfoAsJSON()
{
std::string serviceInfoJSON = R"({"name":")" + std::string(SERVICE_NAME) + R"(","description":"Service used to manage and send control information","package":"fledge-service-dispatcher","type":")" + std::string(SERVICE_TYPE) + R"(","process":"dispatcher_c","process_script":"[\"services/dispatcher_c\"]","startup_priority":20})" ;

std::cout << serviceInfoJSON << std::endl;
}

/**
* Dispatcher service main entry point
*/
Expand All @@ -75,6 +83,11 @@ int main(int argc, char *argv[])

for (int i = 1; i < argc; i++)
{
if (!strcmp(argv[i], "--info"))
{
printServiceInfoAsJSON();
return 0;
}
if (!strcmp(argv[i], "-d"))
{
daemonMode = false;
Expand Down
2 changes: 1 addition & 1 deletion C/services/dispatcher/dispatcher_service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ bool DispatcherService::start(string& coreAddress,
unsigned short listenerPort = m_api->getListenerPort();
unsigned short managementListener = m_managementApi->getListenerPort();
ServiceRecord record(m_name, // Service name
"Dispatcher", // Service type
SERVICE_TYPE, // Service type
"http", // Protocol
"localhost", // Listening address
listenerPort, // Service port
Expand Down