From 05c1a838c881ea502888659848d8792843b28718 Mon Sep 17 00:00:00 2001 From: Luca Muscariello Date: Sat, 25 Feb 2017 23:42:31 +0100 Subject: Initial commit: video player - viper Change-Id: Id5aa33598ce34659bad4a7a9ae5006bfb84f9bd1 Signed-off-by: Luca Muscariello --- Websocket/WebSocketService.cpp | 94 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 Websocket/WebSocketService.cpp (limited to 'Websocket/WebSocketService.cpp') diff --git a/Websocket/WebSocketService.cpp b/Websocket/WebSocketService.cpp new file mode 100644 index 00000000..b2fd4e16 --- /dev/null +++ b/Websocket/WebSocketService.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "WebSocketService.h" +#include + +WebSocketService::WebSocketService() +{ + this->isRunning = false; +} +WebSocketService::~WebSocketService() +{ +} + +bool WebSocketService::start() +{ + if(this->isRunning) + return false; + + this->isRunning = true; + this->webSocketThread = createThreadPortable (listenWebsocket, this); + + if(this->webSocketThread == NULL) + { + this->isRunning = false; + return false; + } + return true; +} + +void WebSocketService::stop() +{ + if(!this->isRunning) + return; + + this->isRunning = false; + + if(this->webSocketThread != NULL) + { + JoinThread(this->webSocketThread); + destroyThreadPortable(this->webSocketThread); + } +} + +void* WebSocketService::listenWebsocket(void *webSocketServiceObject) +{ + WebSocketService *webSocketService = (WebSocketService *) webSocketServiceObject; + CommunicationProtocol protocol; + + protocol.setGraphDataSource(webSocketService->getGraphDataSource()); + + HandlerFunction handler = [&protocol](Server *s, websocketpp::connection_hdl hdl, message_ptr msg, const uint8_t *data, std::size_t size) { + + std::string command((char *) data, size); + + boost::trim(command); + + std::cout << command << std::endl; + + Query query = Query::fromJsonString(command); + + protocol.processQuery(s, hdl, msg, query ); + }; + + ConnectionPool connPool(8999); + connPool.startListeners(handler).processEvents(); + return NULL; +} + + +void WebSocketService::setGraphDataSource(GraphDataSource *graphDataSource) +{ + this->graphDataSource = graphDataSource; +} + + +GraphDataSource* WebSocketService::getGraphDataSource() +{ + return this->graphDataSource; +} + + -- cgit 1.2.3-korg