@Override public void executeAsync(final AsyncTask<A> task, final Executor executor) { try { executor.execute(createAsyncTaskRunner(task)); } catch (RejectedExecutionException e) { if(resultHandler.failed(e)) { safeWriteErrorResponse(channel, header, e); } } }
@Override public boolean executeAsync(final AsyncTask<A> task, boolean cancellable, final Executor executor) { try { executor.execute(createAsyncTaskRunner(task, cancellable)); return true; } catch (RejectedExecutionException e) { if(support.getResultHandler().failed(e)) { AbstractMessageHandler.safeWriteErrorResponse(channel, header, e); } } return false; }
@Override public boolean executeAsync(final AsyncTask<A> task, boolean cancellable, final Executor executor) { try { executor.execute(createAsyncTaskRunner(task, cancellable)); return true; } catch (RejectedExecutionException e) { if(support.getResultHandler().failed(e)) { AbstractMessageHandler.safeWriteErrorResponse(channel, header, e); } } return false; }
@Override public void handleRequest(final DataInput input, ActiveOperation.ResultHandler<T> resultHandler, ManagementRequestContext<A> context) throws IOException { final Exception error = ProtocolMessages.MESSAGES.noSuchResponseHandler(Integer.toHexString(header.getRequestId())); if(resultHandler.failed(error)) { safeWriteErrorResponse(context.getChannel(), context.getRequestHeader(), error); } } };
} catch (Exception e) { resultHandler.failed(e); safeWriteErrorResponse(channel, header, e);
if(request == null) { ProtocolLogger.CONNECTION_LOGGER.noSuchRequest(response.getResponseId(), channel); safeWriteErrorResponse(channel, header, ProtocolLogger.ROOT_LOGGER.responseHandlerNotFound(response.getResponseId())); } else if(response.getError() != null) { request.handleFailed(response); final ManagementRequestHandler<?, ?> handler = getRequestHandler(requestHeader); if(handler == null) { safeWriteErrorResponse(channel, header, ProtocolLogger.ROOT_LOGGER.responseHandlerNotFound(requestHeader.getBatchId())); } else { handleMessage(channel, input, requestHeader, handler); safeWriteErrorResponse(channel, header, e);
@Override protected void doExecute() { try { task.execute(context); } catch (Throwable t) { if(support.getResultHandler().failed(t)) { ManagementProtocolHeader requestHeader; if (task instanceof MultipleResponseAsyncTask) { requestHeader = ((MultipleResponseAsyncTask) task).getCurrentRequestHeader(); requestHeader = requestHeader == null ? header : requestHeader; } else { requestHeader = header; } AbstractMessageHandler.safeWriteErrorResponse(channel, requestHeader, t); } ProtocolLogger.ROOT_LOGGER.debugf(t, " failed to process async request for %s on channel %s", task, channel); } } };
if(request == null) { ProtocolLogger.CONNECTION_LOGGER.noSuchRequest(response.getResponseId(), channel); safeWriteErrorResponse(channel, header, ProtocolMessages.MESSAGES.responseHandlerNotFound(response.getResponseId())); } else if(response.getError() != null) { request.handleFailed(response); final ManagementRequestHandler<?, ?> handler = getRequestHandler(requestHeader); if(handler == null) { safeWriteErrorResponse(channel, header, ProtocolMessages.MESSAGES.responseHandlerNotFound(requestHeader.getBatchId())); } else { handleMessage(channel, input, requestHeader, handler); safeWriteErrorResponse(channel, header, e);
@Override protected void doExecute() { try { task.execute(context); } catch (Throwable t) { if(support.getResultHandler().failed(t)) { ManagementProtocolHeader requestHeader; if (task instanceof MultipleResponseAsyncTask) { requestHeader = ((MultipleResponseAsyncTask) task).getCurrentRequestHeader(); requestHeader = requestHeader == null ? header : requestHeader; } else { requestHeader = header; } AbstractMessageHandler.safeWriteErrorResponse(channel, requestHeader, t); } ProtocolLogger.ROOT_LOGGER.debugf(t, " failed to process async request for %s on channel %s", task, channel); } } };
if(request == null) { ProtocolLogger.CONNECTION_LOGGER.noSuchRequest(response.getResponseId(), channel); safeWriteErrorResponse(channel, header, ProtocolLogger.ROOT_LOGGER.responseHandlerNotFound(response.getResponseId())); } else if(response.getError() != null) { request.handleFailed(response); final ManagementRequestHandler<?, ?> handler = getRequestHandler(requestHeader); if(handler == null) { safeWriteErrorResponse(channel, header, ProtocolLogger.ROOT_LOGGER.responseHandlerNotFound(requestHeader.getBatchId())); } else { handleMessage(channel, input, requestHeader, handler); safeWriteErrorResponse(channel, header, e);
/** * Handle a message. * * @param channel the channel * @param message the message * @param header the protocol header * @param support the request support * @param handler the request handler */ protected <T, A> void handleMessage(final Channel channel, final DataInput message, final ManagementProtocolHeader header, final ActiveOperation<T, A> support, final ManagementRequestHandler<T, A> handler) { assert support != null; updateChannelRef(support, channel); final ActiveOperation.ResultHandler<T> resultHandler = support.getResultHandler(); try { handler.handleRequest(message, resultHandler, new ManagementRequestContextImpl<T, A>(support, channel, header, getExecutor())); } catch (Exception e) { resultHandler.failed(e); safeWriteErrorResponse(channel, header, e); } }
/** * Handle a message. * * @param channel the channel * @param message the message * @param header the protocol header * @param support the request support * @param handler the request handler */ protected <T, A> void handleMessage(final Channel channel, final DataInput message, final ManagementProtocolHeader header, final ActiveOperation<T, A> support, final ManagementRequestHandler<T, A> handler) { assert support != null; updateChannelRef(support, channel); final ActiveOperation.ResultHandler<T> resultHandler = support.getResultHandler(); try { handler.handleRequest(message, resultHandler, new ManagementRequestContextImpl<T, A>(support, channel, header, getExecutor())); } catch (Exception e) { resultHandler.failed(e); safeWriteErrorResponse(channel, header, e); } }