aboutsummaryrefslogtreecommitdiffstats
path: root/Websocket/WebSocketService.cpp
diff options
context:
space:
mode:
authorLuca Muscariello <lumuscar+fdio@cisco.com>2017-02-25 23:42:31 +0100
committerLuca Muscariello <lumuscar+fdio@cisco.com>2017-02-25 23:42:31 +0100
commit05c1a838c881ea502888659848d8792843b28718 (patch)
treecf0b05b58bd725a1eb6c80325ba986c63dea42aa /Websocket/WebSocketService.cpp
parent9b30fc10fb1cbebe651e5a107e8ca5b24de54675 (diff)
Initial commit: video player - viper
Change-Id: Id5aa33598ce34659bad4a7a9ae5006bfb84f9bd1 Signed-off-by: Luca Muscariello <lumuscar+fdio@cisco.com>
Diffstat (limited to 'Websocket/WebSocketService.cpp')
-rw-r--r--Websocket/WebSocketService.cpp94
1 files changed, 94 insertions, 0 deletions
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 <stdio.h>
+
+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;
+}
+
+