added ItemVarHolder

This commit is contained in:
Johannes Wendel
2019-08-29 22:19:21 +02:00
parent f7fe4ffca2
commit 919f75b238
7 changed files with 62 additions and 7 deletions

View File

@@ -11,6 +11,7 @@ set(LIB_DIR lib)
set(DEFAULT_BUILD_TYPE DEBUG)
set(CMAKE_CXX_STANDARD 14)
SET(DBoost_NO_BOOST_CMAKE=ON)
IF(NOT_PI)
add_definitions(-DNOT_PI)

View File

@@ -35,7 +35,7 @@ public:
std::map<std::string, std::shared_ptr<items::Lamp>> lamps, std::map<std::string, std::shared_ptr<items::Sound>> sounds,
std::map<std::string, std::shared_ptr<items::Flipper>> flippers, std::map<uint8_t, std::shared_ptr<output::items::Display>> displays);
~OutputDriver() = default;
~OutputDriver() = default;//TODO aufräumen
void activate_displays() const;
void deactivate_displays() const;

View File

@@ -9,6 +9,8 @@
#define _SRC_OUTPUT_ICABINETITEM_H_
#include <string>
#include <Poco/RefCountedObject.h>
#include <Poco/JSON/Object.h>
namespace flippR_driver
{

View File

@@ -7,7 +7,8 @@ set(SOURCES
output/OutputRequestHandler.cpp
output/OutputRequestHandlerFactory.cpp
FlippRServer.cpp
input/InputSocketHandlerFactory.cpp)
input/InputSocketHandlerFactory.cpp
output/ItemVarHolder.h)
add_executable(${PROJECT_NAME} ${SOURCES})

View File

@@ -0,0 +1,48 @@
//
// Created by johannes on 29.08.19.
//
#ifndef FLIPPR_DRIVER_ITEMVARHOLDER_H
#define FLIPPR_DRIVER_ITEMVARHOLDER_H
#include <Poco/Dynamic/VarHolder.h>
#include <memory>
#include "output/items/Item.h"
template <>
class Poco::Dynamic::VarHolderImpl<std::shared_ptr<flippR_driver::output::items::Item>> : public Poco::Dynamic::VarHolder
{
public:
VarHolderImpl(const std::shared_ptr<flippR_driver::output::items::Item> & item) :
item(item)
{}
void convert(std::string & val) const override
{
val = this->item->get_name();
}
VarHolder * clone(Placeholder < VarHolder > * pHolder = 0) const override
{
return cloneHolder(pHolder, item);
}
const std::type_info & type() const override
{
return typeid(item);
}
const std::shared_ptr<flippR_driver::output::items::Item> & value() const
{
return item;
}
private:
std::shared_ptr<flippR_driver::output::items::Item> item;
};
#endif //FLIPPR_DRIVER_ITEMVARHOLDER_H

View File

@@ -29,7 +29,6 @@ public:
~Item() override = default;
std::string get_name() const override;
protected:
const std::string name;

View File

@@ -2,13 +2,12 @@ import requests_unixsocket as req
import socket
class Networking:
output_session = req.Session()
input_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
server_address = ""
def __init__(self, output_server_address, input_socket_address):
self.server_address = "http+unix://" + output_server_address.replace("/", "%2F")
self.input_socket.connect(input_socket_address)
self.output_session = req.Session()
self.input_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.server_address = ""
print("Connected to " + input_socket_address + " and started server " + self.server_address)
def get(self, path):
@@ -18,10 +17,13 @@ class Networking:
def getSolenoids(self):
return self.get("/solenoids").json()
def getSounds(self):
return self.get("/sounds").json()
def getLamps(self):
return self.get("/lamps").json()
def getDisplays(self):
return self.get("/displays").json()
@@ -33,8 +35,10 @@ class Networking:
def activateLamp(self, lamp):
self.get("/lamps/" + lamp + "/activate")
def deactivateLamp(self, lamp):
self.get("/lamps/" + lamp + "/deactivate")
def lampStatus(self, lamp):
return self.get("/lamps/" + lamp + "/status").json()