This commit is contained in:
2015-05-26 02:52:15 +02:00
parent a3125d0e90
commit 519073ebab
18 changed files with 257 additions and 146 deletions
+3 -3
View File
@@ -1,5 +1,5 @@
{
"language": "python",
"language": "python2",
"globalcontext": { "code": "print(\"GlobalContext: Init!\")\nvar1 = 66.6\nvar2 = 0"},
"rules": {
"rule01": {
@@ -53,7 +53,7 @@
}
]
},
"script": { "code": "print(\"Dimmer 0 reached 100\")\nDevices[\"dummySwitch1\"].sendCommand({\"switch\": {\"set\": True}})" }
"script": { "code": "print(\"Dimmer 0 reached 100\")\nDevices[\"dummySwitch1\"].sendCommand({u\"switch\": {u\"set\": True}})" }
},
"rule05": {
"condition": {
@@ -68,7 +68,7 @@
}
]
},
"script": { "code": "print(\"Dimmer 0 left 100\")\nDevices[\"dummySwitch1\"].sendCommand({\"switch\": {\"set\": False}})" }
"script": { "code": "print(\"Dimmer 0 left 100\")\nDevices[\"dummySwitch1\"].sendCommand({u\"switch\": {\"set\": False}})" }
}
}
}
@@ -59,7 +59,7 @@ catkin_package(
add_definitions(
-std=c++11
-D_PYTHON_${USE_PYTHON_VERSION}_
-D_PYTHON_VERSION_=${USE_PYTHON_VERSION}
)
include_directories(
@@ -70,11 +70,11 @@ include_directories(
${PYTHON_INCLUDE_DIRS}
)
set(BUNDLE_SYMBOLICNAME "hos.hos_scripting_python")
set(BUNDLE_SYMBOLICNAME "hos.hos_scripting_python${USE_PYTHON_VERSION}")
set(BUNDLE_VERSION "1.0.0")
set(BUNDLE_NAME "hos_scripting_python")
set(BUNDLE_NAME "hos_scripting_python${USE_PYTHON_VERSION}")
bundle(hos_cosgi_scripting_python
bundle(hos_cosgi_scripting_python${USE_PYTHON_VERSION}
SOURCES
${PROJECT_SOURCE_DIR}/src/BundleActivator
${PROJECT_SOURCE_DIR}/src/hos/cosgi/service/scripting/python/PyScriptingServiceImpl
@@ -82,7 +82,7 @@ bundle(hos_cosgi_scripting_python
${PROJECT_SOURCE_DIR}/src/hos/cosgi/service/scripting/python/hosapi/PyHOSAPI
)
target_link_libraries(hos_cosgi_scripting_python
target_link_libraries(hos_cosgi_scripting_python${USE_PYTHON_VERSION}
${catkin_LIBRARIES}
${APR_LIBRARIES}
${Boost_LIBRARIES}
@@ -96,7 +96,7 @@ target_link_libraries(hos_cosgi_scripting_python
#############
install(FILES
${CMAKE_BINARY_DIR}/hos_cosgi_scripting_python.zip
${CMAKE_BINARY_DIR}/hos_cosgi_scripting_python${USE_PYTHON_VERSION}.zip
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/bundles
)
@@ -64,12 +64,14 @@ void PyScriptingService::init() noexcept {
ROS_INFO_STREAM("PyScriptingService: Python Version: " << version);
// Initialize HOS Python API
#if defined ( _PYTHON_2_ )
#if not defined ( _PYTHON_VERSION_ )
#error "Python version not defined"
#elif ( _PYTHON_VERSION_ == 2 )
inithos();
#elif defined ( _PYTHON_3_ )
#elif ( _PYTHON_VERSION_ == 3 )
init_module_hos();
#else
#error "Python version not defined"
#error "Unknown Python version"
#endif
deviceService.reset(new hosapi::PyDeviceRepositoryWrapper(repoService));
@@ -126,7 +126,15 @@ private:
public:
/** Language identifier. */
static constexpr const char* LANGUAGE = "python";
#if not defined ( _PYTHON_VERSION_ )
#error "Python version not defined"
#elif ( _PYTHON_VERSION_ == 2 )
static constexpr const char* LANGUAGE = "python2";
#elif ( _PYTHON_VERSION_ == 3 )
static constexpr const char* LANGUAGE = "python3";
#else
#error "Unknown Python version"
#endif
/* Initialization */
@@ -12,12 +12,14 @@
/**
* This function declares the python hos module.
*/
#if defined ( _PYTHON_2_ )
#if not defined ( _PYTHON_VERSION_ )
#error "Python version not defined"
#elif ( _PYTHON_VERSION_ == 2 )
extern "C" void inithos();
#elif defined ( _PYTHON_3_ )
#elif ( _PYTHON_VERSION_ == 3 )
extern "C" void init_module_hos();
#else
#error "Python version not defined"
#error "Unknown Python version"
#endif
@@ -15,7 +15,7 @@ namespace utils {
boost::python::object convertVariantToBoostPython(const libvariant::Variant& var) noexcept {
boost::python::object convertVariantToBoostPython(const libvariant::Variant& var) {
if (var.IsBool()) {
return boost::python::object(var.AsBool());
} else if (var.IsFloat()) {
@@ -45,15 +45,22 @@ boost::python::object convertVariantToBoostPython(const libvariant::Variant& var
}
libvariant::Variant convertBoostPythonTovariant(const boost::python::object& obj) noexcept {
libvariant::Variant convertBoostPythonTovariant(const boost::python::object& obj) {
libvariant::Variant retval;
if (!obj.is_none()) {
if (PyObject_TypeCheck(obj.ptr(), &PyUnicode_Type)) {
retval = libvariant::Variant(boost::python::extract<std::string>(boost::python::str(obj).encode()));
//retval = libvariant::Variant(boost::python::extract<std::string>(obj));
} else if (PyObject_TypeCheck(obj.ptr(), &PyBytes_Type)) {
retval = libvariant::Variant(boost::python::extract<std::string>(obj));
} else if (PyObject_TypeCheck(obj.ptr(), &PyBool_Type)) {
retval = libvariant::Variant(boost::python::extract<bool>(obj));
} else if (PyObject_TypeCheck(obj.ptr(), &PyFloat_Type)) {
retval = libvariant::Variant(boost::python::extract<double>(obj));
#if ( _PYTHON_VERSION_ == 2 )
} else if (PyObject_TypeCheck(obj.ptr(), &PyInt_Type)) {
retval = libvariant::Variant(boost::python::extract<int>(obj));
#endif
} else if (PyObject_TypeCheck(obj.ptr(), &PyLong_Type)) {
retval = libvariant::Variant(boost::python::extract<long>(obj));
} else if (PyObject_TypeCheck(obj.ptr(), &PyDict_Type)) {
@@ -22,7 +22,7 @@ namespace utils {
* \param[in] variant object.
* \return boost python object.
*/
boost::python::object convertVariantToBoostPython(const libvariant::Variant& var) noexcept;
boost::python::object convertVariantToBoostPython(const libvariant::Variant& var);
/**
@@ -31,7 +31,7 @@ boost::python::object convertVariantToBoostPython(const libvariant::Variant& var
* \param[in] boost python object.
* \return variant object.
*/
libvariant::Variant convertBoostPythonTovariant(const boost::python::object& obj) noexcept;
libvariant::Variant convertBoostPythonTovariant(const boost::python::object& obj);
+2 -2
View File
@@ -52,8 +52,8 @@ set(BUNDLE_NAME "hos_webserver")
bundle(hos_cosgi_webserver
SOURCES
${PROJECT_SOURCE_DIR}/src/bundle_activator
${PROJECT_SOURCE_DIR}/src/hos/cosgi/service/webserver/webserver_serviceimpl
${PROJECT_SOURCE_DIR}/src/BundleActivator
${PROJECT_SOURCE_DIR}/src/hos/cosgi/service/webserver/WebServerServiceImpl
${PROJECT_SOURCE_DIR}/src/hos/cosgi/service/webserver/resources/DevicesHTTPResource
${PROJECT_SOURCE_DIR}/src/hos/cosgi/service/webserver/resources/SchemaHTTPResource
)
@@ -0,0 +1,57 @@
#pragma once
#include <hos/cosgi/service/Interface.h>
#include <Variant/Variant.h>
#include <memory>
#include <vector>
// forward declarations
namespace httpserver { class webserver;}
// service namespace
namespace hos {
namespace cosgi {
namespace service {
namespace webserver {
// forward declarations
class WebServerService;
class WebResource
: public virtual interface::Object {
public:
virtual void init( const std::vector<std::string>& prefixPath,
const std::string& registeredPath,
const std::string& absolutePath,
httpserver::webserver& webserver,
WebServerService& service ) = 0;
};
class WebServerService
: public virtual interface::Service {
public:
static constexpr const char* SERVICE_NAME = "hos_webserver_service";
virtual void registerWebResource(const std::string& path, std::shared_ptr<WebResource> resource) = 0;
};
} // namespace webserver
} // namespace service
} // namespace cosgi
} // namespace hos
@@ -1,32 +0,0 @@
/*
* hos_ruleengine_service.h
*
* Created on: 26.04.2015
* Author: matzman
*/
#pragma once
#include <hos/cosgi/service/Interface.h>
#include <memory>
#include <Variant/Variant.h>
namespace hos {
namespace cosgi {
namespace service {
namespace webserver {
class WebServerService : public virtual interface::Service {
public:
static constexpr const char* SERVICE_NAME = "hos_webserver_service";
};
} // namespace webserver
} // namespace service
} // namespace cosgi
} // namespace hos
@@ -21,7 +21,7 @@ extern "C" {
}
#include <hos/cosgi/service/core/CoreService.h>
#include "hos/cosgi/service/webserver/webserver_serviceimpl.h"
#include "hos/cosgi/service/webserver/WebServerServiceImpl.h"
#include <memory>
#include <mutex>
@@ -1,18 +1,8 @@
/*
* hos_ruleengine_service_impl.cpp
*
* Created on: 26.04.2015
* Author: matzman
*/
#include "webserver_serviceimpl.h"
#include "WebServerServiceImpl.h"
#include <boost/algorithm/string.hpp>
#include <ros/ros.h>
#include <exception>
#include <iostream>
#include <unordered_set>
#include <Variant/Variant.h>
#include <celix/bundle_context.h>
#include <Variant/Variant.h>
namespace hos {
@@ -20,19 +10,24 @@ namespace cosgi {
namespace service {
namespace webserver {
using namespace ::libvariant;
using namespace libvariant;
using namespace httpserver;
template<> const char* implementation::ServiceInfo<WebServerServiceImpl>::name = service::webserver::WebServerServiceImpl::SERVICE_NAME;
template<> const int implementation::ServiceInfo<WebServerServiceImpl>::major = 0;
template<> const int implementation::ServiceInfo<WebServerServiceImpl>::minor = 6;
template<> const int implementation::ServiceInfo<WebServerServiceImpl>::major = 1;
template<> const int implementation::ServiceInfo<WebServerServiceImpl>::minor = 0;
WebServerServiceImpl::~WebServerServiceImpl() {
webServer->stop();
}
void WebServerServiceImpl::setCoreService(service::core::CoreService* coreService) {
void WebServerServiceImpl::setCoreService(service::core::CoreService* coreService) noexcept {
if (coreService && !this->coreService) {
this->coreService = coreService;
this->nodehandle = &coreService->getPrivateNodeHandle();
@@ -45,7 +40,8 @@ void WebServerServiceImpl::setCoreService(service::core::CoreService* coreServic
}
}
void WebServerServiceImpl::setRepoService(devicerepository::DeviceRepositoryService* repoService) {
void WebServerServiceImpl::setRepoService(devicerepository::DeviceRepositoryService* repoService) noexcept {
if (repoService && !this->repoService) {
this->repoService = repoService;
int major = 0, minor = 0;
@@ -57,28 +53,53 @@ void WebServerServiceImpl::setRepoService(devicerepository::DeviceRepositoryServ
}
}
void WebServerServiceImpl::init() {
void WebServerServiceImpl::init() noexcept {
// Create and start webserver
create_webserver serverParams(8888);
serverParams.max_threads(5).regex_checking();
serverParams.max_threads(5);
webServer.reset(new webserver::webserver(serverParams));
devicesResource.reset(new resources::DevicesHTTPResource(repoService, 2));
schemaResource.reset(new resources::SchemaHTTPResource(nodehandle, 2));
webServer->register_resource("/hos/devices", devicesResource.get(), true);
webServer->register_resource("/hos/schemas", schemaResource.get(), true);
// Register web resources
registerWebResource( "/schemas",
std::make_shared<resources::SchemaHTTPResource>(nodehandle, &coreService->getSchemaLoader())
);
registerWebResource( "/devices",
std::make_shared<resources::DevicesHTTPResource>(repoService)
);
webServer->start(false);
initialized = true;
ROS_INFO_STREAM("WebServerService: Initialized and Ready.");
}
void WebServerServiceImpl::registerWebResource(const std::string& path, std::shared_ptr<WebResource> resource) {
std::string apath = getAbsolutePath(path);
if (webResources.find(apath) == webResources.end()) {
resource->init(prefixPath, path, apath, *webServer, *this);
webResources[apath] = resource;
}
}
std::string WebServerServiceImpl::getAbsolutePath(const std::string& path) {
std::stringstream ss;
for (auto p : prefixPath) {
ss << "/" << p;
}
std::string tpath = boost::algorithm::trim_copy(path);
if (tpath[0] != '/') {
ss << "/";
}
ss << tpath;
return ss.str();
}
} // namespace webserver
} // namespace service
} // namespace cosgi
} // namespace hos
@@ -1,24 +1,16 @@
/*
* hos_ruleengine_service_impl.h
*
* Created on: 26.04.2015
* Author: matzman
*/
#pragma once
#include <hos/cosgi/service/core/CoreService.h>
#include <mutex>
#include <map>
#include <set>
#include <hos/cosgi/service/devicerepository/DeviceRepositoryService.h>
#include <hos/cosgi/service/webserver/webserver_service.h>
#include <hos/cosgi/service/webserver/WebServerService.h>
#include <hos/cosgi/service/Implementation.h>
#include <ros/ros.h>
#include <hos/cosgi/service/core/CoreService.h>
#include <hos/cosgi/service/devicerepository/DeviceRepositoryService.h>
#include <mutex>
#include <memory>
#include <string>
#include <map>
#include <vector>
#include <httpserver.hpp>
#include "resources/SchemaHTTPResource.h"
#include "resources/DevicesHTTPResource.h"
@@ -32,48 +24,55 @@ namespace service {
namespace webserver {
class WebServerServiceImpl;
class WebServerServiceImpl :
public virtual WebServerService,
public implementation::Service<WebServerServiceImpl> {
class WebServerServiceImpl
: public virtual WebServerService,
public implementation::Service<WebServerServiceImpl> {
private:
service::core::CoreService* coreService = nullptr;
devicerepository::DeviceRepositoryService* repoService = nullptr;
ros::NodeHandle* nodehandle = nullptr;
std::vector<std::string> prefixPath = { "hos" };
bool initialized = false;
std::unique_ptr<httpserver::webserver> webServer;
std::unique_ptr<resources::DevicesHTTPResource> devicesResource;
std::unique_ptr<resources::SchemaHTTPResource> schemaResource;
std::map<std::string, std::shared_ptr<WebResource>> webResources;
void init();
void init() noexcept;
public:
~WebServerServiceImpl();
/* Initialization */
void setCoreService(service::core::CoreService* coreService);
void setRepoService(devicerepository::DeviceRepositoryService* repoService);
void setCoreService(service::core::CoreService* coreService) noexcept;
void setRepoService(devicerepository::DeviceRepositoryService* repoService) noexcept;
/* Public Service Implementations */
/* Observer Callbacks */
/* Internal Stuff */
virtual void registerWebResource(const std::string& path, std::shared_ptr<WebResource> resource);
bool isInitialized() { return initialized; }
devicerepository::DeviceRepositoryService* getDeviceRepository() { return repoService; }
/* Internal */
bool isInitialized() noexcept {
return initialized;
}
std::string getAbsolutePath(const std::string& path);
};
} // namespace webserver
} // namespace service
} // namespace cosgi
} // namespace hos
@@ -26,21 +26,26 @@ public:
};
DevicesHTTPResource::DevicesHTTPResource(devicerepository::DeviceRepositoryService* repoService, size_t prefixPathPieces)
: repoService(repoService), prefixPathPieces(prefixPathPieces) {
void DevicesHTTPResource::init( const std::vector<std::string>& prefixPath,
const std::string& registeredPath,
const std::string& absolutePath,
httpserver::webserver& webserver,
WebServerService& service ) {
this->prefixPath = prefixPath;
disallow_all();
set_allowing(MHD_HTTP_METHOD_GET, true);
set_allowing(MHD_HTTP_METHOD_POST, true);
webserver.register_resource(absolutePath, this, true);
}
void DevicesHTTPResource::render_GET(const httpserver::http_request& req, httpserver::http_response** res) {
std::cout << "DevicesHTTPResource::render_GET()" << std::endl;
std::cout << req;
try {
if (req.get_path_pieces_size() < prefixPathPieces) {
if (req.get_path_pieces_size() < prefixPath.size() + 1) {
ROS_ERROR_STREAM("Requested path " << req.get_path() << " has fewer pieces than prefix path.");
throw ResourceException("Internal Server Error", 500);
} else {
@@ -62,7 +67,7 @@ void DevicesHTTPResource::render_GET(const httpserver::http_request& req, httpse
}
}
if (req.get_path_pieces_size() == prefixPathPieces) {
if (req.get_path_pieces_size() == prefixPath.size() + 1) {
if (isSetCommand) {
throw ResourceException("No device given for set command.", 400);
}
@@ -72,12 +77,12 @@ void DevicesHTTPResource::render_GET(const httpserver::http_request& req, httpse
}
*res = new http_response(http_response_builder(SerializeJSON(result, true), 200).string_response());
} else {
std::string devid = req.get_path_piece(prefixPathPieces);
std::string devid = req.get_path_piece(prefixPath.size() + 2);
auto device = repoService->getDevice(devid);
if (!device.expired()) {
if (isSetCommand) {
std::vector<std::string> path;
for (int i = prefixPathPieces+1; i < req.get_path_pieces_size(); i++) {
for (int i = prefixPath.size() + 2; i < req.get_path_pieces_size(); i++) {
path.push_back(req.get_path_piece(i));
}
try {
@@ -89,11 +94,11 @@ void DevicesHTTPResource::render_GET(const httpserver::http_request& req, httpse
}
} else {
std::string info;
if (req.get_path_pieces_size() > prefixPathPieces+1) {
info = req.get_path_piece(prefixPathPieces+1);
if (req.get_path_pieces_size() > prefixPath.size() + 2) {
info = req.get_path_piece(prefixPath.size() + 2);
}
std::stringstream ss;
for (int i = prefixPathPieces+2; i < req.get_path_pieces_size(); i++) {
for (int i = prefixPath.size() + 3; i < req.get_path_pieces_size(); i++) {
ss << "/" << req.get_path_piece(i);
}
std::string path = ss.str();
@@ -116,7 +121,7 @@ void DevicesHTTPResource::render_GET(const httpserver::http_request& req, httpse
Variant DevicesHTTPResource::getDeviceInfo(devicerepository::Device* device, std::string info, const std::string path) {
Variant DevicesHTTPResource::getDeviceInfo(devicerepository::Device* device, const std::string& info, const std::string& path) {
Variant retval;
if (info.empty()) {
retval["type"] = device->getDeviceType();
@@ -168,7 +173,7 @@ Variant DevicesHTTPResource::getDeviceInfo(devicerepository::Device* device, std
return retval;
}
void DevicesHTTPResource::setDeviceState(devicerepository::Device* device, Variant cmd, std::vector<std::string> path) {
void DevicesHTTPResource::setDeviceState(devicerepository::Device* device, const Variant& cmd, std::vector<std::string> path) {
Variant cmdMsg;
if (path.size() > 0) {
Variant& current = cmdMsg;
@@ -2,12 +2,15 @@
#pragma once
#include <ros/ros.h>
#include <httpserver.hpp>
#include <hos/cosgi/service/webserver/WebServerService.h>
#include <hos/cosgi/service/devicerepository/DeviceRepositoryService.h>
#include <Variant/Variant.h>
#include <ros/ros.h>
#include <httpserver.hpp>
#include <string>
// Service Namespace
namespace hos {
namespace cosgi {
@@ -17,19 +20,35 @@ namespace resources {
class DevicesHTTPResource : public httpserver::http_resource<DevicesHTTPResource> {
class DevicesHTTPResource
: public virtual webserver::WebResource,
public httpserver::http_resource<DevicesHTTPResource> {
private:
devicerepository::DeviceRepositoryService* repoService = nullptr;
size_t prefixPathPieces;
std::vector<std::string> prefixPath;
public:
DevicesHTTPResource(devicerepository::DeviceRepositoryService* repoService, size_t prefixPathPieces);
DevicesHTTPResource(devicerepository::DeviceRepositoryService* repoService)
: repoService(repoService) {}
virtual void init( const std::vector<std::string>& prefixPath,
const std::string& registeredPath,
const std::string& absolutePath,
httpserver::webserver& webserver,
webserver::WebServerService& service );
void render_GET(const httpserver::http_request& req, httpserver::http_response** res);
void render_POST(const httpserver::http_request& req, httpserver::http_response** res);
::libvariant::Variant getDeviceInfo(devicerepository::Device* device, const std::string info = std::string(), const std::string path = std::string());
libvariant::Variant getDeviceInfo( devicerepository::Device* device,
const std::string& info = std::string(),
const std::string& path = std::string() );
void setDeviceState(devicerepository::Device* device, ::libvariant::Variant cmd, std::vector<std::string> path = std::vector<std::string>());
void setDeviceState( devicerepository::Device* device,
const libvariant::Variant& cmd,
std::vector<std::string> path = std::vector<std::string>() );
};
} // namespace resources
@@ -3,6 +3,7 @@
#include <boost/format.hpp>
// Service Namespace
namespace hos {
namespace cosgi {
@@ -10,27 +11,34 @@ namespace service {
namespace webserver {
namespace resources {
using namespace httpserver;
using namespace libvariant;
SchemaHTTPResource::SchemaHTTPResource(ros::NodeHandle* nodehandle, size_t prefixPathPieces)
: nodehandle(nodehandle), prefixPathPieces(prefixPathPieces) {
void SchemaHTTPResource::init( const std::vector<std::string>& prefixPath,
const std::string& registeredPath,
const std::string& absolutePath,
httpserver::webserver& webserver,
WebServerService& service ) {
this->prefixPath = prefixPath;
disallow_all();
set_allowing(MHD_HTTP_METHOD_GET, true);
schemaLoader.reset(new utils::SchemaLoader());
webserver.register_resource(absolutePath, this, true);
}
void SchemaHTTPResource::render_GET(const httpserver::http_request& req, httpserver::http_response** res) {
if (req.get_path_pieces_size() < prefixPathPieces) {
if (req.get_path_pieces_size() < prefixPath.size() + 1) {
ROS_ERROR_STREAM("Requested path " << req.get_path() << " has fewer pieces than prefix path.");
*res = new http_response(http_response_builder("Internal Server Error", 500).string_response());
} else if (req.get_path_pieces_size() == prefixPathPieces) {
} else if (req.get_path_pieces_size() == prefixPath.size() + 1) {
*res = new http_response(http_response_builder("No schema given", 400).string_response());
} else {
std::stringstream ss;
for (int i = prefixPathPieces; i < req.get_path_pieces_size(); i++) {
for (int i = prefixPath.size() + 1; i < req.get_path_pieces_size(); i++) {
ss << "/" << req.get_path_piece(i);
}
auto schemaPath = (boost::format("hos:schema:/%1%") % ss.str()).str();
@@ -2,9 +2,13 @@
#pragma once
#include <hos/cosgi/service/webserver/WebServerService.h>
#include <hos/utils/SchemaLoader.h>
#include <ros/ros.h>
#include <httpserver.hpp>
#include <hos/utils/SchemaLoader.h>
#include <vector>
// Service Namespace
namespace hos {
@@ -15,13 +19,24 @@ namespace resources {
class SchemaHTTPResource : public httpserver::http_resource<SchemaHTTPResource> {
class SchemaHTTPResource
: public virtual webserver::WebResource,
public httpserver::http_resource<SchemaHTTPResource> {
private:
ros::NodeHandle* nodehandle = nullptr;
std::unique_ptr<utils::SchemaLoader> schemaLoader;
size_t prefixPathPieces;
utils::SchemaLoader* schemaLoader = nullptr;
std::vector<std::string> prefixPath;
public:
SchemaHTTPResource(ros::NodeHandle* nodehandle, size_t prefixPathPieces);
SchemaHTTPResource(ros::NodeHandle* nodehandle, utils::SchemaLoader* schemaLoader)
: nodehandle(nodehandle), schemaLoader(schemaLoader) {}
virtual void init( const std::vector<std::string>& prefixPath,
const std::string& registeredPath,
const std::string& absolutePath,
httpserver::webserver& webserver,
WebServerService& service );
void render_GET(const httpserver::http_request& req, httpserver::http_response** res);
};
+1 -1
View File
@@ -9,7 +9,7 @@
$(find hos_cosgi_core)/../../devel_isolated/hos_celix/share/celix/bundles/log_writer_syslog.zip
$(find hos_cosgi_core)/../../devel_isolated/hos_celix/share/celix/bundles/shell.zip
$(find hos_cosgi_core)/../../devel_isolated/hos_celix/share/celix/bundles/shell_tui.zip
$(find hos_cosgi_core)/../../build_isolated/hos_cosgi_scripting_python/hos_cosgi_scripting_python.zip
$(find hos_cosgi_core)/../../build_isolated/hos_cosgi_scripting_python/hos_cosgi_scripting_python2.zip
$(find hos_cosgi_core)/../../build_isolated/hos_cosgi_ruleengine/hos_cosgi_ruleengine.zip
$(find hos_cosgi_core)/../../build_isolated/hos_cosgi_devicerepository/hos_cosgi_devicerepository.zip
$(find hos_cosgi_core)/../../build_isolated/hos_cosgi_webserver/hos_cosgi_webserver.zip"/>