Example usage for java.nio.channels SocketChannel configureBlocking

List of usage examples for java.nio.channels SocketChannel configureBlocking

Introduction

In this page you can find the example usage for java.nio.channels SocketChannel configureBlocking.

Prototype

public final SelectableChannel configureBlocking(boolean block) throws IOException 

Source Link

Document

Adjusts this channel's blocking mode.

Usage

From source file:com.app.services.ExecutorServiceThread.java

public void run() {

    // create a selector that will by used for multiplexing. The selector
    // registers the socketserverchannel as
    // well as all socketchannels that are created
    String CLIENTCHANNELNAME = "clientChannel";
    String SERVERCHANNELNAME = "serverChannel";
    String channelType = "channelType";

    ConcurrentHashMap<SelectionKey, Object> resultMap = new ConcurrentHashMap<SelectionKey, Object>();
    ClassLoader classLoader = null;
    ByteArrayOutputStream bstr;/*from ww w  .  j av  a2 s .  com*/
    ByteBuffer buffer = null;
    ByteBuffer lengthBuffer = ByteBuffer.allocate(4);
    int bytesRead;
    InputStream bais;
    ObjectInputStream ois;
    Object object;
    ExecutorServiceInfo executorServiceInfo = null;
    Random random = new Random(System.currentTimeMillis());
    // register the serversocketchannel with the selector. The OP_ACCEPT
    // option marks
    // a selection key as ready when the channel accepts a new connection.
    // When the
    // socket server accepts a connection this key is added to the list of
    // selected keys of the selector.
    // when asked for the selected keys, this key is returned and hence we
    // know that a new connection has been accepted.
    try {
        Selector selector = Selector.open();
        SelectionKey socketServerSelectionKey = serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);

        // SelectionKey socketServerSelectionKey1 =
        // channel.register(selector1,
        // SelectionKey.OP_ACCEPT);

        // set property in the key that identifies the channel
        Map<String, String> properties = new ConcurrentHashMap<String, String>();
        properties.put(channelType, SERVERCHANNELNAME);
        socketServerSelectionKey.attach(properties);
        // wait for the selected keys
        SelectionKey key = null;
        Set<SelectionKey> selectedKeys;
        // logger.info("Instance Number"+instanceNumber);
        Iterator<SelectionKey> iterator = null;
        SocketChannel clientChannel = null;
        while (true) {
            try {
                // the select method is a blocking method which returns when
                // atleast
                // one of the registered
                // channel is selected. In this example, when the socket
                // accepts
                // a
                // new connection, this method
                // will return. Once a socketclient is added to the list of
                // registered channels, then this method
                // would also return when one of the clients has data to be
                // read
                // or
                // written. It is also possible to perform a nonblocking
                // select
                // using the selectNow() function.
                // We can also specify the maximum time for which a select
                // function
                // can be blocked using the select(long timeout) function.

                if (selector.select() >= 0) {
                    selectedKeys = selector.selectedKeys();
                    iterator = selectedKeys.iterator();
                }
                while (iterator.hasNext()) {
                    try {
                        key = iterator.next();
                        // the selection key could either by the
                        // socketserver
                        // informing
                        // that a new connection has been made, or
                        // a socket client that is ready for read/write
                        // we use the properties object attached to the
                        // channel
                        // to
                        // find
                        // out the type of channel.
                        if (((Map) key.attachment()).get(channelType).equals(SERVERCHANNELNAME)) {
                            // a new connection has been obtained. This
                            // channel
                            // is
                            // therefore a socket server.
                            ServerSocketChannel serverSocketChannel = (ServerSocketChannel) key.channel();
                            // accept the new connection on the server
                            // socket.
                            // Since
                            // the
                            // server socket channel is marked as non
                            // blocking
                            // this channel will return null if no client is
                            // connected.
                            SocketChannel clientSocketChannel = serverSocketChannel.accept();

                            if (clientSocketChannel != null) {
                                // set the client connection to be non
                                // blocking
                                clientSocketChannel.configureBlocking(false);
                                SelectionKey clientKey = clientSocketChannel.register(selector,
                                        SelectionKey.OP_READ, SelectionKey.OP_WRITE);
                                Map<String, String> clientproperties = new ConcurrentHashMap<String, String>();
                                clientproperties.put(channelType, CLIENTCHANNELNAME);
                                clientKey.attach(clientproperties);
                                clientKey.interestOps(SelectionKey.OP_READ);
                                // clientSocketChannel.close();
                                // write something to the new created client
                                /*
                                 * CharBuffer buffer =
                                 * CharBuffer.wrap("Hello client"); while
                                 * (buffer.hasRemaining()) {
                                 * clientSocketChannel.write
                                 * (Charset.defaultCharset()
                                 * .encode(buffer)); }
                                 * clientSocketChannel.close();
                                 * buffer.clear();
                                 */
                            }

                        } else {
                            // data is available for read
                            // buffer for reading
                            clientChannel = (SocketChannel) key.channel();
                            if (key.isReadable()) {
                                // the channel is non blocking so keep it
                                // open
                                // till
                                // the
                                // count is >=0
                                clientChannel = (SocketChannel) key.channel();
                                if (resultMap.get(key) == null) {
                                    //log.info(key);
                                    bstr = new ByteArrayOutputStream();
                                    object = null;
                                    clientChannel.read(lengthBuffer);
                                    int length = lengthBuffer.getInt(0);
                                    lengthBuffer.clear();
                                    //log.info(length);
                                    buffer = ByteBuffer.allocate(length);
                                    if ((bytesRead = clientChannel.read(buffer)) > 0) {
                                        // buffer.flip();
                                        // System.out
                                        // .println(bytesRead);
                                        bstr.write(buffer.array(), 0, bytesRead);
                                        buffer.clear();
                                    }
                                    buffer.clear();
                                    //log.info("Message1"+new String(bstr
                                    //      .toByteArray()));
                                    bais = new ByteArrayInputStream(bstr.toByteArray());
                                    ois = new ObjectInputStream(bais); // Offending
                                    // line.
                                    // Produces
                                    // the
                                    // StreamCorruptedException.
                                    //log.info("In read obect");
                                    object = ois.readObject();
                                    //log.info("Class Cast");
                                    //log.info("Class Cast1");
                                    ois.close();
                                    byte[] params = bstr.toByteArray();
                                    bstr.close();
                                    //log.info("readObject");
                                    //log.info("After readObject");
                                    if (object instanceof CloseSocket) {
                                        resultMap.remove(key);
                                        clientChannel.close();
                                        key.cancel();
                                    }
                                    // clientChannel.close();
                                    String serviceurl = (String) object;
                                    String[] serviceRegistry = serviceurl.split("/");
                                    //log.info("classLoaderMap"
                                    //      + urlClassLoaderMap);
                                    //log.info(deployDirectory
                                    //      + "/" + serviceRegistry[0]);

                                    int servicenameIndex;
                                    //log.info(earServicesDirectory
                                    //      + "/" + serviceRegistry[0]
                                    //      + "/" + serviceRegistry[1]);
                                    if (serviceRegistry[0].endsWith(".ear")) {
                                        classLoader = (VFSClassLoader) urlClassLoaderMap.get(deployDirectory
                                                + "/" + serviceRegistry[0] + "/" + serviceRegistry[1]);
                                        servicenameIndex = 2;
                                    } else if (serviceRegistry[0].endsWith(".jar")) {
                                        classLoader = (WebClassLoader) urlClassLoaderMap
                                                .get(deployDirectory + "/" + serviceRegistry[0]);
                                        servicenameIndex = 1;
                                    } else {
                                        classLoader = (WebClassLoader) urlClassLoaderMap
                                                .get(deployDirectory + "/" + serviceRegistry[0]);
                                        servicenameIndex = 1;
                                    }
                                    String serviceName = serviceRegistry[servicenameIndex];
                                    // log.info("servicename:"+serviceName);;
                                    synchronized (executorServiceMap) {
                                        executorServiceInfo = (ExecutorServiceInfo) executorServiceMap
                                                .get(serviceName.trim());
                                    }
                                    ExecutorServiceInfoClassLoader classLoaderExecutorServiceInfo = new ExecutorServiceInfoClassLoader();
                                    classLoaderExecutorServiceInfo.setClassLoader(classLoader);
                                    classLoaderExecutorServiceInfo.setExecutorServiceInfo(executorServiceInfo);
                                    resultMap.put(key, classLoaderExecutorServiceInfo);
                                    // key.interestOps(SelectionKey.OP_READ);
                                    // log.info("Key interested Ops");
                                    // continue;
                                }
                                //Thread.sleep(100);
                                /*
                                 * if (classLoader == null) throw new
                                 * Exception(
                                 * "Could able to obtain deployed class loader"
                                 * );
                                 */
                                /*
                                 * log.info(
                                 * "current context classloader" +
                                 * classLoader);
                                 */
                                //log.info("In rad object");
                                bstr = new ByteArrayOutputStream();
                                lengthBuffer.clear();
                                int numberofDataRead = clientChannel.read(lengthBuffer);
                                //log.info("numberofDataRead"
                                //      + numberofDataRead);
                                int length = lengthBuffer.getInt(0);
                                if (length <= 0) {
                                    iterator.remove();
                                    continue;
                                }
                                lengthBuffer.clear();
                                //log.info(length);
                                buffer = ByteBuffer.allocate(length);
                                buffer.clear();
                                if ((bytesRead = clientChannel.read(buffer)) > 0) {
                                    // buffer.flip();
                                    // System.out
                                    // .println(bytesRead);
                                    bstr.write(buffer.array(), 0, bytesRead);
                                    buffer.clear();
                                }
                                if (bytesRead <= 0 || bytesRead < length) {
                                    //log.info("bytesRead<length");
                                    iterator.remove();
                                    continue;
                                }
                                //log.info(new String(bstr
                                //   .toByteArray()));
                                bais = new ByteArrayInputStream(bstr.toByteArray());

                                ExecutorServiceInfoClassLoader classLoaderExecutorServiceInfo = (ExecutorServiceInfoClassLoader) resultMap
                                        .get(key);
                                ois = new ClassLoaderObjectInputStream(
                                        (ClassLoader) classLoaderExecutorServiceInfo.getClassLoader(), bais); // Offending
                                // line.
                                // Produces
                                // the
                                // StreamCorruptedException.
                                object = ois.readObject();
                                ois.close();
                                bstr.close();
                                executorServiceInfo = classLoaderExecutorServiceInfo.getExecutorServiceInfo();
                                //System.out
                                //      .println("inputStream Read Object");
                                //log.info("Object="
                                //      + object.getClass());
                                // Thread.currentThread().setContextClassLoader(currentContextLoader);
                                if (object instanceof ExecutorParams) {
                                    ExecutorParams exeParams = (ExecutorParams) object;
                                    Object returnValue = null;

                                    //log.info("test socket1");
                                    String ataKey;
                                    ATAConfig ataConfig;
                                    ConcurrentHashMap ataServicesMap;
                                    Enumeration<NodeResourceInfo> noderesourceInfos = addressmap.elements();
                                    NodeResourceInfo noderesourceinfo = null;
                                    String ip = "";
                                    int port = 1000;
                                    long memavailable = 0;
                                    long memcurr = 0;
                                    if (noderesourceInfos.hasMoreElements()) {
                                        noderesourceinfo = noderesourceInfos.nextElement();
                                        if (noderesourceinfo.getMax() != null) {
                                            ip = noderesourceinfo.getHost();
                                            port = Integer.parseInt(noderesourceinfo.getPort());
                                            memavailable = Long.parseLong(noderesourceinfo.getMax())
                                                    - Long.parseLong(noderesourceinfo.getUsed());
                                            ;
                                        }
                                    }

                                    while (noderesourceInfos.hasMoreElements()) {
                                        noderesourceinfo = noderesourceInfos.nextElement();
                                        if (noderesourceinfo.getMax() != null) {
                                            memcurr = Long.parseLong(noderesourceinfo.getMax())
                                                    - Long.parseLong(noderesourceinfo.getUsed());
                                            if (memavailable <= memcurr) {
                                                ip = noderesourceinfo.getHost();
                                                port = Integer.parseInt(noderesourceinfo.getPort());
                                                memavailable = memcurr;
                                            }
                                        }
                                    }
                                    ATAExecutorServiceInfo servicesAvailable;
                                    Socket sock1 = new Socket(ip, port);
                                    OutputStream outputStr = sock1.getOutputStream();
                                    ObjectOutputStream objOutputStream = new ObjectOutputStream(outputStr);
                                    NodeInfo nodeInfo = new NodeInfo();
                                    nodeInfo.setClassNameWithPackage(
                                            executorServiceInfo.getExecutorServicesClass().getName());
                                    nodeInfo.setMethodName(executorServiceInfo.getMethod().getName());

                                    nodeInfo.setWebclassLoaderURLS(((WebClassLoader) classLoader).geturlS());
                                    NodeInfoMethodParam nodeInfoMethodParam = new NodeInfoMethodParam();
                                    nodeInfoMethodParam.setMethodParams(exeParams.getParams());
                                    nodeInfoMethodParam
                                            .setMethodParamTypes(executorServiceInfo.getMethodParams());
                                    //log.info("Serializable socket="+sock);
                                    //nodeInfo.setSock(sock);
                                    //nodeInfo.setOstream(sock.getOutputStream());
                                    objOutputStream.writeObject(nodeInfo);
                                    objOutputStream = new ObjectOutputStream(outputStr);
                                    objOutputStream.writeObject(nodeInfoMethodParam);
                                    ObjectInputStream objInputStream1 = new ObjectInputStream(
                                            sock1.getInputStream());
                                    returnValue = objInputStream1.readObject();
                                    objOutputStream.close();
                                    objInputStream1.close();
                                    sock1.close();
                                    /*returnValue = executorServiceInfo
                                          .getMethod()
                                          .invoke(executorServiceInfo
                                                .getExecutorServicesClass()
                                                .newInstance(),
                                                exeParams.getParams());*/
                                    // Thread.currentThread().setContextClassLoader(oldCL);

                                    //   log.info("Written Value="
                                    //         + returnValue.toString());
                                    resultMap.put(key, returnValue);
                                }
                                key.interestOps(SelectionKey.OP_WRITE);
                                //log.info("Key interested Ops1");
                            } else if (key.isWritable()) {
                                // the channel is non blocking so keep it
                                // open
                                // till the
                                // count is >=0
                                //log.info("In write");
                                ByteArrayOutputStream baos = new ByteArrayOutputStream(); // make
                                // a
                                // BAOS
                                // stream
                                ObjectOutputStream oos = new ObjectOutputStream(baos); // wrap and OOS around the
                                                                                       // stream
                                Object result = resultMap.get(key);
                                oos.writeObject(result); // write an object
                                // to
                                // the stream
                                oos.flush();
                                oos.close();
                                byte[] objData = baos.toByteArray(); // get
                                // the
                                // byte
                                // array
                                baos.close();
                                buffer = ByteBuffer.wrap(objData); // wrap
                                // around
                                // the
                                // data
                                buffer.rewind();
                                // buffer.flip(); //prep for writing
                                //log.info(new String(objData));
                                //while (buffer.hasRemaining())
                                clientChannel.write(buffer); // write
                                resultMap.remove(key);
                                buffer.clear();
                                key.cancel();
                                clientChannel.close();
                                //log.info("In write1");
                                numberOfServicesRequests++;
                                //log.info("Key interested Ops2");
                            }

                        }

                        iterator.remove();
                    } catch (Exception ex) {
                        log.error("Error in executing the executor services thread", ex);
                        //ex.printStackTrace();
                        key.cancel();
                        clientChannel.close();
                        resultMap.remove(key);
                        //ex.printStackTrace();
                    }

                }

            } catch (Exception ex) {
                log.error("Error in executing the executor services thread", ex);
                //ex.printStackTrace();
            }
        }
    } catch (Exception ex) {
        log.error("Error in executing the executor services thread", ex);
    }
}

From source file:com.web.services.ExecutorServiceThread.java

public void run() {

    // create a selector that will by used for multiplexing. The selector
    // registers the socketserverchannel as
    // well as all socketchannels that are created
    String CLIENTCHANNELNAME = "clientChannel";
    String SERVERCHANNELNAME = "serverChannel";
    String channelType = "channelType";

    ConcurrentHashMap<SelectionKey, Object> resultMap = new ConcurrentHashMap<SelectionKey, Object>();
    ClassLoader classLoader = null;
    ByteArrayOutputStream bstr;/*from  w  ww. ja v  a 2 s . c  om*/
    ByteBuffer buffer = null;
    ByteBuffer lengthBuffer = ByteBuffer.allocate(4);
    int bytesRead;
    InputStream bais;
    ObjectInputStream ois;
    Object object;
    ExecutorServiceInfo executorServiceInfo = null;
    Random random = new Random(System.currentTimeMillis());
    // register the serversocketchannel with the selector. The OP_ACCEPT
    // option marks
    // a selection key as ready when the channel accepts a new connection.
    // When the
    // socket server accepts a connection this key is added to the list of
    // selected keys of the selector.
    // when asked for the selected keys, this key is returned and hence we
    // know that a new connection has been accepted.
    try {
        Selector selector = Selector.open();
        SelectionKey socketServerSelectionKey = serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);

        // SelectionKey socketServerSelectionKey1 =
        // channel.register(selector1,
        // SelectionKey.OP_ACCEPT);

        // set property in the key that identifies the channel
        Map<String, String> properties = new ConcurrentHashMap<String, String>();
        properties.put(channelType, SERVERCHANNELNAME);
        socketServerSelectionKey.attach(properties);
        // wait for the selected keys
        SelectionKey key = null;
        Set<SelectionKey> selectedKeys;
        // logger.info("Instance Number"+instanceNumber);
        Iterator<SelectionKey> iterator = null;
        SocketChannel clientChannel = null;
        while (true) {
            try {
                // the select method is a blocking method which returns when
                // atleast
                // one of the registered
                // channel is selected. In this example, when the socket
                // accepts
                // a
                // new connection, this method
                // will return. Once a socketclient is added to the list of
                // registered channels, then this method
                // would also return when one of the clients has data to be
                // read
                // or
                // written. It is also possible to perform a nonblocking
                // select
                // using the selectNow() function.
                // We can also specify the maximum time for which a select
                // function
                // can be blocked using the select(long timeout) function.

                if (selector.select() >= 0) {
                    selectedKeys = selector.selectedKeys();
                    iterator = selectedKeys.iterator();
                }
                while (iterator.hasNext()) {
                    try {
                        key = iterator.next();
                        // the selection key could either by the
                        // socketserver
                        // informing
                        // that a new connection has been made, or
                        // a socket client that is ready for read/write
                        // we use the properties object attached to the
                        // channel
                        // to
                        // find
                        // out the type of channel.
                        if (((Map) key.attachment()).get(channelType).equals(SERVERCHANNELNAME)) {
                            // a new connection has been obtained. This
                            // channel
                            // is
                            // therefore a socket server.
                            ServerSocketChannel serverSocketChannel = (ServerSocketChannel) key.channel();
                            // accept the new connection on the server
                            // socket.
                            // Since
                            // the
                            // server socket channel is marked as non
                            // blocking
                            // this channel will return null if no client is
                            // connected.
                            SocketChannel clientSocketChannel = serverSocketChannel.accept();

                            if (clientSocketChannel != null) {
                                // set the client connection to be non
                                // blocking
                                clientSocketChannel.configureBlocking(false);
                                SelectionKey clientKey = clientSocketChannel.register(selector,
                                        SelectionKey.OP_READ, SelectionKey.OP_WRITE);
                                Map<String, String> clientproperties = new ConcurrentHashMap<String, String>();
                                clientproperties.put(channelType, CLIENTCHANNELNAME);
                                clientKey.attach(clientproperties);
                                clientKey.interestOps(SelectionKey.OP_READ);
                                // clientSocketChannel.close();
                                // write something to the new created client
                                /*
                                 * CharBuffer buffer =
                                 * CharBuffer.wrap("Hello client"); while
                                 * (buffer.hasRemaining()) {
                                 * clientSocketChannel.write
                                 * (Charset.defaultCharset()
                                 * .encode(buffer)); }
                                 * clientSocketChannel.close();
                                 * buffer.clear();
                                 */
                            }

                        } else {
                            // data is available for read
                            // buffer for reading
                            clientChannel = (SocketChannel) key.channel();
                            if (key.isReadable()) {
                                // the channel is non blocking so keep it
                                // open
                                // till
                                // the
                                // count is >=0
                                clientChannel = (SocketChannel) key.channel();
                                if (resultMap.get(key) == null) {
                                    //System.out.println(key);
                                    bstr = new ByteArrayOutputStream();
                                    object = null;
                                    clientChannel.read(lengthBuffer);
                                    int length = lengthBuffer.getInt(0);
                                    lengthBuffer.clear();
                                    //System.out.println(length);
                                    buffer = ByteBuffer.allocate(length);
                                    if ((bytesRead = clientChannel.read(buffer)) > 0) {
                                        // buffer.flip();
                                        // System.out
                                        // .println(bytesRead);
                                        bstr.write(buffer.array(), 0, bytesRead);
                                        buffer.clear();
                                    }
                                    buffer.clear();
                                    //System.out.println("Message1"+new String(bstr
                                    //      .toByteArray()));
                                    bais = new ByteArrayInputStream(bstr.toByteArray());
                                    ois = new ObjectInputStream(bais); // Offending
                                    // line.
                                    // Produces
                                    // the
                                    // StreamCorruptedException.
                                    //System.out.println("In read obect");
                                    object = ois.readObject();
                                    //System.out.println("Class Cast");
                                    //System.out.println("Class Cast1");
                                    ois.close();
                                    byte[] params = bstr.toByteArray();
                                    bstr.close();
                                    //System.out.println("readObject");
                                    //System.out.println("After readObject");
                                    if (object instanceof CloseSocket) {
                                        resultMap.remove(key);
                                        clientChannel.close();
                                        key.cancel();
                                    }
                                    // clientChannel.close();
                                    String serviceurl = (String) object;
                                    String[] serviceRegistry = serviceurl.split("/");
                                    //System.out.println("classLoaderMap"
                                    //      + urlClassLoaderMap);
                                    //System.out.println(deployDirectory
                                    //      + "/" + serviceRegistry[0]);

                                    int servicenameIndex;
                                    //System.out.println(earServicesDirectory
                                    //      + "/" + serviceRegistry[0]
                                    //      + "/" + serviceRegistry[1]);
                                    if (serviceRegistry[0].endsWith(".ear")) {
                                        classLoader = (VFSClassLoader) urlClassLoaderMap
                                                .get(earServicesDirectory + "/" + serviceRegistry[0] + "/"
                                                        + serviceRegistry[1]);
                                        servicenameIndex = 2;
                                    } else if (serviceRegistry[0].endsWith(".jar")) {
                                        classLoader = (WebClassLoader) urlClassLoaderMap
                                                .get(jarservicesDirectory + "/" + serviceRegistry[0]);
                                        servicenameIndex = 1;
                                    } else {
                                        classLoader = (WebClassLoader) urlClassLoaderMap
                                                .get(deployDirectory + "/" + serviceRegistry[0]);
                                        servicenameIndex = 1;
                                    }
                                    String serviceName = serviceRegistry[servicenameIndex];
                                    // System.out.println("servicename:"+serviceName);;
                                    synchronized (executorServiceMap) {
                                        executorServiceInfo = (ExecutorServiceInfo) executorServiceMap
                                                .get(serviceName.trim());
                                    }
                                    ExecutorServiceInfoClassLoader classLoaderExecutorServiceInfo = new ExecutorServiceInfoClassLoader();
                                    classLoaderExecutorServiceInfo.setClassLoader(classLoader);
                                    classLoaderExecutorServiceInfo.setExecutorServiceInfo(executorServiceInfo);
                                    resultMap.put(key, classLoaderExecutorServiceInfo);
                                    // key.interestOps(SelectionKey.OP_READ);
                                    // System.out.println("Key interested Ops");
                                    // continue;
                                }
                                //Thread.sleep(100);
                                /*
                                 * if (classLoader == null) throw new
                                 * Exception(
                                 * "Could able to obtain deployed class loader"
                                 * );
                                 */
                                /*
                                 * System.out.println(
                                 * "current context classloader" +
                                 * classLoader);
                                 */
                                //System.out.println("In rad object");
                                bstr = new ByteArrayOutputStream();
                                lengthBuffer.clear();
                                int numberofDataRead = clientChannel.read(lengthBuffer);
                                //System.out.println("numberofDataRead"
                                //      + numberofDataRead);
                                int length = lengthBuffer.getInt(0);
                                if (length <= 0) {
                                    iterator.remove();
                                    continue;
                                }
                                lengthBuffer.clear();
                                //System.out.println(length);
                                buffer = ByteBuffer.allocate(length);
                                buffer.clear();
                                if ((bytesRead = clientChannel.read(buffer)) > 0) {
                                    // buffer.flip();
                                    // System.out
                                    // .println(bytesRead);
                                    bstr.write(buffer.array(), 0, bytesRead);
                                    buffer.clear();
                                }
                                if (bytesRead <= 0 || bytesRead < length) {
                                    //System.out.println("bytesRead<length");
                                    iterator.remove();
                                    continue;
                                }
                                //System.out.println(new String(bstr
                                //   .toByteArray()));
                                bais = new ByteArrayInputStream(bstr.toByteArray());

                                ExecutorServiceInfoClassLoader classLoaderExecutorServiceInfo = (ExecutorServiceInfoClassLoader) resultMap
                                        .get(key);
                                ois = new ClassLoaderObjectInputStream(
                                        (ClassLoader) classLoaderExecutorServiceInfo.getClassLoader(), bais); // Offending
                                // line.
                                // Produces
                                // the
                                // StreamCorruptedException.
                                object = ois.readObject();
                                ois.close();
                                bstr.close();
                                executorServiceInfo = classLoaderExecutorServiceInfo.getExecutorServiceInfo();
                                //System.out
                                //      .println("inputStream Read Object");
                                //System.out.println("Object="
                                //      + object.getClass());
                                // Thread.currentThread().setContextClassLoader(currentContextLoader);
                                if (object instanceof ExecutorParams) {
                                    ExecutorParams exeParams = (ExecutorParams) object;
                                    Object returnValue = null;

                                    //System.out.println("test socket1");
                                    String ataKey;
                                    ATAConfig ataConfig;
                                    ConcurrentHashMap ataServicesMap;

                                    ATAExecutorServiceInfo servicesAvailable;
                                    Socket sock1 = new Socket("0.0.0.0",
                                            Integer.parseInt(nodesport[random.nextInt(nodesport.length)]));
                                    OutputStream outputStr = sock1.getOutputStream();
                                    ObjectOutputStream objOutputStream = new ObjectOutputStream(outputStr);
                                    NodeInfo nodeInfo = new NodeInfo();
                                    nodeInfo.setClassNameWithPackage(
                                            executorServiceInfo.getExecutorServicesClass().getName());
                                    nodeInfo.setMethodName(executorServiceInfo.getMethod().getName());

                                    nodeInfo.setWebclassLoaderURLS(((WebClassLoader) classLoader).geturlS());
                                    NodeInfoMethodParam nodeInfoMethodParam = new NodeInfoMethodParam();
                                    nodeInfoMethodParam.setMethodParams(exeParams.getParams());
                                    nodeInfoMethodParam
                                            .setMethodParamTypes(executorServiceInfo.getMethodParams());
                                    //System.out.println("Serializable socket="+sock);
                                    //nodeInfo.setSock(sock);
                                    //nodeInfo.setOstream(sock.getOutputStream());
                                    objOutputStream.writeObject(nodeInfo);
                                    objOutputStream = new ObjectOutputStream(outputStr);
                                    objOutputStream.writeObject(nodeInfoMethodParam);
                                    ObjectInputStream objInputStream1 = new ObjectInputStream(
                                            sock1.getInputStream());
                                    returnValue = objInputStream1.readObject();
                                    objOutputStream.close();
                                    objInputStream1.close();
                                    sock1.close();
                                    /*returnValue = executorServiceInfo
                                          .getMethod()
                                          .invoke(executorServiceInfo
                                                .getExecutorServicesClass()
                                                .newInstance(),
                                                exeParams.getParams());*/
                                    // Thread.currentThread().setContextClassLoader(oldCL);

                                    //   System.out.println("Written Value="
                                    //         + returnValue.toString());
                                    resultMap.put(key, returnValue);
                                }
                                key.interestOps(SelectionKey.OP_WRITE);
                                //System.out.println("Key interested Ops1");
                            } else if (key.isWritable()) {
                                // the channel is non blocking so keep it
                                // open
                                // till the
                                // count is >=0
                                //System.out.println("In write");
                                ByteArrayOutputStream baos = new ByteArrayOutputStream(); // make
                                // a
                                // BAOS
                                // stream
                                ObjectOutputStream oos = new ObjectOutputStream(baos); // wrap and OOS around the
                                                                                       // stream
                                Object result = resultMap.get(key);
                                oos.writeObject(result); // write an object
                                // to
                                // the stream
                                oos.flush();
                                oos.close();
                                byte[] objData = baos.toByteArray(); // get
                                // the
                                // byte
                                // array
                                baos.close();
                                buffer = ByteBuffer.wrap(objData); // wrap
                                // around
                                // the
                                // data
                                buffer.rewind();
                                // buffer.flip(); //prep for writing
                                //System.out.println(new String(objData));
                                //while (buffer.hasRemaining())
                                clientChannel.write(buffer); // write
                                resultMap.remove(key);
                                buffer.clear();
                                key.cancel();
                                clientChannel.close();
                                //System.out.println("In write1");
                                numberOfServicesRequests++;
                                //System.out.println("Key interested Ops2");
                            }

                        }

                        iterator.remove();
                    } catch (Exception ex) {
                        ex.printStackTrace();
                        key.cancel();
                        clientChannel.close();
                        resultMap.remove(key);
                        //ex.printStackTrace();
                    }

                }

            } catch (Exception ex) {

                //ex.printStackTrace();
            }
        }
    } catch (Exception ex) {
        //ex.printStackTrace();
    }
}

From source file:com.cloud.agent.resource.virtualnetwork.VirtualRoutingResource.java

public String connect(final String ipAddress, final int port) {
    for (int i = 0; i <= _retry; i++) {
        SocketChannel sch = null;
        try {//  w  ww  . j  ava  2 s.c  o  m
            if (s_logger.isDebugEnabled()) {
                s_logger.debug("Trying to connect to " + ipAddress);
            }
            sch = SocketChannel.open();
            sch.configureBlocking(true);

            final InetSocketAddress addr = new InetSocketAddress(ipAddress, port);
            sch.connect(addr);
            return null;
        } catch (final IOException e) {
            if (s_logger.isDebugEnabled()) {
                s_logger.debug("Could not connect to " + ipAddress);
            }
        } finally {
            if (sch != null) {
                try {
                    sch.close();
                } catch (final IOException e) {
                }
            }
        }
        try {
            Thread.sleep(_sleep);
        } catch (final InterruptedException e) {
        }
    }

    s_logger.debug("Unable to logon to " + ipAddress);

    return "Unable to connect";
}

From source file:ca.wumbo.doommanager.server.ServerManager.java

/**
 * Attempts to accept incoming new connections.
 * /*  w  w  w.j  a  v a 2  s  .  c o  m*/
 * @return
 *       True if there was no error, false if an error occured.
 */
private boolean acceptConnections() {
    SocketChannel socketChannel = null;

    // Only bother if the connection is open.
    if (serverSocketChannel.isOpen()) {

        // Attempt to get a connection.
        try {
            socketChannel = serverSocketChannel.accept();
        } catch (Exception e) {
            log.error("Unexpected IO exception when accepting a connection.", e);
            return false;
        }

        // If there was a client connecting, take care of them.
        // Make sure to attach a new ClientInfo that we will fill out later upon validation.
        if (socketChannel != null) {
            try {
                log.info("Incoming new client connection from {}.",
                        socketChannel.getRemoteAddress().toString());
                ClientInfo clientInfo = new ClientInfo(socketChannel.getRemoteAddress().toString());
                socketChannel.configureBlocking(false);
                socketChannel.socket().setTcpNoDelay(true);
                socketChannel.register(selector, SelectionKey.OP_READ, clientInfo);
                clientInfo.markMessageReceived(); // Prevent timing out from a connection.

                //               // TEST
                //               int amount = 1024 * 16;
                //               byte[] hi = new byte[amount];
                //               for (int i = 0; i < amount; i++)
                //                  hi[i] = (byte)(Math.random() * 255);
                //               ByteBuffer bb = ByteBuffer.allocate(amount);
                //               bb.put(hi);
                //               bb.flip();
                //               
                //               int wrote = 0;
                //               while (bb.hasRemaining()) {
                //                  wrote = socketChannel.write(bb);
                //                  System.out.println("Server wrote: " + wrote + " bytes to a client");
                //               }
                //               
                //               Thread.sleep(4000);
                //               
                //               bb = ByteBuffer.allocate(5);
                //               bb.put(new byte[] { 1, 2, 3, 4, 5 });
                //               bb.flip();
                //               wrote = 0;
                //               while (bb.hasRemaining()) {
                //                  wrote = socketChannel.write(bb);
                //                  System.out.println("2) Server wrote: " + wrote + " bytes to a client");
                //               }

                // TODO - send global version of the file.
            } catch (ClosedChannelException e) {
                log.error("Channel closed exception when registering a connected client.", e);
                return false;
            } catch (IOException e) {
                log.error("IO exception when registering a new client connection.", e);
                return false;
            } catch (Exception e) {
                log.error("Unexpected exception when registering a new client connection.", e);
                return false;
            }
        }
    }

    // Signal all is good.
    return true;
}

From source file:com.sun.grizzly.http.jk.common.ChannelNioSocket.java

public void accept(MsgContext ep) throws IOException {
    if (sSocket == null) {
        return;//from w ww.j  a va 2  s . c  om
    }
    synchronized (this) {
        while (paused) {
            try {
                wait();
            } catch (InterruptedException ie) {
                //Ignore, since can't happen
            }
        }
    }
    SocketChannel sc = sSocket.getChannel().accept();
    Socket s = sc.socket();
    ep.setNote(socketNote, s);
    if (LoggerUtils.getLogger().isLoggable(Level.FINEST)) {
        LoggerUtils.getLogger().log(Level.FINEST, "Accepted socket " + s + " channel " + sc.isBlocking());
    }

    try {
        setSocketOptions(s);
    } catch (SocketException sex) {
        LoggerUtils.getLogger().log(Level.FINEST, "Error initializing Socket Options", sex);
    }

    requestCount++;

    sc.configureBlocking(false);
    InputStream is = new SocketInputStream(sc);
    OutputStream os = new SocketOutputStream(sc);
    ep.setNote(isNote, is);
    ep.setNote(osNote, os);
    ep.setControl(tp);
}

From source file:middleware.NewServerSocket.java

public void run() {
    int count = 0;
    while (!sharedData.isEndOfProgram()) {

        try {// ww w.j a  va2s.co m
            if (monitoring) {
                selector.select(10);
            } else {
                selector.select();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        keyIterator = selector.selectedKeys().iterator();
        while (keyIterator.hasNext()) {
            SelectionKey key = keyIterator.next();
            keyIterator.remove();

            if (key.isAcceptable()) {
                if (key.channel() == serverSocketChannel) {
                    SocketChannel socketChannel = null;
                    try {
                        socketChannel = serverSocketChannel.accept();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    if (socketChannel != null) {

                        MiddleClient middleClient = new MiddleClient(sharedData.getServerIpAddr(),
                                sharedData.getServerPortNum());
                        middleClient.startClient();

                        MiddleServer middleServer = new MiddleServer(socketChannel);
                        TransactionData transactionData = new TransactionData(sharedData, middleServer);
                        middleServer.startServer(transactionData);

                        int len = 0;
                        buffer.clear();
                        len = middleClient.getInput(buffer);
                        middleServer.sendOutput(buffer, len);

                        buffer.clear();
                        len = middleServer.getInput(buffer);
                        transactionData.setUserId(getUserId(data));
                        middleClient.sendOutput(buffer, len);

                        middleServer.setNonBlocking();
                        middleClient.setNonBlocking();

                        if (sharedData.isOutputToFile()) {
                            transactionData.openFileOutputStream();
                        }

                        sharedData.allTransactionData.add(transactionData);

                        workers[count % numWorkers].socketMap.put(middleServer.socketChannel, middleServer);
                        workers[count % numWorkers].socketMap.put(middleClient.socketChannel, middleClient);

                        middleServer.register(workers[count % numWorkers].selector, middleClient);

                        middleClient.register(workers[count % numWorkers].selector, middleServer);

                        ++count;
                    }
                } else if (key.channel() == adminServerSocketChannel) {
                    SocketChannel sock = null;
                    try {
                        sock = adminServerSocketChannel.accept();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    if (sock != null) {
                        try {
                            sock.configureBlocking(true);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        MiddleSocketChannel middleSocketChannel = new MiddleSocketChannel(sock);
                        middleSocketChannel.setNonBlocking();

                        middleSocketChannel.register(selector, middleSocketChannel);

                    }
                }
            } else if (key.isReadable()) {
                MiddleSocketChannel middleSocketChannel = (MiddleSocketChannel) key.attachment();

                buffer.clear();
                int len = middleSocketChannel.getInput(buffer);
                if (len == -1) {
                    middleSocketChannel.cancelKey();
                    continue;
                }
                buffer.position(0);

                int packetID = 0;
                long packetLength = -1;
                boolean isValidPacket = true;

                try {
                    packetID = buffer.getInt();
                    packetLength = buffer.getLong();
                } catch (BufferUnderflowException e) {
                    buffer.clear();
                    buffer.putInt(102);
                    String response = "Invalid packet header";
                    buffer.putLong(response.length());
                    buffer.put(response.getBytes());
                    isValidPacket = false;
                    middleSocketChannel.sendOutput(buffer, buffer.position());
                }

                if (isValidPacket) {
                    if (packetID == 100) {
                        if (userList.contains(middleSocketChannel)) {
                            buffer.clear();
                            buffer.putInt(102);
                            String response = "You have already logged in";
                            buffer.putLong(response.length());
                            buffer.put(response.getBytes());
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        } else if (packetLength <= 0) {
                            buffer.clear();
                            buffer.putInt(102);
                            String response = "Invalid packet length";
                            buffer.putLong(response.length());
                            buffer.put(response.getBytes());
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        } else {
                            String userID = null;
                            byte[] password = new byte[Encrypt.MAX_LENGTH];
                            byte[] packet = new byte[(int) packetLength];
                            buffer.get(packet);
                            userID = parseLogInPacket(packet, password);
                            if (userInfo.get(userID) != null && Arrays.equals(((byte[]) userInfo.get(userID)),
                                    Encrypt.encrypt(password))) {
                                buffer.clear();
                                buffer.putInt(101);
                                buffer.putLong(0);
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                                userList.add(middleSocketChannel);
                            } else {
                                buffer.clear();
                                buffer.putInt(102);
                                String response = "Invalid User ID or password";
                                buffer.putLong(response.length());
                                buffer.put(response.getBytes());
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                            }
                        }
                    } else if (packetID == 103) {
                        stopIncrementalLogging();
                    } else if (packetID == 200) {
                        if (userList.contains(middleSocketChannel)) {
                            if (sharedData.isOutputToFile() || endingMonitoring || sendingFiles) {
                                String response = "Current monitoring not finished";
                                buffer.clear();
                                buffer.putInt(202);
                                buffer.putLong(response.length());
                                buffer.put(response.getBytes());
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                            } else {
                                startMonitoring();
                                buffer.clear();
                                buffer.putInt(201);
                                buffer.putLong(0);
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                                curUser = middleSocketChannel;
                            }
                        } else {
                            buffer.clear();
                            buffer.putInt(102);
                            String response = "You have not been registered";
                            buffer.putLong(response.length());
                            buffer.put(response.getBytes());
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        }

                    } else if (packetID == 300) {
                        if (userList.contains(middleSocketChannel)) {
                            if (!sharedData.isOutputToFile()) {
                                String response = "No monitoring running";
                                buffer.clear();
                                buffer.putInt(302);
                                buffer.putLong(response.length());
                                buffer.put(response.getBytes());
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                                // DY : I think this use case is not right at the moment where
                                // monitoring is only stoppable by a user who started it.
                                //                } else if (middleSocketChannel != curUser) {
                                //                  String response = "Monitoring running by other user";
                                //                  buffer.clear();
                                //                  buffer.putInt(302);
                                //                  buffer.putLong(response.length());
                                //                  buffer.put(response.getBytes());
                                //                  middleSocketChannel.sendOutput(buffer, buffer.position());
                            } else if (endingMonitoring) {
                                String response = "Writing log files, please wait";
                                buffer.clear();
                                buffer.putInt(302);
                                buffer.putLong(response.length());
                                buffer.put(response.getBytes());
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                            } else {
                                sendLog = true;
                                curUser = middleSocketChannel;
                                stopMonitoring();
                            }
                        } else {
                            buffer.clear();
                            buffer.putInt(102);
                            String response = "You have not been registered";
                            buffer.putLong(response.length());
                            buffer.put(response.getBytes());
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        }
                    } else if (packetID == 303) {
                        if (userList.contains(middleSocketChannel)) {
                            if (!sharedData.isOutputToFile()) {
                                String response = "No monitoring running";
                                buffer.clear();
                                buffer.putInt(302);
                                buffer.putLong(response.length());
                                buffer.put(response.getBytes());
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                                //                } else if (middleSocketChannel != curUser) {
                                //                  String response = "Monitoring running by other user";
                                //                  buffer.clear();
                                //                  buffer.putInt(302);
                                //                  buffer.putLong(response.length());
                                //                  buffer.put(response.getBytes());
                                //                  middleSocketChannel.sendOutput(buffer, buffer.position());
                            } else if (endingMonitoring) {
                                String response = "Writing log files, please wait";
                                buffer.clear();
                                buffer.putInt(302);
                                buffer.putLong(response.length());
                                buffer.put(response.getBytes());
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                            } else {
                                sendLog = false;
                                stopMonitoring();
                            }
                        } else {
                            buffer.clear();
                            buffer.putInt(102);
                            String response = "You have not been registered";
                            buffer.putLong(response.length());
                            buffer.put(response.getBytes());
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        }

                    } else if (packetID == 400) {
                        if (userList.contains(middleSocketChannel)) {
                            // when the GUI reconnects and the middleware is still monitoring...
                            if (monitoring) {

                                // start new logging threads and resume monitoring
                                stopIncrementalLogging();
                                startIncrementalLogging(true);

                                buffer.clear();
                                buffer.putInt(402);
                                buffer.putLong(0);
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                            } else {
                                buffer.clear();
                                buffer.putInt(401);
                                buffer.putLong(0);
                                middleSocketChannel.sendOutput(buffer, buffer.position());
                            }
                        } else {
                            buffer.clear();
                            buffer.putInt(102);
                            String response = "You have not been registered";
                            buffer.putLong(response.length());
                            buffer.put(response.getBytes());
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        }

                    } else if (packetID == 500) {
                        if (!sharedData.isLiveMonitoring()) {
                            buffer.clear();
                            buffer.putInt(501);
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        } else {
                            buffer.clear();
                            buffer.putInt(502);
                            LiveAggregateGlobal globalAggregate = sharedData.liveMonitor.globalAggregate;
                            int numTransactionType = globalAggregate.getNumTransactionType();
                            buffer.putInt(numTransactionType);
                            buffer.putDouble(globalAggregate.totalTransactionCount);
                            for (int i = 0; i < numTransactionType; ++i) {
                                buffer.putDouble(
                                        globalAggregate.transactionStatistics.get(i).currentTransactionCounts); // current TPS
                                buffer.putDouble(
                                        globalAggregate.transactionStatistics.get(i).currentAverageLatency); // current average latency.
                                buffer.putDouble(
                                        globalAggregate.transactionStatistics.get(i).totalTransactionCounts); // total transaction count
                            }
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        }
                    } else if (packetID == 600) {
                        int type = buffer.getInt();
                        int index = buffer.getInt();
                        String[] samples = sharedData.liveMonitor.getTransactionSamples(type);
                        if (samples == null) {
                            buffer.clear();
                            buffer.putInt(601);
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        } else if (samples.length < index + 1) {
                            buffer.clear();
                            buffer.putInt(601);
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        } else {
                            String sample = samples[index];
                            buffer.clear();
                            buffer.putInt(602);
                            buffer.putLong(sample.length());
                            buffer.put(sample.getBytes());
                            middleSocketChannel.sendOutput(buffer, buffer.position());
                        }
                    } else if (packetID == 700) {
                        int type = buffer.getInt();
                        sharedData.liveMonitor.removeTransactionType(type);
                        buffer.clear();
                        buffer.putInt(701);
                        buffer.putInt(sharedData.liveMonitor.globalAggregate.getNumTransactionType());
                        middleSocketChannel.sendOutput(buffer, buffer.position());
                    } else {
                        buffer.clear();
                        buffer.putInt(102);
                        String response = "Invalid packet ID";
                        buffer.putLong(response.length());
                        buffer.put(response.getBytes());
                        middleSocketChannel.sendOutput(buffer, buffer.position());
                    }
                }
            }
        }

        if (!sharedData.allTransactions.isEmpty() || !sharedData.allQueries.isEmpty()) {
            int c = sharedData.allQueries.size();
            while (c > 0) {
                printQueries();
                --c;
            }
            // c = sharedData.allStatementsInfo.size();
            // while (c > 0) {
            // printStatementsInfo();
            // --c;
            // }
            c = sharedData.allTransactions.size();
            while (c > 0) {
                printTransactions();
                --c;
            }
        } else if (endingMonitoring) {
            try {
                sharedData.tAllLogFileOutputStream.flush();
                sharedData.tAllLogFileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                sharedData.sAllLogFileOutputStream.flush();
                sharedData.sAllLogFileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                sharedData.qAllLogFileOutputStream.flush();
                sharedData.qAllLogFileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            if (curUser != null && sendLog) {

                //          System.out.println("ready to compress log files");

                if (stopRemoteDstat != null) {
                    Interrupter interrupter = new Interrupter(Thread.currentThread());
                    interrupter.start();
                    try {
                        stopRemoteDstat.waitFor();
                        interrupter.setOuterThreadWaiting(false);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    stopRemoteDstat = null;
                }
                buffer.clear();
                buffer.putInt(301);
                buffer.putLong(0);
                curUser.sendOutput(buffer, buffer.position());

                //          if (zipAllFiles()) {
                //
                //            System.out
                //                .println("finish compressing files, ready to send zip file");
                //
                //            File zipFile = new File(zipFileName);
                //
                //            FileInputStream fis = null;
                //            try {
                //              fis = new FileInputStream(zipFile);
                //            } catch (FileNotFoundException e) {
                //              e.printStackTrace();
                //            }
                //
                //            FileChannel fc = fis.getChannel();
                //
                //            buffer.clear();
                //            buffer.putInt(301);
                //            buffer.putLong(zipFile.length());
                //            curUser.sendOutput(buffer, buffer.position());
                //            long position = 0;
                //            long remaining = zipFile.length();
                //            long len = 0;
                //            while (remaining > 0) {
                //              try {
                //               len = fc.transferTo(position, 1024, curUser.socketChannel);
                //              } catch (IOException e) {
                //                e.printStackTrace();
                //              }
                //              position += len;
                //              remaining -= len;
                //              len = 0;
                //            }
                //
                //            System.out.println("finish sending zip file");
                //
                //          } else {
                //            String response = "fail to compress log files";
                //            buffer.clear();
                //            buffer.putInt(302);
                //            buffer.putLong(response.length());
                //            buffer.put(response.getBytes());
                //            curUser.sendOutput(buffer, buffer.position());
                //          }
                curUser = null;
            }

            endingMonitoring = false;
            monitoring = false;
            if (System.getProperty("user.name").contentEquals("root")) {
                String[] cmd = { "/bin/bash", "shell/chmod" };
                try {
                    Runtime.getRuntime().exec(cmd);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }

    }

}

From source file:net.timewalker.ffmq4.transport.tcp.nio.NIOTcpPacketTransport.java

/**
  * Connect the transport to its remote endpoint
  *//*from   w  ww  .  ja v  a  2s  .com*/
private SocketChannel connect(URI transportURI) throws PacketTransportException {
    String host = transportURI.getHost();
    int port = transportURI.getPort();

    try {
        SocketChannel socketChannel = SocketChannel.open();
        socketChannel.configureBlocking(false);
        SocketUtils.setupSocket(socketChannel.socket(), socketSendBufferSize, socketRecvBufferSize);

        log.debug("#" + id + " opening a TCP connection to " + host + ":" + port);
        socketChannel.connect(new InetSocketAddress(host, port));

        return socketChannel;
    } catch (Exception e) {
        log.error("#" + id + " could not connect to " + host + ":" + port, e);
        throw new PacketTransportException("Could not connect to " + host + ":" + port + " : " + e.toString());
    }
}

From source file:net.ymate.platform.serv.nio.support.NioEventGroup.java

@SuppressWarnings("unchecked")
protected INioSession __doSessionCreate(IClientCfg cfg) throws IOException {
    SocketChannel _channel = SocketChannel.open();
    _channel.configureBlocking(false);
    _channel.socket().setReuseAddress(true);
    _channel.connect(new InetSocketAddress(cfg.getRemoteHost(), cfg.getPort()));
    __channel = _channel;//from  ww w  .  ja  v  a 2s .  c om
    return new NioSession(this, _channel);
}

From source file:net.ymate.platform.serv.nio.support.NioEventProcessor.java

protected void __doAcceptEvent(SelectionKey key) throws IOException {
    SocketChannel _channel = ((ServerSocketChannel) key.channel()).accept();
    _channel.configureBlocking(false);
    INioSession _session = new NioSession<LISTENER>(__eventGroup, _channel);
    _session.selectionKey(key);/*from  w w w . j a v a 2  s. co m*/
    _session.status(ISession.Status.CONNECTED);
    __eventGroup.listener().onSessionAccepted(_session);
}

From source file:org.apache.gobblin.tunnel.TestTunnelWithArbitraryTCPTraffic.java

@Test(enabled = false, expectedExceptions = IOException.class)
public void testTunnelWhereProxyConnectionToServerFailsWithWriteFirstClient()
        throws IOException, InterruptedException {
    MockServer proxyServer = startConnectProxyServer();
    final int nonExistentPort = 54321; // hope this doesn't exist!
    Tunnel tunnel = Tunnel.build("localhost", nonExistentPort, "localhost", proxyServer.getServerSocketPort());
    try {//  w  w w .  j ava 2  s  . c o  m
        int tunnelPort = tunnel.getPort();
        SocketChannel client = SocketChannel.open();

        client.configureBlocking(true);
        client.connect(new InetSocketAddress("localhost", tunnelPort));
        // Might have to write multiple times before connection error propagates back from proxy through tunnel to client
        for (int i = 0; i < 5; i++) {
            client.write(ByteBuffer.wrap("Knock\n".getBytes()));
            Thread.sleep(100);
        }
        String response1 = readFromSocket(client);
        LOG.info(response1);

        client.close();

    } finally {
        proxyServer.stopServer();
        tunnel.close();
        assertFalse(tunnel.isTunnelThreadAlive());
        assertEquals(proxyServer.getNumConnects(), 1);
    }
}