@Override public void call(List<MethodCall<Object>> methodCalls) { if (methodCalls.size() > 0) { String returnAddress = methodCalls.get(0).returnAddress(); @SuppressWarnings("unchecked") List<Message<Object>> methods = (List<Message<Object>>) (Object) methodCalls; sender.send(returnAddress, encoder.encodeAsString(methods)); } }
@Override public void flush() { if (methodCalls.size() > 0) { Message<Object> method; List<Message<Object>> methods; methods = new ArrayList<>(methodCalls.size()); do { method = methodCalls.poll(); methods.add(method); }while (method!=null); if (methods.size() > 0) { sender.send(((MethodCall<Object>) methods.get(0)).returnAddress(), encoder.encodeAsString(methods)); } } }
private void buildAndSendMessages(final Response<Object> message, long now) { if (outputMessages.size() == 0 && message == null) { return; } List<Response<Object>> messages = new ArrayList<>(outputMessages.size() + 1); Response<Object> currentMessage = outputMessages.poll(); while (currentMessage != null) { messages.add(currentMessage); currentMessage = outputMessages.poll(); } if (message != null) { messages.add(message); } protocolEncoderThreadPool.execute(() -> { @SuppressWarnings("unchecked") final String textMessage = encoderRef.get().encodeAsString((Collection<Message<Object>>) (Object) messages); serverWebSocket.getSender().sendText(textMessage); }); lastSend = now; }
public void handleResponseFromServiceBundleToWebSocketSender( final Response<Object> response, final WebSocketMessage originatingRequest) { //noinspection UnnecessaryLocalVariable @SuppressWarnings("UnnecessaryLocalVariable") final WebSocketMessage webSocketMessage = originatingRequest; try { //uts("handle WebSocket response", webSocketMessage.getRemoteAddress()); final WebSocketDelegate webSocketDelegate = this.webSocketDelegateMap.get(webSocketMessage.getRemoteAddress()); if (webSocketDelegate == null) { String responseAsText = encoderRef.get().encodeAsString(response); webSocketMessage.getSender().sendText(responseAsText); } else { webSocketDelegate.send(response); } } catch (Exception ex) { logger.warn("websocket unable to sendText response", ex); } }
public List<MethodCall<Object>> createMethodCallListToBeParsedFromBody( final String addressPrefix, final Object body, final Request<Object> originatingRequest) { List<MethodCall<Object>> methodCalls; if (body != null) { methodCalls = parserRef.get().parseMethodCallListUsingAddressPrefix(addressPrefix, body); } else { methodCalls = Collections.emptyList(); } if (methodCalls == null || methodCalls.size() == 0) { if (originatingRequest instanceof WebSocketMessage) { WebSocketMessage webSocketMessage = ((WebSocketMessage) originatingRequest); final Response<Object> response = ResponseImpl.response(-1, Timer.timer().now(), "SYSTEM", "ERROR", "CAN'T HANDLE CALL", originatingRequest, true); final WebSocketSender sender = webSocketMessage.getSender(); sender.sendText(encoderRef.get().encodeAsString(response)); } return Collections.emptyList(); } //noinspection Convert2streamapi for (MethodCall<Object> methodCall : methodCalls) { if (methodCall instanceof MethodCallImpl) { MethodCallImpl method = ((MethodCallImpl) methodCall); method.originatingRequest(originatingRequest); } } return methodCalls; }