diff options
author | Christopher Lott (cl778h) <clott@research.att.com> | 2017-08-31 15:16:38 -0400 |
---|---|---|
committer | Christopher Lott (cl778h) <clott@research.att.com> | 2017-08-31 15:42:50 -0400 |
commit | 7f535078ef80a7b7efa3e3325bfccb994fbd00e8 (patch) | |
tree | 66d908df2eb7cf0b048f754eac6b44619255eb8a /ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/web/socket/WebRTCSocket.java | |
parent | 224487bc124df7988442a60d72d4aa106697306b (diff) |
Rename packages to org.onap in 1.4.0-SNAPSHOT
19 - remove openecomp
72 - remediate Sonar scan issues
79 - removed unwanted left menu under Report
90 - apply approved license text
Issue: PORTAL-19, PORTAL-72, PORTAL-79, PORTAL-90
Change-Id: I41a0ef5fba623d2242574bd15f2d9fb8029a496c
Signed-off-by: Christopher Lott (cl778h) <clott@research.att.com>
Diffstat (limited to 'ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/web/socket/WebRTCSocket.java')
-rw-r--r-- | ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/web/socket/WebRTCSocket.java | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/web/socket/WebRTCSocket.java b/ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/web/socket/WebRTCSocket.java new file mode 100644 index 00000000..76cb3b8f --- /dev/null +++ b/ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/web/socket/WebRTCSocket.java @@ -0,0 +1,161 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the “License”); + * you may not use this software 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. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the “License”); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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. + * + * ============LICENSE_END============================================ + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.portalsdk.core.web.socket; + +import java.util.Hashtable; +import java.util.Map; + +import javax.websocket.OnClose; +import javax.websocket.OnMessage; +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.server.ServerEndpoint; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@ServerEndpoint("/webrtc") +public class WebRTCSocket { + + + public static Map<String,Hashtable<String,Object[]>> channelMap = new Hashtable<String,Hashtable<String,Object[]>>(); + public Map<String,String> sessionMap = new Hashtable<String,String>(); + ObjectMapper mapper = new ObjectMapper(); + + + @OnMessage + public void message(String message, Session session) { + try { + //JSONObject jsonObject = new JSONObject(message); + @SuppressWarnings("unchecked") + Map<String,Object> jsonObject = mapper.readValue(message, Map.class); + try { + Object isOpen = jsonObject.get("open"); + if(isOpen != null && (Boolean)isOpen == true) { + String channel = (String) jsonObject.get("channel"); + Object value = channelMap.get(channel); + Hashtable<String,Object[]> sourceDestMap = null; + if(value == null) + sourceDestMap = new Hashtable<String,Object[]>(); + else + sourceDestMap = (Hashtable<String,Object[]>) value; + + sourceDestMap.put(session.getId(), new Object[]{session}); + channelMap.put(channel, sourceDestMap); + sessionMap.put(session.getId(), channel); + + + } + } + catch (Exception je) { + je.printStackTrace(); + } + + try{ + + Object dataObj = jsonObject.get("data"); + if(dataObj == null) + return; + Map<String,Object> dataMapObj = ( Map<String,Object>)dataObj; + //Object thisUserId = dataMapObj.get("userid"); + String channel = null; + try{ + Object channelObj = dataMapObj.get("sessionid"); + if(channelObj != null) + channel = (String) channelObj; + else + channel = (String) jsonObject.get("channel"); + } + catch(Exception json) { + json.printStackTrace(); + } + + /* + JSONObject dataMapObj = (JSONObject)dataObj; + Object thisUserId = dataMapObj.get("userid"); + String channel = (String) dataMapObj.get("sessionid"); + Hashtable<String,Object> sourceDestMap = sessionMap.get(channel); + + if(thisUserId != null && sourceDestMap.get((String)thisUserId) == null) { + sourceDestMap.put((String)thisUserId, new Object[] {message, session}); + } + + for(String userId : sourceDestMap.keySet()){ + if(!userId.equals(thisUserId)) { + Session otherSession = (Session) ((Object[])sourceDestMap.get(userId))[1]; + otherSession.getBasicRemote().sendText(message); + } + } + */ + + Hashtable<String,Object[]> sourceDestMap = channelMap.get(channel); + if(sourceDestMap != null) + for(String id : sourceDestMap.keySet()){ + if(!id.equals(session.getId())) { + Session otherSession = (Session) ((Object[])sourceDestMap.get(id))[0]; + if(otherSession.isOpen()) + otherSession.getBasicRemote().sendText(mapper.writeValueAsString(dataObj)); + } + + } + } + catch (Exception je) { + je.printStackTrace(); + } + + } + catch (Exception je) { + je.printStackTrace(); + } + //System.out.println("Message received:" + message); + } + + @OnOpen + public void open(Session session) { + // System.out.println("Channel opened"); + } + + @OnClose + public void close(Session session) { + String channel = sessionMap.get(session.getId()); + if (channel != null) { + channelMap.remove(channel); + } + // System.out.println("Channel closed"); + } + +} |