Example usage for io.vertx.core.net NetSocket exceptionHandler

List of usage examples for io.vertx.core.net NetSocket exceptionHandler

Introduction

In this page you can find the example usage for io.vertx.core.net NetSocket exceptionHandler.

Prototype

@Override
    NetSocket exceptionHandler(Handler<Throwable> handler);

Source Link

Usage

From source file:com.groupon.vertx.memcache.stream.MemcacheSocketHandler.java

License:Apache License

public void handle(Long time) {
    final Handler<Long> currentHandler = this;

    log.trace("handle", "establishSocket", new String[] { "eventBusAddress", "server", "delay" },
            eventBusAddress, server.getServer(), currentDelay);

    netClient.connect(server.getPort(), server.getHost(), new Handler<AsyncResult<NetSocket>>() {
        public void handle(AsyncResult<NetSocket> socket) {
            log.trace("establishSocket", "handle", new String[] { "eventBusAddress", "server", "status" },
                    eventBusAddress, server.getServer(), socket.succeeded());
            if (socket.succeeded()) {
                log.trace("establishSocket", "success");

                currentDelay = delayFactor;

                final NetSocket netSocket = socket.result();
                final MemcacheCommandHandler memcacheHandler = new MemcacheCommandHandler(netSocket);
                final MessageConsumer<MemcacheCommand> consumer = vertx.eventBus().consumer(eventBusAddress,
                        memcacheHandler);

                netSocket.exceptionHandler(ex -> {
                    log.error("establishSocket", "exception", "unknown", ex);
                    consumer.unregister();
                    memcacheHandler.finish();
                });//from  w  w w. j a v a  2 s  . com

                netSocket.closeHandler(message -> {
                    log.warn("establishSocket", "socketClosed");
                    consumer.unregister();
                    memcacheHandler.finish();
                    vertx.setTimer(currentDelay, currentHandler);
                });
            } else {
                if (socket.result() != null) {
                    log.warn("establishSocket", "closeSocket");
                    socket.result().close();
                }
                currentDelay = Math.min(currentDelay * 2, MAXIMUM_DELAY);

                log.warn("establishSocket", "failed", new String[] { "eventBusAddress", "server" },
                        eventBusAddress, server.getServer());

                vertx.setTimer(currentDelay, currentHandler);
            }
        }
    });
}

From source file:com.groupon.vertx.redis.RedisSocketHandler.java

License:Apache License

public void handle(Long time) {
    final Handler<Long> currentHandler = this;
    netClient.connect(port, host, socket -> {
        if (socket.succeeded()) {
            log.trace("establishSocket", "success");

            currentDelay = delayFactor;//w  ww.  j  a  va 2s.  c  o m

            final NetSocket netSocket = socket.result();
            final RedisCommandHandler redisHandler = new RedisCommandHandler(netSocket);

            final MessageConsumer<JsonObject> consumer = vertx.eventBus().consumer(eventBusAddress,
                    redisHandler);

            netSocket.exceptionHandler(ex -> {
                log.error("establishSocket", "exception", "unknown", ex);
                consumer.unregister();
                redisHandler.finish();
            });

            netSocket.closeHandler(message -> {
                log.warn("establishSocket", "socketClosed");
                consumer.unregister();
                redisHandler.finish();
                vertx.setTimer(currentDelay, currentHandler);
            });

        } else {
            if (socket.result() != null) {
                log.warn("establishSocket", "closeSocket");
                socket.result().close();
            }
            currentDelay = Math.min(currentDelay * 2, MAXIMUM_DELAY);

            log.warn("establishSocket", "failed", new String[] { "eventBusAddress", "server" }, eventBusAddress,
                    host);

            vertx.setTimer(currentDelay, currentHandler);
        }
    });
}

From source file:com.sibvisions.rad.remote.vertx.NetSocketConnection.java

License:Apache License

/**
 * {@inheritDoc}//from ww w. j a va 2  s  .co  m
 */
@Override
public void open(ConnectionInfo pConnectionInfo) throws Throwable {
    closeSocket();

    NetClientOptions options = new NetClientOptions();
    options.setReconnectAttempts(3);
    options.setConnectTimeout(5000);
    options.setReconnectInterval(1000);

    client = vertx.createNetClient(options);
    client.connect(iPort, sHost, new Handler<AsyncResult<NetSocket>>() {
        public void handle(final AsyncResult<NetSocket> pCommunication) {
            NetSocket sock = pCommunication.result();

            if (sock != null) {
                sock.handler(new Handler<Buffer>() {
                    public void handle(Buffer pBuffer) {
                        if (inputStream != null) {
                            inputStream.receive(pBuffer);
                        }
                    }
                });

                sock.exceptionHandler(new Handler<Throwable>() {
                    public void handle(Throwable pException) {
                        if (inputStream != null) {
                            inputStream.finish();
                        }
                    }
                });

                sock.endHandler(new Handler<Void>() {
                    public void handle(Void pParam) {
                        if (inputStream != null) {
                            inputStream.finish();
                        }
                    }
                });
            }

            synchronized (NetSocketConnection.this) {
                if (pCommunication.succeeded()) {
                    socket = sock;
                } else {
                    LoggerFactory.getInstance(NetSocketConnection.class).error(pCommunication.cause());

                    socket = null;
                }

                NetSocketConnection.this.notify();
            }
        }
    });

    synchronized (this) {
        if (socket == null) {
            wait(15000);
        }
    }

    if (socket == null) {
        throw new ConnectException("Can't establish connection!");
    }

    socket.write(Buffer.buffer(new byte[] { STREAM_COMMUNICATION }));

    super.open(pConnectionInfo);

    if (oInitialConId == null) {
        oInitialConId = pConnectionInfo.getConnectionId();
    }
}

From source file:com.sibvisions.rad.remote.vertx.NetSocketConnection.java

License:Apache License

/**
 * Opens a new transfer client./*from  www .j a va2 s . c  o m*/
 * 
 * @throws IOException if opening failed
 */
private void openTransfer() throws IOException {
    closeTransfer();

    if (socketTransfer != null) {
        socketTransfer.close();
        socketTransfer = null;
    }

    NetClientOptions options = new NetClientOptions();
    options.setReconnectAttempts(3);
    options.setReconnectInterval(1000);

    clientTransfer = vertx.createNetClient(options);

    isTransfer = new SyncedInputStream();

    clientTransfer.connect(iPort, sHost, new Handler<AsyncResult<NetSocket>>() {
        public void handle(AsyncResult<NetSocket> pCommunication) {
            NetSocket sock = pCommunication.result();

            if (sock != null) {
                sock.handler(new Handler<Buffer>() {
                    public void handle(Buffer pBuffer) {
                        if (isTransfer != null) {
                            isTransfer.receive(pBuffer);
                        }
                    }
                });

                sock.exceptionHandler(new Handler<Throwable>() {
                    public void handle(Throwable pException) {
                        if (isTransfer != null) {
                            isTransfer.finish();
                        }
                    }
                });

                sock.endHandler(new Handler<Void>() {
                    public void handle(Void pParam) {
                        if (isTransfer != null) {
                            isTransfer.finish();
                        }
                    }

                });
            }

            synchronized (clientTransfer) {
                socketTransfer = sock;

                clientTransfer.notify();
            }
        }
    });

    try {
        synchronized (clientTransfer) {
            if (socketTransfer == null) {
                clientTransfer.wait(15000);
            }
        }
    } catch (InterruptedException ie) {
        throw new IOException(ie);
    }

    if (socketTransfer == null) {
        throw new ConnectException("Can't establish transfer connection!");
    }
}

From source file:com.sibvisions.vertx.NetSocketServer.java

License:Apache License

/**
 * Starts the server to listen on the configured port.
 *//*from   www  .  j  a  v a  2  s . c o  m*/
public void start() {
    if (vertx == null) {
        vertx = Vertx.vertx();
    }

    NetServerOptions options = new NetServerOptions();
    options.setTcpKeepAlive(true);
    options.setTcpNoDelay(true);

    srvVertx = vertx.createNetServer(options);

    srvVertx.connectHandler(new Handler<NetSocket>() {
        public void handle(NetSocket pSocket) {
            AbstractDataHandler dataHandler = new NetDataHandler(srvJVx, pSocket);

            pSocket.handler(dataHandler);
            pSocket.endHandler(new StopHandler(dataHandler));
            pSocket.exceptionHandler(new ExceptionHandler(dataHandler));
        }
    });

    srvVertx.listen(iPort, sInterface);
}

From source file:io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.java

License:Apache License

private void onConnectSuccess(NetSocket socket) {
    LOGGER.info("connectd to address {} success in thread {}.", socketAddress.toString(),
            Thread.currentThread().getName());
    // currently, socket always be NetSocketImpl
    this.initNetSocket((NetSocketImpl) socket);
    socket.handler(new TcpParser(this::onReply));

    socket.exceptionHandler(this::onException);
    socket.closeHandler(this::onClosed);

    // /*from   www.  j a v a  2s.co  m*/
    tryLogin();
}

From source file:io.servicecomb.foundation.vertx.server.TcpServerConnection.java

License:Apache License

public void init(NetSocket netSocket) {
    // currently, socket always be NetSocketImpl
    this.initNetSocket((NetSocketImpl) netSocket);

    String remoteAddress = netSocket.remoteAddress().toString();
    LOGGER.info("connect from {}, in thread {}", remoteAddress, Thread.currentThread().getName());
    netSocket.exceptionHandler(e -> {
        LOGGER.error("disconected from {}, in thread {}, cause {}", remoteAddress,
                Thread.currentThread().getName(), e.getMessage());
    });//  ww w  . j a  va 2 s.c  o  m
    netSocket.closeHandler(Void -> {
        LOGGER.error("disconected from {}, in thread {}", remoteAddress, Thread.currentThread().getName());
    });

    netSocket.handler(splitter);
}

From source file:org.apache.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.java

License:Apache License

private void onConnectSuccess(NetSocket socket) {
    LOGGER.info("connected to address {} success in thread {}.", socketAddress.toString(),
            Thread.currentThread().getName());
    // currently, socket always be NetSocketImpl
    this.initNetSocket((NetSocketImpl) socket);
    socket.handler(new TcpParser(this::onReply));

    socket.exceptionHandler(this::onException);
    socket.closeHandler(this::onClosed);

    // //  ww w  . jav a 2s  .co m
    tryLogin();
}

From source file:org.apache.servicecomb.foundation.vertx.server.TcpServerConnection.java

License:Apache License

public void init(NetSocket netSocket, AtomicInteger connectedCounter) {
    // currently, socket always be NetSocketImpl
    this.initNetSocket((NetSocketImpl) netSocket);

    String remoteAddress = netSocket.remoteAddress().toString();
    LOGGER.info("connect from {}, in thread {}", remoteAddress, Thread.currentThread().getName());
    netSocket.exceptionHandler(e -> {
        LOGGER.error("disconected from {}, in thread {}, cause {}", remoteAddress,
                Thread.currentThread().getName(), e.getMessage());
    });/*from   w  w w . j ava 2s .c om*/
    netSocket.closeHandler(Void -> {
        LOGGER.error("disconected from {}, in thread {}", remoteAddress, Thread.currentThread().getName());

        int connectedCount = connectedCounter.decrementAndGet();
        EventManager.post(
                new ClientEvent(remoteAddress, ConnectionEvent.Closed, TransportType.Highway, connectedCount));
    });

    netSocket.handler(splitter);
}

From source file:shadowsocks.vertxio.ClientHandler.java

License:Apache License

private void setFinishHandler(NetSocket socket) {
    socket.closeHandler(v -> {//from w ww .  ja  v  a2s .  co m
        destory();
    });
    socket.endHandler(v -> {
        destory();
    });
    socket.exceptionHandler(e -> {
        log.error("Catch Exception.", e);
        destory();
    });
}