Search in sources :

Example 1 with NioConnectionException

use of com.cloud.legacymodel.exceptions.NioConnectionException in project cosmic by MissionCriticalCloud.

the class NioConnection method call.

@Override
public Boolean call() throws NioConnectionException {
    while (_isRunning) {
        try {
            _selector.select();
            // Someone is ready for I/O, get the ready keys
            final Set<SelectionKey> readyKeys = _selector.selectedKeys();
            final Iterator<SelectionKey> i = readyKeys.iterator();
            if (s_logger.isTraceEnabled()) {
                s_logger.trace("Keys Processing: " + readyKeys.size());
            }
            // Walk through the ready keys collection.
            while (i.hasNext()) {
                final SelectionKey sk = i.next();
                i.remove();
                if (!sk.isValid()) {
                    if (s_logger.isTraceEnabled()) {
                        s_logger.trace("Selection Key is invalid: " + sk.toString());
                    }
                    final Link link = (Link) sk.attachment();
                    if (link != null) {
                        link.terminated();
                    } else {
                        closeConnection(sk);
                    }
                } else if (sk.isReadable()) {
                    read(sk);
                } else if (sk.isWritable()) {
                    write(sk);
                } else if (sk.isAcceptable()) {
                    accept(sk);
                } else if (sk.isConnectable()) {
                    connect(sk);
                }
            }
            s_logger.trace("Keys Done Processing.");
            processTodos();
        } catch (final ClosedSelectorException e) {
        /*
                 * Exception occurred when calling java.nio.channels.Selector.selectedKeys() method. It means the connection has not yet been established. Let's continue trying
                 * We do not log it here otherwise we will fill the disk with messages.
                 */
        } catch (final IOException e) {
            s_logger.error("Agent will die due to this IOException!", e);
            throw new NioConnectionException(e.getMessage(), e);
        }
    }
    _isStartup = false;
    return true;
}
Also used : SelectionKey(java.nio.channels.SelectionKey) IOException(java.io.IOException) NioConnectionException(com.cloud.legacymodel.exceptions.NioConnectionException) ClosedSelectorException(java.nio.channels.ClosedSelectorException)

Example 2 with NioConnectionException

use of com.cloud.legacymodel.exceptions.NioConnectionException in project cosmic by MissionCriticalCloud.

the class NioConnection method start.

public void start() throws NioConnectionException {
    _todos = new ArrayList<>();
    try {
        init();
    } catch (final ConnectException e) {
        s_logger.warn("Unable to connect to remote: is there a server running on port " + _port);
        return;
    } catch (final IOException e) {
        s_logger.error("Unable to initialize the threads.", e);
        throw new NioConnectionException(e.getMessage(), e);
    } catch (final Exception e) {
        s_logger.error("Unable to initialize the threads due to unknown exception.", e);
        throw new NioConnectionException(e.getMessage(), e);
    }
    _isStartup = true;
    _threadExecutor = Executors.newSingleThreadExecutor();
    _futureTask = _threadExecutor.submit(this);
    _isRunning = true;
}
Also used : IOException(java.io.IOException) NioConnectionException(com.cloud.legacymodel.exceptions.NioConnectionException) CancelledKeyException(java.nio.channels.CancelledKeyException) ConnectException(java.net.ConnectException) ClosedChannelException(java.nio.channels.ClosedChannelException) IOException(java.io.IOException) NioConnectionException(com.cloud.legacymodel.exceptions.NioConnectionException) ClosedSelectorException(java.nio.channels.ClosedSelectorException) ConnectException(java.net.ConnectException)

Example 3 with NioConnectionException

use of com.cloud.legacymodel.exceptions.NioConnectionException in project cosmic by MissionCriticalCloud.

the class NioTest method setUp.

@Override
public void setUp() {
    s_logger.info("Test");
    _testCount = 0;
    _completedCount = 0;
    _server = new NioServer("NioTestServer", 7777, 5, new NioTestServer());
    try {
        _server.start();
    } catch (final NioConnectionException e) {
        fail(e.getMessage());
    }
    _client = new NioClient("NioTestServer", "127.0.0.1", 7777, 5, new NioTestClient());
    try {
        _client.start();
    } catch (final NioConnectionException e) {
        fail(e.getMessage());
    }
    while (_clientLink == null) {
        try {
            s_logger.debug("Link is not up! Waiting ...");
            Thread.sleep(1000);
        } catch (final InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Also used : NioServer(com.cloud.utils.nio.NioServer) NioConnectionException(com.cloud.legacymodel.exceptions.NioConnectionException) NioClient(com.cloud.utils.nio.NioClient)

Aggregations

NioConnectionException (com.cloud.legacymodel.exceptions.NioConnectionException)3 IOException (java.io.IOException)2 ClosedSelectorException (java.nio.channels.ClosedSelectorException)2 NioClient (com.cloud.utils.nio.NioClient)1 NioServer (com.cloud.utils.nio.NioServer)1 ConnectException (java.net.ConnectException)1 CancelledKeyException (java.nio.channels.CancelledKeyException)1 ClosedChannelException (java.nio.channels.ClosedChannelException)1 SelectionKey (java.nio.channels.SelectionKey)1