diff options
Diffstat (limited to '')
-rw-r--r-- | sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebSocketRequestHandler.java | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebSocketRequestHandler.java b/sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebSocketRequestHandler.java deleted file mode 100644 index 59d8af3133..0000000000 --- a/sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebSocketRequestHandler.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -package org.apache.tuscany.sca.binding.websocket.runtime; - -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.nio.channels.SocketChannel; - -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.runtime.RuntimeEndpoint; -import org.apache.websocket.WebSocket; - -public class WebSocketRequestHandler implements Runnable { - - private WebSocket<SocketChannel> websocket; - private WebSocketOperationDispatcher dispatcher; - - public WebSocketRequestHandler(WebSocket<SocketChannel> socket, WebSocketOperationDispatcher dispatcher) { - this.websocket = socket; - this.dispatcher = dispatcher; - } - - @Override - public void run() { - while (true) { - try { - // TODO use Java NIO selectors on websockets - String request = websocket.receiveText(); - String response = handleRequest(request); - websocket.sendText(response); - } catch (IOException e) { - if (!websocket.isOpen()) { - System.out.println("Client disconnected. Stopping WebSocketRequestHandler."); - break; - } else { - throw new RuntimeException(e); - } - } - } - } - - // TODO handle request asynchronously in a background thread - private String handleRequest(String jsonRequest) { - WebSocketBindingRequest request = JSONUtil.decodeRequest(jsonRequest); - RuntimeEndpoint wire = dispatcher.getEndpoint(request.getUri()); - Operation operation = dispatcher.getOperation(request.getUri()); - System.out.println("handleRequest - " + request.getUri() + " - " + wire + " - " + operation); - String jsonParams = request.getPayload(); - Object[] args = JSONUtil.decodeJsonParamsForOperation(jsonParams, operation); - try { - Object operationResponse = wire.invoke(operation, args); - String payload = JSONUtil.encodeResponse(operationResponse); - WebSocketBindingResponse response = new WebSocketBindingResponse(request.getRequestId(), payload); - return JSONUtil.encodeResponse(response); - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } - } - -} |