58 lines
966 B
C++
58 lines
966 B
C++
/*
|
|
* SocketConnection.cpp
|
|
*
|
|
* Created on: Jun 13, 2018
|
|
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
|
|
*/
|
|
|
|
#include "SocketHandler.h"
|
|
|
|
|
|
using Poco::Net::StreamSocket;
|
|
using Poco::Net::TCPServerConnection;
|
|
using flippR_driver::input::InputDriver;
|
|
using flippR_driver::input::EventHandler;
|
|
using flippR_driver::input::Event;
|
|
|
|
namespace flippR_driver
|
|
{
|
|
namespace networking
|
|
{
|
|
namespace input
|
|
{
|
|
|
|
SocketHandler::SocketHandler(StreamSocket streamSocket, std::shared_ptr<InputDriver> inputDriver) :
|
|
TCPServerConnection(streamSocket),
|
|
EventHandler(inputDriver)
|
|
{
|
|
}
|
|
|
|
void SocketHandler::run()
|
|
{
|
|
StreamSocket& streamSocket = socket(); // todo ?
|
|
|
|
while(true)
|
|
{
|
|
Event event = this->queue->pop();
|
|
|
|
if(event.name == "END")
|
|
{
|
|
return;
|
|
}
|
|
|
|
std::string str = event.getJsonString();
|
|
|
|
streamSocket.sendBytes(str.c_str(), str.length());
|
|
}
|
|
}
|
|
|
|
void SocketHandler::handle(Event &event)
|
|
{
|
|
this->queue->push(event);
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|