Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
Executable
+148
@@ -0,0 +1,148 @@
|
||||
#
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
INCLUDE(MacroRTIDDSGen)
|
||||
INCLUDE(MacroCodeGenIdl)
|
||||
|
||||
SET(xml_FILE xxx_service.xml)
|
||||
|
||||
#
|
||||
# --- Library svcXxxCommon --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_common
|
||||
xxx_export.h
|
||||
logger.cpp
|
||||
logger.h
|
||||
)
|
||||
|
||||
# Generate xxx_enums.idl / xxx.idl
|
||||
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
|
||||
|
||||
# Generate *.cpp/*.hpp from idl
|
||||
RTIDDSGEN(SRCS_common xxx_enums.idl)
|
||||
RTIDDSGEN(SRCS_common xxx.idl)
|
||||
|
||||
# Generate xxx_dt[s,c]_types.h, xxx_ft[s,c]_types.h
|
||||
CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE})
|
||||
# Generate xxx_[d|f]tc.h
|
||||
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})
|
||||
|
||||
NGL_ADD_LIBRARY(AAR SV WS svcXxxCommon SHARED ${SRCS_common})
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcXxxCommon
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(svcXxxCommon
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
PUBLIC
|
||||
Qt5::Core
|
||||
ddscore
|
||||
NGLLogger
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcXxxCommon)
|
||||
|
||||
#
|
||||
# --- Library svcXxxClient --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_client
|
||||
xxx_export.h
|
||||
)
|
||||
# generate xxx_[d|f]tc.h, xxx_[d|f]tc_impl.[cpp|h]
|
||||
CODEGEN_CLIENT_TOPICS_IMPL(SRCS_client ${xml_FILE})
|
||||
|
||||
NGL_ADD_LIBRARY(AAR SV WS svcXxxClient SHARED ${SRCS_client})
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcXxxClient
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
|
||||
NGL_TARGET_LINK_LIBRARIES(svcXxxClient
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
ddsconnector
|
||||
PUBLIC
|
||||
svcXxxCommon
|
||||
ddsftc
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcXxxClient)
|
||||
|
||||
#
|
||||
# --- Library svcXxxServer --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_server
|
||||
xxx_export.h
|
||||
)
|
||||
# generate xxx_[d|f]ts.h, xxx_[d|f]ts_impl.[cpp|h]
|
||||
CODEGEN_SERVER_TOPICS(SRCS_server ${xml_FILE})
|
||||
# Generate xxx_db_impl.cpp/.h, xxx_db.h
|
||||
CODEGEN_DATABASE(SRCS_server ${xml_FILE})
|
||||
|
||||
NGL_ADD_LIBRARY(AAR SV svcXxxServer SHARED ${SRCS_server})
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcXxxServer
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
|
||||
NGL_TARGET_LINK_LIBRARIES(svcXxxServer
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
ddsconnector
|
||||
ddsfts
|
||||
ngldb
|
||||
PUBLIC
|
||||
svcXxxCommon
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcXxxServer)
|
||||
|
||||
#
|
||||
# --- Topic Type Plugin --------------------------------------------------------------
|
||||
#
|
||||
CREATE_TOPIC_TYPE_PLUGIN(${xml_FILE})
|
||||
|
||||
#
|
||||
# --- Executable svcXxxXxxXxx (sXXX) -------------------------------------------------
|
||||
#
|
||||
SET(SRCS_exe
|
||||
main.cpp
|
||||
main_handler.cpp
|
||||
main_handler.h
|
||||
dds_handler.cpp
|
||||
dds_handler.h
|
||||
settings.cpp
|
||||
settings.h
|
||||
${xml_FILE}
|
||||
)
|
||||
|
||||
# Generate xxx.sql, xxx.xml
|
||||
CODEGEN_SQL(SRCS_exe ${xml_FILE})
|
||||
|
||||
NGL_ADD_SVC_ICON(SRCS_exe)
|
||||
NGL_ADD_EXECUTABLE(AAR SV svcXxxXxxXxx ${SRCS_exe})
|
||||
NGL_TARGET_LINK_LIBRARIES(svcXxxXxxXxx
|
||||
Qt5::Core
|
||||
svcXxxCommon
|
||||
svcXxxServer
|
||||
svcCorePacemaker
|
||||
ddsconnector
|
||||
nglsettings
|
||||
ProjectConfig
|
||||
LtsCommandLineParser
|
||||
NGLLogger
|
||||
nglcoreapplication
|
||||
ngltools
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcXxxXxxXxx)
|
||||
NGL_INSTALL(AAR SV FILES log4cxx_xxx.props DESTINATION bin)
|
||||
NGL_ADD_TARGET_LINK(svcXxxXxxXxx sXXX)
|
||||
|
||||
# Uncomment if necessary
|
||||
#ADD_SUBDIRECTORY(UnitTests)
|
||||
#ADD_SUBDIRECTORY(ModuleTests)
|
||||
|
||||
Executable
+61
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* DdsHandler for DDS
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-09-02
|
||||
*/
|
||||
|
||||
#include "dds_handler.h"
|
||||
|
||||
#include "xxx_dts.h"
|
||||
#include "xxx_fts.h"
|
||||
|
||||
#include <DDS/DTS/generic_dts_impl.h>
|
||||
#include <DDS/Core/pacemaker.h>
|
||||
|
||||
namespace XxxXxxXxx
|
||||
{
|
||||
|
||||
DdsHandler::DdsHandler(int domainId, int exerciseId)
|
||||
: m_ddsConnector(std::make_shared<DDSConnector::DdsConnector>(domainId, IDL::PartitionType::FIXME, exerciseId))
|
||||
, m_logger(getLogger("DdsHandler"))
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "DdsHandler(" << domainId << ") for partition: " << m_ddsConnector->getDefaultPartition();
|
||||
}
|
||||
|
||||
DdsHandler::~DdsHandler()
|
||||
{}
|
||||
|
||||
bool DdsHandler::init(const QStringList &qosFileList)
|
||||
{
|
||||
if(!m_ddsConnector->init(qosFileList))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error initializing dds connections - aborting";
|
||||
return false;
|
||||
}
|
||||
|
||||
// default initialize Publisher and Subscriber
|
||||
m_ddsConnector->initPublisherSubscriber();
|
||||
|
||||
// Pacemaker
|
||||
m_dtsCurrentRunningState.reset(m_ddsConnector->createDTS<DTS::CurrentRunningStateImpl>());
|
||||
assert(m_dtsCurrentRunningState.get());
|
||||
m_pacemaker = std::make_shared<Core::Pacemaker>(m_dtsCurrentRunningState);
|
||||
|
||||
m_ddsDts = XxxXxxXxx::Interface::Dts::create(m_ddsConnector);
|
||||
m_ddsFts = XxxXxxXxx::Interface::Fts::create(m_ddsConnector);
|
||||
|
||||
bool bRet = m_ddsDts->enableAll();
|
||||
INFO_LOG(m_logger) << "Dts initialised";
|
||||
|
||||
bRet &= m_ddsFts->enableAll();
|
||||
INFO_LOG(m_logger) << "Fts initialised";
|
||||
|
||||
// TODO: call at the end of main_handler init:
|
||||
//m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Running);
|
||||
|
||||
return bRet;
|
||||
}
|
||||
|
||||
} // Namespace PDM
|
||||
Executable
+57
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* DdsHandler for DDS
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-09-02
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <DDS/DDSConnector/dds_connector.h>
|
||||
#include <DDS/Core/core_dts_types.h>
|
||||
|
||||
#include <XxxXxxXxx/xxx_dts.h>
|
||||
#include <XxxXxxXxx/xxx_fts.h>
|
||||
#include "logger.h"
|
||||
|
||||
namespace Core
|
||||
{
|
||||
class Pacemaker;
|
||||
}
|
||||
|
||||
namespace XxxXxxXxx
|
||||
{
|
||||
class DdsHandler final
|
||||
{
|
||||
public:
|
||||
DdsHandler(int domainId, int exerciseId);
|
||||
~DdsHandler();
|
||||
|
||||
bool init(const QStringList &qosFileList = QStringList());
|
||||
|
||||
std::shared_ptr<Core::Pacemaker> pacemaker() const
|
||||
{
|
||||
return m_pacemaker;
|
||||
}
|
||||
|
||||
std::shared_ptr<XxxXxxXxx::Interface::Dts> dts() const
|
||||
{
|
||||
return m_ddsDts;
|
||||
}
|
||||
std::shared_ptr<XxxXxxXxx::Interface::Fts> fts() const
|
||||
{
|
||||
return m_ddsFts;
|
||||
}
|
||||
|
||||
private:
|
||||
std::shared_ptr<DDSConnector::DdsConnector> m_ddsConnector;
|
||||
std::shared_ptr<DTS::CurrentRunningState> m_dtsCurrentRunningState;
|
||||
std::shared_ptr<Core::Pacemaker> m_pacemaker;
|
||||
std::shared_ptr<XxxXxxXxx::Interface::Dts> m_ddsDts;
|
||||
std::shared_ptr<XxxXxxXxx::Interface::Fts> m_ddsFts;
|
||||
|
||||
NGL::INGLLogger &m_logger;
|
||||
};
|
||||
|
||||
} // namespace XxxXxxXxx
|
||||
Executable
+80
@@ -0,0 +1,80 @@
|
||||
log4j.reset=true
|
||||
log4j.rootLogger=WARN, file
|
||||
|
||||
# Service: XxxXxxXxx
|
||||
###########################################################
|
||||
|
||||
#log4j.logger.XXX=DEBUG
|
||||
#log4j.logger.XXX.main=DEBUG
|
||||
#log4j.logger.XXX.DdsHandler=DEBUG
|
||||
#log4j.logger.XXX.MainHandler=DEBUG
|
||||
|
||||
#
|
||||
# Lts::RollingFileAppender
|
||||
log4j.appender.file=Lts::RollingFileAppender
|
||||
log4j.appender.file.MaxFileSize=1MB
|
||||
log4j.appender.file.MaxBackupIndex=9
|
||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.file.layout.ConversionPattern=%d %-5p %c |#| %m (%.50F:%L) %n
|
||||
|
||||
|
||||
# Appnd_Console
|
||||
###########################################################
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern= %d %p %c %c{1} - %m (%-.30F:%L) %n
|
||||
|
||||
|
||||
# Appnd_Syslog
|
||||
###########################################################
|
||||
log4j.appender.syslog=org.apache.log4j.SyslogAppender
|
||||
log4j.appender.syslog.Threshold=ERROR
|
||||
log4j.appender.syslog.SysLogHost=localhost
|
||||
log4j.appender.syslog.Facility=LOCAL7
|
||||
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.syslog.layout.ConversionPattern= %-4r %-5p %c %x - %m
|
||||
log4j.appender.syslog.LevelRangeFilter.AcceptOnMatch=true
|
||||
log4j.appender.syslog.LevelRangeFilter.LevelMin=INFO
|
||||
log4j.appender.syslog.LevelRangeFilter.LevelMax=FATAL
|
||||
|
||||
|
||||
###########################################################
|
||||
###########################################################
|
||||
###########################################################
|
||||
# 1) Available Levels in LOG4CXX Version 0.10.0:
|
||||
# TRACE,
|
||||
# DEBUG,
|
||||
# INFO,
|
||||
# WARN,
|
||||
# ERROR
|
||||
# FATAL
|
||||
#
|
||||
# d = date/time
|
||||
# p = priority (Level)
|
||||
# c = category/channel
|
||||
# m = message
|
||||
# F = file
|
||||
# L = line
|
||||
# n = platform dependent line separator character or characters.
|
||||
# ....
|
||||
#
|
||||
# Examples for console:
|
||||
# a)
|
||||
# %d %p %c #%m# (%.50F:%L)%n
|
||||
# date/time
|
||||
# priority
|
||||
# category/channel
|
||||
# #message#
|
||||
# (Maximal 50Character des Filename von rechts:Line)
|
||||
# line separator
|
||||
#
|
||||
# b)
|
||||
# %d (%.15F:%L) %-5p %c |#| %m%n
|
||||
# date/time
|
||||
# (Maximal 15Character des Filename von rechts:Line)
|
||||
# priority, Right pad with spaces if the priority name is less than 5 characters long.
|
||||
# category/channel
|
||||
# message
|
||||
# line separator
|
||||
#
|
||||
# Examples for files:
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Building Config - logging facility
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "logger.h"
|
||||
|
||||
#include <NGLLogger/NGLLoggerBootstrap.h>
|
||||
|
||||
namespace XxxXxxXxx
|
||||
{
|
||||
|
||||
LOGGER_T getLogger(const char *name)
|
||||
{
|
||||
static const char ns[] = "XXX.";
|
||||
std::string loggerName;
|
||||
const size_t len = strlen(name);
|
||||
loggerName.reserve(sizeof(ns) + len);
|
||||
loggerName.append(ns, sizeof(ns) - 1);
|
||||
loggerName.append(name, len);
|
||||
|
||||
try
|
||||
{
|
||||
return NGL::NGLLoggerBootstrap::getNGLRootLogger().
|
||||
getNGLLogger(loggerName);
|
||||
}
|
||||
catch (const std::exception &ex)
|
||||
{
|
||||
fprintf(stderr, "Error retrieving logger: %s", ex.what());
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XxxXxxXxx
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Logging for XxxXxxXxx
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <NGLLogger/INGLLogger.h>
|
||||
#include "xxx_export.h"
|
||||
|
||||
namespace XxxXxxXxx
|
||||
{
|
||||
using LOGGER_T = NGL::INGLLogger &;
|
||||
|
||||
XXX_COMMON_EXPORT LOGGER_T getLogger(const char *name);
|
||||
inline LOGGER_T getLogger(const QString &loggerName)
|
||||
{
|
||||
return getLogger(loggerName.toUtf8().constData());
|
||||
}
|
||||
} // namespace XxxXxxXxx
|
||||
Executable
+42
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* main for XxxXxxXxx
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include <nglapplication/nglcoreapplication.h>
|
||||
#include <LtsCommandLineParser/LtsCommandLineParser.h>
|
||||
|
||||
#include "main_handler.h"
|
||||
#include "logger.h"
|
||||
#include "settings.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
NGLCoreApplication app(argc, argv);
|
||||
|
||||
LtsCommandLineParser::LtsCommandLineParser options;
|
||||
if (!options.init())
|
||||
return -1;
|
||||
app.createLogger("XXX", options.exerciseId());
|
||||
|
||||
XxxXxxXxx::Settings::setIniFile(options.iniFile());
|
||||
|
||||
int iRet = -3;
|
||||
{
|
||||
std::unique_ptr<XxxXxxXxx::MainHandler> mainHandler(new XxxXxxXxx::MainHandler);
|
||||
|
||||
if (!mainHandler->init(options.domainId(), options.exerciseId()))
|
||||
return iRet;
|
||||
|
||||
STARTUP_LOG(app.baseLogger());
|
||||
|
||||
iRet = app.exec();
|
||||
|
||||
SHUTDOWN_LOG(app.baseLogger());
|
||||
}
|
||||
|
||||
return iRet;
|
||||
}
|
||||
Executable
+61
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* MainHandler for AssetManagement
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "main_handler.h"
|
||||
|
||||
#include <DDS/DDSConnector/dds_connector.h>
|
||||
#include <ngldb/db_service_handler.h>
|
||||
|
||||
namespace XxxXxxXxx
|
||||
{
|
||||
|
||||
MainHandler::MainHandler(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_ddsHandler(nullptr)
|
||||
, m_dbHandler(nullptr)
|
||||
, m_logger(getLogger("MainHandler"))
|
||||
{}
|
||||
|
||||
MainHandler::~MainHandler()
|
||||
{
|
||||
m_ddsHandler = nullptr;
|
||||
m_dbHandler = nullptr;
|
||||
}
|
||||
|
||||
bool MainHandler::init(int domainId)
|
||||
{
|
||||
|
||||
// initialize database
|
||||
m_dbHandler = std::make_shared<DbHandler>();
|
||||
|
||||
if (!m_dbHandler->init(0, Settings::settings(), m_logger))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Initialisation dbHandler failed.";
|
||||
return false;
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "Initialisation dbHandler succesful.";
|
||||
|
||||
// initialize DDS
|
||||
m_ddsHandler = std::make_shared<DdsHandler>(domainId);
|
||||
if (!m_ddsHandler->init())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Initialisation ddsHandler failed.";
|
||||
return false;
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "Initialisation ddsHandler succesful.";
|
||||
|
||||
// TODO
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
std::shared_ptr<DatabaseInterface> MainHandler::db() const
|
||||
{
|
||||
return m_dbHandler->db();
|
||||
}
|
||||
|
||||
} // namespace XxxXxxXxx
|
||||
Executable
+42
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* MainHandler for AereaEffectSimulation
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <memory>
|
||||
#include "dds_handler.h"
|
||||
#include "xxx_db.h"
|
||||
#include "logger.h"
|
||||
|
||||
namespace NGLDB
|
||||
{
|
||||
template <typename DB> class DbServiceHandler;
|
||||
}
|
||||
namespace XxxXxxXxx
|
||||
{
|
||||
using DbHandler = NGLDB::DbServiceHandler<DatabaseInterface>;
|
||||
|
||||
class MainHandler : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit MainHandler(QObject *parent = nullptr);
|
||||
~MainHandler();
|
||||
|
||||
bool init(int domainId);
|
||||
|
||||
std::shared_ptr<DdsHandler> dds() const { return m_ddsHandler; }
|
||||
std::shared_ptr<DatabaseInterface> db() const;
|
||||
|
||||
private:
|
||||
std::shared_ptr<DdsHandler> m_ddsHandler;
|
||||
std::shared_ptr<DbHandler> m_dbHandler;
|
||||
|
||||
NGL::INGLLogger &m_logger;
|
||||
|
||||
};
|
||||
} // namespace XxxXxxXxx
|
||||
Executable
+42
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* Settings for XxxXxxXxx
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "settings.h"
|
||||
|
||||
#include <QtCore/QSettings>
|
||||
#include <nglsettings/nglsettings_settings.h>
|
||||
#include <ngltools/ngltools_filesystem.h>
|
||||
|
||||
namespace XxxXxxXxx
|
||||
{
|
||||
class NGLSettingsClass : public NGL::Settings
|
||||
{
|
||||
public:
|
||||
NGLSettingsClass()
|
||||
: NGL::Settings(s_iniFile.isEmpty() ? NGL::findProjectConfigFile() : s_iniFile)
|
||||
{}
|
||||
static void setIniFile(const QString &fn)
|
||||
{
|
||||
s_iniFile = fn;
|
||||
}
|
||||
static QString s_iniFile;
|
||||
};
|
||||
QString NGLSettingsClass::s_iniFile;
|
||||
Q_GLOBAL_STATIC(NGLSettingsClass, s)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
NGL::Settings *Settings::settings()
|
||||
{
|
||||
return s();
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
void Settings::setIniFile(const QString &ini)
|
||||
{
|
||||
NGLSettingsClass::setIniFile(ini);
|
||||
}
|
||||
|
||||
} // namespace XxxXxxXxx
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* Settings for XxxXxxXxx
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <QString>
|
||||
|
||||
namespace NGL
|
||||
{
|
||||
class Settings;
|
||||
}
|
||||
|
||||
namespace XxxXxxXxx
|
||||
{
|
||||
namespace Settings
|
||||
{
|
||||
NGL::Settings *settings();
|
||||
void setIniFile(const QString &ini);
|
||||
}
|
||||
|
||||
} // namespace XxxXxxXxx
|
||||
Executable
+52
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Export definitions
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-08-04
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#ifndef XXX_COMMON_EXPORT
|
||||
# ifdef BUILD_STATIC_LIBRARIES
|
||||
# define XXX_COMMON_EXPORT
|
||||
# else
|
||||
# if defined(MAKE_SVCXXXCOMMON_LIB)
|
||||
# define XXX_COMMON_EXPORT Q_DECL_EXPORT
|
||||
# ifndef WIN32
|
||||
# ifdef NDDSUSERDllExport
|
||||
# undef NDDSUSERDllExport
|
||||
# endif
|
||||
# define NDDSUSERDllExport Q_DECL_EXPORT
|
||||
# endif
|
||||
# else
|
||||
# define XXX_COMMON_EXPORT Q_DECL_IMPORT
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef XXX_CLIENT_EXPORT
|
||||
# ifdef BUILD_STATIC_LIBRARIES
|
||||
# define XXX_CLIENT_EXPORT
|
||||
# else
|
||||
# if defined(MAKE_SVCXXXCLIENT_LIB)
|
||||
# define XXX_CLIENT_EXPORT Q_DECL_EXPORT
|
||||
# else
|
||||
# define XXX_CLIENT_EXPORT Q_DECL_IMPORT
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef XXX_SERVER_EXPORT
|
||||
# ifdef BUILD_STATIC_LIBRARIES
|
||||
# define XXX_SERVER_EXPORT
|
||||
# else
|
||||
# if defined(MAKE_SVCXXXSERVER_LIB)
|
||||
# define XXX_SERVER_EXPORT Q_DECL_EXPORT
|
||||
# else
|
||||
# define XXX_SERVER_EXPORT Q_DECL_IMPORT
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<service namespace="XxxXxxXxx" procNames="XxxXxxXxx" abbreviation="XXX">
|
||||
<!-- Will be generated by EnterpriseArchitect javascript
|
||||
Copy from EA to this directory
|
||||
-->
|
||||
</service>
|
||||
Executable
+144
@@ -0,0 +1,144 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
svc_name_abbr=""
|
||||
svc_name_long=""
|
||||
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "usage: $0 -l <ObjectName>"
|
||||
# echo " -o <ObjectName> : ObjectName in CamelCase "
|
||||
echo " -s <SvcName short>: Abbreviation of ServiceName with 3 letters"
|
||||
echo " -l <SvcName long> : ServiceName in CamelCase"
|
||||
}
|
||||
|
||||
while getopts "s:l:" opt "$@"; do
|
||||
case $opt in
|
||||
# o)
|
||||
# obj_cc=$OPTARG
|
||||
# ;;
|
||||
l)
|
||||
svc_cc=$OPTARG
|
||||
;;
|
||||
s)
|
||||
svc_abbr=$OPTARG
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument."
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
|
||||
if [ -z $svc_cc ]; then
|
||||
echo "Parameter -l is required"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z $svc_abbr ]; then
|
||||
echo "Parameter -s is required"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
svc_abbr_lc=${svc_abbr,,}
|
||||
svc_abbr_cc=${svc_abbr_lc~}
|
||||
echo "svc CamelCase : ${svc_cc} "
|
||||
echo "svc abbr Cc : ${svc_abbr_cc} "
|
||||
echo "svc abbr lower : ${svc_abbr_lc} "
|
||||
|
||||
echo "ObjectNames (cc): "
|
||||
for obje in "$@"; do
|
||||
echo " ${obje}"
|
||||
done
|
||||
|
||||
echo "=========================="
|
||||
echo "Iterating through objects:"
|
||||
echo
|
||||
|
||||
declare -a headers
|
||||
declare -a sources
|
||||
|
||||
for obje in "$@"; do
|
||||
cd ../skeleton
|
||||
obj_lower=${obje,,}
|
||||
obj_upper=${obje^^}
|
||||
obj_underscore=`echo ${obje} | sed 's/\([a-z0-9]\)\([A-Z]\)/\1_\L\2/g'`
|
||||
obj_underscore=${obj_underscore,,}
|
||||
echo "Object '${obje}': "
|
||||
echo " obj CamelCase : ${obje} "
|
||||
echo " obj lower : ${obj_lower} "
|
||||
echo " obj UPPER : ${obj_upper} "
|
||||
echo " obj under_score : ${obj_underscore} "
|
||||
echo
|
||||
echo " Copying [handler|object]_${obj_underscore}.[cpp|h] to ./${svc_cc} directory"
|
||||
cp ./stub/handler_xxx.cpp ../${svc_cc}/handler_${obj_underscore}.cpp
|
||||
cp ./stub/handler_xxx.h ../${svc_cc}/handler_${obj_underscore}.h
|
||||
cp ./stub/object_xxx.cpp ../${svc_cc}/object_${obj_underscore}.cpp
|
||||
cp ./stub/object_xxx.h ../${svc_cc}/object_${obj_underscore}.h
|
||||
|
||||
cd ../${svc_cc}
|
||||
|
||||
# search & replace XXX/Xxx/xxx/XxxXxxXxx
|
||||
for file in `find . -type f -name "*_${obj_underscore}.*" `; do
|
||||
echo " -> Replace all Xxx/xxx/XXX and namespace in file ${file}"
|
||||
# sed -i "s/XxxXxxXxx/${svc_name_long}/g" ${file}
|
||||
sed -i "s/XXX/${obj_upper}/g" ${file}
|
||||
sed -i "s/Xxx/${obje}/g" ${file}
|
||||
sed -i "s/xxx_xxx/${obj_underscore}/g" ${file}
|
||||
sed -i "s/xxx/${obj_lower}/g" ${file}
|
||||
|
||||
sed -i "s/YyyYyyYyy/${svc_cc}/g" ${file}
|
||||
sed -i "s/Yyy/${svc_abbr_cc}/g" ${file}
|
||||
sed -i "s/yyy/${svc_abbr_lc}/g" ${file}
|
||||
fil2=${file##.*/}
|
||||
if [[ "$file" == *.h ]]
|
||||
then
|
||||
headers+=(${fil2})
|
||||
else
|
||||
sources+=(${fil2})
|
||||
fi
|
||||
done
|
||||
echo
|
||||
done
|
||||
echo "=========================="
|
||||
echo "Copied handler and object files and replaced strings within files."
|
||||
|
||||
# echo what to do next:
|
||||
echo "=========================="
|
||||
echo "Next steps:"
|
||||
echo
|
||||
echo "=> Include Files in CMakeLists.txt by adding the following lines:"
|
||||
|
||||
echo "SET(SRCS_exe"
|
||||
echo " [...]"
|
||||
echo "vvvvvvvvvvvvvvvvvvvvvvvvvv"
|
||||
for source in "${sources[@]}"; do
|
||||
echo " ${source}"
|
||||
done
|
||||
echo "^^^^^^^^^^^^^^^^^^^^^^^^^^"
|
||||
echo ")"
|
||||
|
||||
echo "SET(HDRS_exe"
|
||||
echo " [...]"
|
||||
echo "vvvvvvvvvvvvvvvvvvvvvvvvvv"
|
||||
for head in "${headers[@]}"; do
|
||||
echo " ${head}"
|
||||
done
|
||||
echo "^^^^^^^^^^^^^^^^^^^^^^^^^^"
|
||||
echo ")"
|
||||
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
svc_name_abbr=""
|
||||
svc_name_long=""
|
||||
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "usage: $0 -l <SvcName long> -s <SvcName short>"
|
||||
echo " -l <SvcName long> : ServiceName in CamelCase "
|
||||
echo " -s <SvcName short>: Abbreviation of ServiceName with 3 letters"
|
||||
}
|
||||
|
||||
while getopts "s:l:" opt "$@"; do
|
||||
case $opt in
|
||||
l)
|
||||
svc_name_long=$OPTARG
|
||||
;;
|
||||
s)
|
||||
svc_name_abbr=$OPTARG
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument."
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
if [ -z $svc_name_long ]; then
|
||||
echo "Parameter -l is required"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z $svc_name_abbr ]; then
|
||||
echo "Parameter -s is required"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "ServiceName (long): ${svc_name_long} "
|
||||
echo "ServiceName (Abbr): ${svc_name_abbr} "
|
||||
|
||||
svc_lower=${svc_name_abbr,,}
|
||||
svc_upper=${svc_name_abbr^^}
|
||||
svc_cc=${svc_lower~}
|
||||
|
||||
echo "svc lower (Abbr): ${svc_lower} "
|
||||
echo "svc upper (Abbr): ${svc_upper} "
|
||||
echo "svc CamelCase (Abbr): ${svc_cc} "
|
||||
|
||||
# copy skeleton to SvcDirectory
|
||||
svc_dir=${svc_name_long}
|
||||
if [ -d ../${svc_dir} ]; then
|
||||
echo "Directory ${svc_dir} already exists. Remove it and restart the script"
|
||||
exit 2
|
||||
rm -r ${svc_dir}
|
||||
fi
|
||||
|
||||
cp -r ./base ../${svc_dir}
|
||||
echo "Copied files to ${svc_dir}."
|
||||
|
||||
cd ../${svc_dir}
|
||||
|
||||
# mv files with xxx_* to svc_lower_*
|
||||
#for i in find . -name 'xxx_*' -exec ls {} \;
|
||||
# Todo: sed for renaming? xxx -> ${svc_lower}, wherever it occurs
|
||||
for old_file in `find . -name 'xxx_*' `; do
|
||||
new_file="${svc_lower}${old_file:5}"
|
||||
echo "-> Rename file ${old_file} to ${new_file}"
|
||||
mv ${old_file} ./${new_file}
|
||||
done
|
||||
|
||||
mv ./log4cxx_xxx.props ./log4cxx_${svc_lower}.props
|
||||
|
||||
# search & replace XXX/Xxx/xxx/XxxXxxXxx
|
||||
for file in `find . -type f -name '*' `; do
|
||||
echo "-> Replace all Xxx/xxx/XXX and namespace in file ${file}"
|
||||
sed -i "s/XxxXxxXxx/${svc_name_long}/g" ${file}
|
||||
sed -i "s/XXX/${svc_upper}/g" ${file}
|
||||
sed -i "s/Xxx/${svc_cc}/g" ${file}
|
||||
sed -i "s/xxx/${svc_lower}/g" ${file}
|
||||
done
|
||||
|
||||
pwd=`pwd`
|
||||
|
||||
# echo what to do next:
|
||||
echo "------------------------"
|
||||
echo "Next steps:"
|
||||
echo "------------------------"
|
||||
echo "=> Copy xml service file (${svc_lower}_service.xml) from EA into '${svc_dir}'"
|
||||
echo " cp ${svc_lower}_service.xml ${pwd}/"
|
||||
echo ""
|
||||
echo "=> Include '${svc_dir}' in CMakeLists.txt (in folder 'Services') by adding the following line:"
|
||||
echo " ADD_SUBDIRECTORY(${svc_name_long})"
|
||||
echo "------------------------"
|
||||
|
||||
Executable
+61
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* Handler for all exercise objects
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-09-03
|
||||
*/
|
||||
|
||||
#include "handler_xxx_xxx.h"
|
||||
#include "object_xxx_xxx.h"
|
||||
#include "yyy_db.h"
|
||||
#include "db_handler.h"
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <NGLLogger/NGLLoggerBootstrap.h>
|
||||
|
||||
namespace YyyYyyYyy
|
||||
{
|
||||
|
||||
HandlerXxx::HandlerXxx(const std::shared_ptr<DdsHandler> &ddsHandler,
|
||||
const std::shared_ptr<DbHandler> &dbHandler,
|
||||
QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_ddsHandler(ddsHandler)
|
||||
, m_dbHandler(dbHandler)
|
||||
, m_logger(getLogger("HandlerXxx"))
|
||||
{}
|
||||
|
||||
HandlerXxx::~HandlerXxx()
|
||||
{}
|
||||
|
||||
bool HandlerXxx::init()
|
||||
{
|
||||
QVector<Database::YyyXxx> dataVec;
|
||||
// read all Xxxs from database
|
||||
if(!m_dbHandler->db()->select(dataVec))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error reading data from database!";
|
||||
return false;
|
||||
}
|
||||
|
||||
// create languageHmi objects
|
||||
for (const Database::YyyXxx &data : qAsConst(dataVec))
|
||||
{
|
||||
ObjectXxx *ifs(new ObjectXxx(m_ddsHandler, m_dbHandler, this));
|
||||
Core::FunctionReplyObject ret = ifs->createObject(data);
|
||||
if(ret.error())
|
||||
{
|
||||
delete ifs;
|
||||
ERROR_LOG(m_logger) << ret();
|
||||
return false;
|
||||
}
|
||||
m_xxxObjMap.insert(ifs->getId(), ifs);
|
||||
}
|
||||
|
||||
DEBUG_LOG(m_logger) << "m_exeObjMap.size() = " << m_xxxObjMap.size();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // Namespace YyyYyyYyy
|
||||
Executable
+39
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* Handler for all Language HMI objects
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-09-03
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QMap>
|
||||
|
||||
#include "dds_handler.h"
|
||||
#include "logger.h"
|
||||
|
||||
namespace YyyYyyYyy
|
||||
{
|
||||
class DbHandler;
|
||||
class ObjectXxx;
|
||||
class HandlerXxx : public QObject
|
||||
{
|
||||
public:
|
||||
HandlerXxx(const std::shared_ptr<DdsHandler> &ddsHandler,
|
||||
const std::shared_ptr<DbHandler> &dbHandler,
|
||||
QObject *parent = nullptr);
|
||||
|
||||
~HandlerXxx();
|
||||
|
||||
bool init();
|
||||
|
||||
private:
|
||||
|
||||
private:
|
||||
QMap<int, ObjectXxx*> m_xxxObjMap;
|
||||
std::shared_ptr<DdsHandler> m_ddsHandler;
|
||||
std::shared_ptr<DbHandler> m_dbHandler;
|
||||
NGL::INGLLogger &m_logger;
|
||||
|
||||
};
|
||||
}
|
||||
Executable
+68
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* Handler for the HMI language
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "object_xxx_xxx.h"
|
||||
|
||||
#include "dds_handler.h"
|
||||
#include "db_handler.h"
|
||||
#include "logger.h"
|
||||
|
||||
namespace YyyYyyYyy
|
||||
{
|
||||
|
||||
ObjectXxx::ObjectXxx(const std::shared_ptr<DdsHandler> &ddsHandler,
|
||||
const std::shared_ptr<DbHandler> &dbHandler,
|
||||
QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_ddsHandler(ddsHandler)
|
||||
, m_dbHandler(dbHandler)
|
||||
, m_logger(getLogger("ObjectXxx"))
|
||||
{
|
||||
}
|
||||
|
||||
ObjectXxx::~ObjectXxx()
|
||||
{
|
||||
}
|
||||
|
||||
Core::FunctionReplyObject ObjectXxx::createObject(const Database::YyyXxx &data)
|
||||
{
|
||||
m_data = data;
|
||||
if(m_data.id <= 0)
|
||||
return Core::FunctionReplyObject(m_data.id, "It is not intended to insert data this way...");
|
||||
|
||||
// Publish Data via DTS
|
||||
onPublishData();
|
||||
|
||||
return Core::FunctionReplyObject(m_data.id);
|
||||
}
|
||||
|
||||
Core::FunctionReplyObject ObjectXxx::updateObject(const Database::YyyXxx &data)
|
||||
{
|
||||
return Core::FunctionReplyObject(m_data.id, "You are not allowed to change this datum.");
|
||||
}
|
||||
|
||||
Core::FunctionReplyObject ObjectXxx::removeObject()
|
||||
{
|
||||
return Core::FunctionReplyObject(m_data.id, "Data removal denied.");
|
||||
}
|
||||
|
||||
void ObjectXxx::onPublishData()
|
||||
{
|
||||
|
||||
YyyYyyYyy::Xxx ddsData;
|
||||
|
||||
ddsData.id(m_data.id);
|
||||
// Todo: Copy as above
|
||||
INFO_LOG(m_logger) << "Publish YyyXxx-data to dds (" << m_data.id << ") ...";
|
||||
|
||||
if (!m_ddsHandler->dts()->publish(ddsData))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error publishing YyyXxx-data to dds";
|
||||
}
|
||||
}
|
||||
|
||||
} // Namespace YyyYyyYyy
|
||||
Executable
+49
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Exercise object
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include "dds_handler.h"
|
||||
#include "logger.h"
|
||||
|
||||
#include <DDS/Core/function_reply_object.h>
|
||||
|
||||
// Generated
|
||||
#include <YyyYyyYyy/yyy_db.h>
|
||||
|
||||
|
||||
namespace YyyYyyYyy
|
||||
{
|
||||
class DbHandler;
|
||||
|
||||
class ObjectXxx : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ObjectXxx(const std::shared_ptr<DdsHandler> &ddsHandler,
|
||||
const std::shared_ptr<DbHandler> &dbHandler,
|
||||
QObject *parent = nullptr);
|
||||
~ObjectXxx();
|
||||
|
||||
Core::FunctionReplyObject createObject(const Database::YyyXxx &data);
|
||||
Core::FunctionReplyObject updateObject(const Database::YyyXxx &data);
|
||||
Core::FunctionReplyObject removeObject();
|
||||
|
||||
int getId() const { return m_data.id; }
|
||||
|
||||
protected Q_SLOTS:
|
||||
void onPublishData();
|
||||
|
||||
private:
|
||||
std::shared_ptr<DdsHandler> m_ddsHandler;
|
||||
std::shared_ptr<DbHandler> m_dbHandler;
|
||||
Database::YyyXxx m_data;
|
||||
|
||||
NGL::INGLLogger &m_logger;
|
||||
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user