List of usage examples for io.netty.util.concurrent Future cause
Throwable cause();
From source file:io.urmia.api.handler.RestApiHandler.java
License:Open Source License
private void handleGET(final ChannelHandlerContext ctx, final ObjectRequest objectRequest) throws Exception { log.info("handleGET req: {}", httpRequest); mds.list(ctx.executor(), objectRequest).addListener(new GenericFutureListener<Future<ObjectResponse>>() { @Override/*from ww w. j av a2s. c o m*/ public void operationComplete(Future<ObjectResponse> future) throws Exception { if (!future.isSuccess()) { log.error("future failed for handleGET: {}", objectRequest, future.cause()); sendError(ctx, HttpResponseStatus.INTERNAL_SERVER_ERROR); return; } ObjectResponse objectResponse = future.getNow(); log.info("result of mds.operate: {} -> {}", objectRequest, objectResponse); if (objectResponse instanceof ObjectResponse.EmptyResponse) { log.info("nothing found at: {}", objectRequest); sendError(ctx, HttpResponseStatus.NOT_FOUND); return; } if (objectResponse instanceof ObjectResponse.SingleObject) { log.info("GET is for a file. proxy for downloading: {}", objectResponse); setupProxyToGET(ctx, ((ObjectResponse.SingleObject) objectResponse).fullObjectName); return; } if (!(objectResponse instanceof ObjectResponse.MultipleObjects)) { log.info("multipleObjects.objects is not MultipleObjects: {}", objectResponse); sendError(ctx, HttpResponseStatus.NOT_FOUND); return; } log.info("returning result of mds.list: {}", objectResponse.json()); ctx.writeAndFlush(objectResponse.encode(), ctx.voidPromise()); } }); }
From source file:io.urmia.api.handler.RestApiHandler.java
License:Open Source License
private void handleDELETE(final ChannelHandlerContext ctx, final ObjectRequest request) throws IOException { log.info("handleDELETE req: {}", httpRequest); mds.delete(ctx.executor(), request).addListener(new GenericFutureListener<Future<ObjectResponse>>() { @Override/*from w ww .j a v a 2 s . c o m*/ public void operationComplete(Future<ObjectResponse> future) throws Exception { if (future.isSuccess()) { ObjectResponse response = future.get(); if (response instanceof ObjectResponse.Failure) { log.warn("error on handleDELETE: {} -> {}", request, response); sendError(ctx, response.encode()); } else { log.info("successful handleDELETE req: {}, rsp: {}", request, response); ctx.writeAndFlush(response.encode()); } } else { log.warn("error on handleDELETE: {}", request, future.cause()); sendError(ctx, HttpResponseStatus.BAD_REQUEST); } } }); }
From source file:io.urmia.api.handler.RestApiHandler.java
License:Open Source License
private void handleHEAD(final ChannelHandlerContext ctx, final ObjectRequest objectRequest) { log.info("handleHEAD uri: {} ", httpRequest.getUri()); mds.head(ctx.executor(), objectRequest).addListener(new GenericFutureListener<Future<ObjectResponse>>() { @Override/*from w w w . j a va2 s . c o m*/ public void operationComplete(Future<ObjectResponse> future) throws Exception { if (future.isSuccess()) { ObjectResponse objectResponse = future.get(); log.info("handleHEAD {} -> {}", objectRequest, objectResponse); // todo: use .encode() if (objectResponse instanceof ObjectResponse.SingleObject) { ObjectResponse.SingleObject singleObject = (ObjectResponse.SingleObject) objectResponse; FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.NO_CONTENT); if (singleObject.fullObjectName.attributes.dir) { response.headers().set(CONTENT_TYPE, "application/x-json-stream; type=directory"); } else { response.headers().set(CONTENT_MD5, singleObject.fullObjectName.attributes.md5); } ctx.writeAndFlush(response).addListener(new GenericFutureListener<ChannelFuture>() { @Override public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()) { log.info("write success"); } else { log.info("write failed: {}", future.cause()); } } }); return; } log.warn("error on handleHEAD: {}", objectRequest, future.cause()); sendError(ctx, ERROR_BAD_REQUEST); } } }); }
From source file:io.urmia.api.handler.RestApiHandler.java
License:Open Source License
private void handlePUTmkdir(final ChannelHandlerContext ctx, ObjectRequest request) throws Exception { if (request.isNotDirectory()) { log.warn("request is not mkdir: {}", request); sendError(ctx, HttpResponseStatus.BAD_REQUEST); return;//www . ja v a 2 s . c o m } log.info("this is a mkdir: {}", request); ExtendedObjectAttributes eoa = new ExtendedObjectAttributes(true, 0, "", uuid.next(), 1, System.currentTimeMillis()); final FullObjectRequest fullObjectRequest = new FullObjectRequest(request, eoa); mds.put(ctx.executor(), fullObjectRequest).addListener(new GenericFutureListener<Future<ObjectResponse>>() { @Override public void operationComplete(Future<ObjectResponse> future) throws Exception { if (future.isSuccess()) { ObjectResponse response = future.getNow(); log.info("successful mkdir: {}", response); ctx.writeAndFlush( new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NO_CONTENT), ctx.voidPromise()); ctx.channel().close(); } else { log.warn("no success on mkdir: {}", future.cause()); sendError(ctx, HttpResponseStatus.BAD_REQUEST); } } }); }
From source file:io.urmia.api.handler.RestApiHandler.java
License:Open Source License
private void setupProxyToGET(final ChannelHandlerContext ctx, final FullObjectName fon) throws Exception { log.info("proxy GET storage node: download mode: {}", true); final Future<List<String>> futureStorageNodes = mds.storedNodes(ctx.executor(), fon.attributes.etag); futureStorageNodes.addListener(new GenericFutureListener<Future<List<String>>>() { @Override/*from w w w .j a va2 s . c o m*/ public void operationComplete(Future<List<String>> future) throws Exception { if (future.isSuccess()) { final List<String> st = future.getNow(); Optional<ServiceInstance<NodeType>> si = findStorageInstanceUp(st); if (!si.isPresent()) { log.error("failed to find running node, req: {}", objectRequest); sendError(ctx, HttpResponseStatus.INTERNAL_SERVER_ERROR); return; } List<ServiceInstance<NodeType>> l = Lists.newArrayList(si.get()); log.info("proxy storage node: {}, download mode: {}, durability: {}", st, true, objectRequest.getDurability()); HttpProxyFrontendHandler proxy = new HttpProxyFrontendHandler(l, mds, httpRequest, ctx, true, Optional.<FullObjectName>absent()); ctx.pipeline().remove("encoder"); ctx.pipeline().addLast("proxy", proxy); proxyMode = true; ctx.read(); // todo: can ve removed? } else { log.error("failed to fetch futureStorageNodes, req: {}", objectRequest, future.cause()); sendError(ctx, HttpResponseStatus.INTERNAL_SERVER_ERROR); } } }); }
From source file:io.vertx.core.dns.impl.fix.DnsNameResolver.java
License:Apache License
private void doResolveUncached(String hostname, Promise<InetAddress> promise, DnsCache resolveCache, boolean trySearchDomain) { if (trySearchDomain) { Promise<InetAddress> original = promise; promise = new DefaultPromise<>(executor()); FutureListener<InetAddress> globalListener = future -> { if (future.isSuccess()) { original.setSuccess(future.getNow()); } else { FutureListener<InetAddress> sdListener = new FutureListener<InetAddress>() { int count; @Override// w w w . j a v a 2 s . com public void operationComplete(Future<InetAddress> future) throws Exception { if (future.isSuccess()) { original.trySuccess(future.getNow()); } else { if (count < searchDomains.size()) { String searchDomain = searchDomains.get(count++); Promise<InetAddress> p = new DefaultPromise<>(executor()); doResolveUncached(hostname + "." + searchDomain, p, resolveCache, false); p.addListener(this); } else { original.tryFailure(future.cause()); } } } }; future.addListener(sdListener); } }; promise.addListener(globalListener); } if (searchDomains(hostname)) { promise.tryFailure(new UnknownHostException(hostname)); } else { final DnsNameResolverContext<InetAddress> ctx = new DnsNameResolverContext<InetAddress>(this, hostname, promise, resolveCache) { @Override protected boolean finishResolve(Class<? extends InetAddress> addressType, List<DnsCacheEntry> resolvedEntries) { final int numEntries = resolvedEntries.size(); for (int i = 0; i < numEntries; i++) { final InetAddress a = resolvedEntries.get(i).address(); if (addressType.isInstance(a)) { setSuccess(promise(), a); return true; } } return false; } }; ctx.resolve(); } }
From source file:io.vertx.core.dns.impl.fix.DnsNameResolverContext.java
License:Apache License
private void query(InetSocketAddress nameServerAddr, final DnsQuestion question) { if (allowedQueries == 0 || promise.isCancelled()) { tryToFinishResolve();/*from w ww . j a v a 2 s .com*/ return; } allowedQueries--; final Future<AddressedEnvelope<DnsResponse, InetSocketAddress>> f = parent.query(nameServerAddr, question); queriesInProgress.add(f); f.addListener(new FutureListener<AddressedEnvelope<DnsResponse, InetSocketAddress>>() { @Override public void operationComplete(Future<AddressedEnvelope<DnsResponse, InetSocketAddress>> future) { queriesInProgress.remove(future); if (promise.isDone() || future.isCancelled()) { return; } try { if (future.isSuccess()) { onResponse(question, future.getNow()); } else { // Server did not respond or I/O error occurred; try again. if (traceEnabled) { addTrace(future.cause()); } query(nameServerAddrs.next(), question); } } finally { tryToFinishResolve(); } } }); }
From source file:io.vertx.core.dns.impl.fix.DnsQueryContext.java
License:Apache License
private void sendQuery(final DnsQuery query) { if (parent.channelFuture.isDone()) { writeQuery(query);/*from www . j a v a 2s . c o m*/ } else { parent.channelFuture.addListener(new GenericFutureListener<Future<? super Channel>>() { @Override public void operationComplete(Future<? super Channel> future) throws Exception { if (future.isSuccess()) { writeQuery(query); } else { promise.tryFailure(future.cause()); } } }); } }
From source file:jj.repl.ReplServer.java
License:Apache License
@Listener void configurationLoaded(ConfigurationLoaded configurationLoaded) { if (configuration.activate()) { if (server != null && port != configuration.port()) { server.group().terminationFuture().addListener(new GenericFutureListener<Future<Object>>() { @Override//w w w. j a v a2s . c om public void operationComplete(Future<Object> future) throws Exception { // if this failed what do we do? // just publish an emergency if (future.isSuccess()) { start(); } else { publisher.publish(new Emergency( "couldn't restart the REPL server. The server may need to be restarted", future.cause())); } } }); shutdown(); } else if (server == null) { start(); } } else if (server != null) { shutdown(); } }
From source file:me.ferrybig.javacoding.teamspeakconnector.util.FutureUtil.java
License:Open Source License
private static <T, R> Future<R> delegateFutureResult(Future<T> future, Promise<R> prom, Function<T, R> map) { future.addListener(ignored -> {//w w w. java2s . c o m assert ignored == future; try { if (future.isSuccess()) { prom.setSuccess(map.apply(future.getNow())); } else { prom.setFailure(future.cause()); } } catch (Throwable e) { prom.setFailure(e); } }); return prom; }