public void cancel() { Response errorResult = new Response(id); errorResult.setErrorMessage("request future has been canceled."); response = errorResult; FUTURES.remove(id); CHANNELS.remove(id); }
private Object returnFromResponse() throws RemotingException { Response res = response; if (res == null) { throw new IllegalStateException("response cannot be null"); } if (res.getStatus() == Response.OK) { return res.getResult(); } if (res.getStatus() == Response.CLIENT_TIMEOUT || res.getStatus() == Response.SERVER_TIMEOUT) { throw new TimeoutException(res.getStatus() == Response.SERVER_TIMEOUT, channel, res.getErrorMessage()); } throw new RemotingException(channel, res.getErrorMessage()); }
@Deprecated public void setHeartbeat(boolean isHeartbeat) { if (isHeartbeat) { setEvent(HEARTBEAT_EVENT); } }
Class User{ public User(Response response) { setName(response.getName()); setId(response.getId()); setType(response.getType()); setDesignation(response.getDesignation()); } }
@RequestMapping(value = "/test/", method = RequestMethod.GET) public Response getFileTest(@RequestParam(value="path", defaultValue="/home") String path){ RestTemplate restTemplate = new RestTemplate(); Response response = restTemplate.getForObject("http://localhost:8086/ATS/client/file/?path={path}", Response.class, path); if (response.isStatus() && response.isSuccess()){ try { byte[] parseBase64Binary = DatatypeConverter.parseBase64Binary((String)response.getResult()); Files.write(Paths.get("test.txt"),parseBase64Binary ); } catch (IOException e) { } } return response; }
if ((flag & FLAG_REQUEST) == 0) { Response res = new Response(id); if ((flag & FLAG_EVENT) != 0) { res.setEvent(Response.HEARTBEAT_EVENT); res.setStatus(status); if (status == Response.OK) { try { Object data; if (res.isHeartbeat()) { data = decodeHeartbeatData(channel, in); } else if (res.isEvent()) { data = decodeEventData(channel, in); } else { data = decodeResponseData(channel, in, getRequestData(id)); res.setResult(data); } catch (Throwable t) { res.setStatus(Response.CLIENT_ERROR); res.setErrorMessage(StringUtils.toString(t)); res.setErrorMessage(in.readUTF());
if (res.isHeartbeat()) header[2] |= FLAG_EVENT; byte status = res.getStatus(); header[3] = status; Bytes.long2bytes(res.getId(), header, 4); if (res.isHeartbeat()) { encodeHeartbeatData(channel, out, res.getResult()); } else { encodeResponseData(channel, out, res.getResult()); out.writeUTF(res.getErrorMessage()); out.flushBuffer(); } finally { if (!res.isEvent() && res.getStatus() != Response.BAD_RESPONSE) { Response r = new Response(res.getId(), res.getVersion()); r.setStatus(Response.BAD_RESPONSE); r.setErrorMessage(t.getMessage()); channel.send(r); return; + t.getMessage(), t); try { r.setErrorMessage("Failed to send response: " + res + ", cause: " + StringUtils.toString(t)); channel.send(r);
/** * close a channel when a channel is inactive * directly return the unfinished requests. * * @param channel channel to close */ public static void closeChannel(Channel channel) { for (long id : CHANNELS.keySet()) { if (channel.equals(CHANNELS.get(id))) { DefaultFuture future = getFuture(id); if (future != null && !future.isDone()) { Response disconnectResponse = new Response(future.getId()); disconnectResponse.setStatus(Response.CHANNEL_INACTIVE); disconnectResponse.setErrorMessage("Channel " + channel + " is inactive. Directly return the unFinished request : " + future.getRequest()); DefaultFuture.received(channel, disconnectResponse); } } } }
Response handleRequest(ExchangeChannel channel, Request req) throws RemotingException { Response res = new Response(req.getId(), req.getVersion()); if (req.isBroken()) { Object data = req.getData(); String msg; if (data == null) msg = null; else if (data instanceof Throwable) msg = StringUtils.toString((Throwable) data); else msg = data.toString(); res.setErrorMessage("Fail to decode request due to: " + msg); res.setStatus(Response.BAD_REQUEST); return res; } // find handler by message class. Object msg = req.getData(); try { // handle data. Object result = handler.reply(channel, msg); res.setStatus(Response.OK); res.setResult(result); } catch (Throwable e) { res.setStatus(Response.SERVICE_ERROR); res.setErrorMessage(StringUtils.toString(e)); } return res; }
@Override public void received( Channel channel, Object message ) throws RemotingException { if ( message instanceof Request ) { Request req = ( Request ) message; if ( req.isHeartbeat() ) { heartBeatCounter.incrementAndGet(); channel.setAttribute(KEY_READ_TIMESTAMP, System.currentTimeMillis()); Response res = new Response( req.getId(), req.getVersion() ); res.setEvent( req.getData() == null ? null : req.getData().toString() ); channel.send( res ); } } else { super.received( channel, message ); } }
private void encodeResponse( Channel channel, ChannelBuffer buffer, Response response ) throws IOException { RpcResult result = ( RpcResult ) response.getResult(); RequestData rd = cachedRequest.get( response.getId() ); protocol.writeI64( response.getId() ); protocol.getTransport().flush(); headerLength = bos.size();
public void decode() throws Exception { if (!hasDecoded && channel != null && inputStream != null) { try { decode(channel, inputStream); } catch (Throwable e) { if (log.isWarnEnabled()) { log.warn("Decode rpc result failed: " + e.getMessage(), e); } response.setStatus(Response.CLIENT_ERROR); response.setErrorMessage(StringUtils.toString(e)); } finally { hasDecoded = true; } } }
private void logMessageLength(Object result, int bytes) { if (bytes <= 0) { return; } if (result instanceof Request) { try { ((RpcInvocation) ((Request) result).getData()).setAttachment( Constants.INPUT_KEY, String.valueOf(bytes)); } catch (Throwable e) { /* ignore */ } } else if (result instanceof Response) { try { ((RpcResult) ((Response) result).getResult()).setAttachment( Constants.OUTPUT_KEY, String.valueOf(bytes)); } catch (Throwable e) { /* ignore */ } } }
final ArrayList<HashMap<String, String>> actualList = new ArrayList<HashMap<String, String>>(); for (Response response : responseList) { HashMap<String,String>resultMap = new HashMap<String,String>(); if (responseList != null) { resultsMap.put("a", response.getResult()); resultsMap.put("b", response.getOriginalUrl()) } actualList.add(resultMap); }
private boolean isHeartbeatResponse(Object message) { return message instanceof Response && ((Response) message).isHeartbeat(); } }
public static void received(Channel channel, Response response) { try { DefaultFuture future = FUTURES.remove(response.getId()); if (future != null) { future.doReceived(response); } else { log.warn("The timeout response finally returned at " + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date())) + ", response " + response + (channel == null ? "" : ", channel: " + channel.getLocalAddress() + " -> " + channel.getRemoteAddress())); } } finally { CHANNELS.remove(response.getId()); } }
if ((flag & FLAG_REQUEST) == 0) { Response res = new Response(id); if ((flag & FLAG_EVENT) != 0) { res.setEvent(Response.HEARTBEAT_EVENT); res.setStatus(status); if (status == Response.OK) { try { Object data; if (res.isHeartbeat()) { data = decodeHeartbeatData(channel, in); } else if (res.isEvent()) { data = decodeEventData(channel, in); } else { data = decodeResponseData(channel, in, getRequestData(id)); res.setResult(data); } catch (Throwable t) { res.setStatus(Response.CLIENT_ERROR); res.setErrorMessage(StringUtils.toString(t)); res.setErrorMessage(in.readUTF());
if (res.isHeartbeat()) header[2] |= FLAG_EVENT; byte status = res.getStatus(); header[3] = status; Bytes.long2bytes(res.getId(), header, 4); if (res.isHeartbeat()) { encodeHeartbeatData(channel, out, res.getResult()); } else { encodeResponseData(channel, out, res.getResult()); else out.writeUTF(res.getErrorMessage()); out.flushBuffer(); } finally { } catch (Throwable t) { if (! res.isEvent() && res.getStatus() != Response.BAD_RESPONSE) { try { Response r = new Response(res.getId(), res.getVersion()); r.setStatus(Response.BAD_RESPONSE); r.setErrorMessage("Failed to send response: " + res + ", cause: " + StringUtils.toString(t)); channel.send(r);
/** * close a channel when a channel is inactive * directly return the unfinished requests. * * @param channel channel to close */ public static void closeChannel(Channel channel) { for (long id : CHANNELS.keySet()) { if (channel.equals(CHANNELS.get(id))) { DefaultFuture future = getFuture(id); if (future != null && !future.isDone()) { Response disconnectResponse = new Response(future.getId()); disconnectResponse.setStatus(Response.CHANNEL_INACTIVE); disconnectResponse.setErrorMessage("Channel " + channel + " is inactive. Directly return the unFinished request : " + future.getRequest()); DefaultFuture.received(channel, disconnectResponse); } } } }