Package org.apache.mina.core.service

Examples of org.apache.mina.core.service.IoConnector


        IoAcceptor acceptor = createAcceptor();
        acceptor.setHandler(new IoHandlerAdapter());
        InetSocketAddress address = new InetSocketAddress(port);
        acceptor.bind(address);

        IoConnector connector = createConnector();
        connector.setHandler(new IoHandlerAdapter() {
           @Override
            public void sessionCreated(IoSession session) throws Exception {
                   assertions[sessionCreatedInvoked] = true;
                   assertions[sessionCreatedInvokedBeforeCallback] = !assertions[callbackInvoked];
                   latch.countDown();
            }
        });
       
        ConnectFuture future = connector.connect(new InetSocketAddress("127.0.0.1", port), new IoSessionInitializer<ConnectFuture>() {
            public void initializeSession(IoSession session, ConnectFuture future) {
                assertions[callbackInvoked] = true;
                callbackFuture[0] = future;
                latch.countDown();
            }
View Full Code Here


public class DatagramPortUnreachableTest extends TestCase {

    Object mutex = new Object();
   
    private void runTest(boolean closeOnPortUnreachable) throws Exception {
        IoConnector connector = new NioDatagramConnector();
        connector.setHandler(new IoHandlerAdapter() {

            @Override
            public void exceptionCaught(IoSession session, Throwable cause)
                    throws Exception {
                if (cause instanceof PortUnreachableException) {
                    synchronized(mutex) {
                        mutex.notify();
                    }
                }
            }
           
        });
        ConnectFuture future = connector.connect(new InetSocketAddress("localhost",
                AvailablePortFinder.getNextAvailable(20000)));
        future.awaitUninterruptibly();
        IoSession session = future.getSession();

        DatagramSessionConfig cfg = ((DatagramSessionConfig) session
                .getConfig());
        cfg.setUseReadOperation(true);
        cfg.setCloseOnPortUnreachable(closeOnPortUnreachable);
       
        synchronized(mutex) {
            session.write(IoBuffer.allocate(1)).awaitUninterruptibly().isWritten();
            session.read();
            mutex.wait();
        }
       
        Thread.sleep(500);
       
        assertEquals(closeOnPortUnreachable, session.isClosing());
        connector.dispose();
    }
View Full Code Here

public class PollingIoProcessorTest extends TestCase {

    public void testExceptionOnWrite() throws Exception {
        final Executor ex = Executors.newFixedThreadPool(1);

        IoConnector connector = new NioSocketConnector(
                new AbstractPollingIoProcessor<NioSession>(ex) {

                    private NioProcessor proc = new NioProcessor(ex);

                    @Override
                    protected Iterator<NioSession> allSessions() {
                        return proc.allSessions();
                    }

                    @Override
                    protected void destroy(NioSession session) throws Exception {
                        proc.destroy(session);
                    }

                    @Override
                    protected void dispose0() throws Exception {
                        proc.dispose0();
                    }

                    @Override
                    protected void init(NioSession session) throws Exception {
                        proc.init(session);
                    }

                    @Override
                    protected boolean isInterestedInRead(NioSession session) {
                        return proc.isInterestedInRead(session);
                    }

                    @Override
                    protected boolean isInterestedInWrite(NioSession session) {
                        return proc.isInterestedInWrite(session);
                    }

                    @Override
                    protected boolean isReadable(NioSession session) {
                        return proc.isReadable(session);
                    }

                    @Override
                    protected boolean isSelectorEmpty() {
                        return proc.isSelectorEmpty();
                    }

                    @Override
                    protected boolean isWritable(NioSession session) {
                        return proc.isWritable(session);
                    }

                    @Override
                    protected int read(NioSession session, IoBuffer buf)
                            throws Exception {
                        return proc.read(session, buf);
                    }

                    @Override
                    protected int select(long timeout) throws Exception {
                        return proc.select(timeout);
                    }

                    @Override
                    protected int select() throws Exception {
                        return proc.select();
                    }

                    @Override
                    protected Iterator<NioSession> selectedSessions() {
                        return proc.selectedSessions();
                    }

                    @Override
                    protected void setInterestedInRead(NioSession session,
                            boolean interested) throws Exception {
                        proc.setInterestedInRead(session, interested);
                    }

                    @Override
                    protected void setInterestedInWrite(NioSession session,
                            boolean interested) throws Exception {
                        proc.setInterestedInWrite(session, interested);
                    }

                    @Override
                    protected SessionState getState(
                            NioSession session) {
                        return proc.getState(session);
                    }

                    @Override
                    protected int transferFile(NioSession session,
                            FileRegion region, int length) throws Exception {
                        return proc.transferFile(session, region, length);
                    }

                    @Override
                    protected void wakeup() {
                        proc.wakeup();
                    }

                    @Override
                    protected int write(NioSession session, IoBuffer buf,
                            int length) throws Exception {
                        throw new NoRouteToHostException(
                                "No Route To Host Test");
                    }

                });
        connector.setHandler(new IoHandlerAdapter());

        IoAcceptor acceptor = new NioSocketAcceptor();
        acceptor.setHandler(new IoHandlerAdapter());

        InetSocketAddress addr = new InetSocketAddress("localhost",
                AvailablePortFinder.getNextAvailable(20000));

        acceptor.bind(addr);
        ConnectFuture future = connector.connect(addr);
        future.awaitUninterruptibly();
        IoSession session = future.getSession();
        WriteFuture wf = session.write(IoBuffer.allocate(1)).awaitUninterruptibly();
        assertNotNull(wf.getException());

        connector.dispose();
        acceptor.dispose();
    }
View Full Code Here

    }

    @Test
    public void testUnbindDisconnectsClients() throws Exception {
        bind(true);
        IoConnector connector = newConnector();
        IoSession[] sessions = new IoSession[5];
        connector.setHandler(new IoHandlerAdapter());
        for (int i = 0; i < sessions.length; i++) {
            ConnectFuture future = connector.connect(createSocketAddress(port));
            future.awaitUninterruptibly();
            sessions[i] = future.getSession();
            assertTrue(sessions[i].isConnected());
            assertTrue(sessions[i].write(IoBuffer.allocate(1)).awaitUninterruptibly().isWritten());
        }
View Full Code Here

    }

    @Test
    public void testUnbindResume() throws Exception {
        bind(true);
        IoConnector connector = newConnector();
        IoSession session = null;
        connector.setHandler(new IoHandlerAdapter());
       
        ConnectFuture future = connector.connect(createSocketAddress(port));
        future.awaitUninterruptibly();
        session = future.getSession();
        assertTrue(session.isConnected());
        assertTrue(session.write(IoBuffer.allocate(1)).awaitUninterruptibly().isWritten());

        // Wait for the server side session to be created.
        Thread.sleep(500);

        Collection<IoSession> managedSession = acceptor.getManagedSessions().values();
        assertEquals(1, managedSession.size());

        acceptor.unbind();

        // Wait for the client side sessions to close.
        Thread.sleep(500);

        assertEquals(0, managedSession.size());
        for (IoSession element : managedSession) {
            assertFalse(element.isConnected());
        }
       
        // Rebind
        bind(true);
       
        // Check again the connection
        future = connector.connect(createSocketAddress(port));
        future.awaitUninterruptibly();
        session = future.getSession();
        assertTrue(session.isConnected());
        assertTrue(session.write(IoBuffer.allocate(1)).awaitUninterruptibly().isWritten());
View Full Code Here

        final boolean[] success = {false};
        final Throwable[] exception = {null};
       
        int port = AvailablePortFinder.getNextAvailable(1025);
        IoAcceptor acceptor = createAcceptor();
        IoConnector connector = createConnector();

        try {
            acceptor.setHandler(new IoHandlerAdapter() {
                private int index = 0;
                @Override
                public void exceptionCaught(IoSession session, Throwable cause)
                        throws Exception {
                    exception[0] = cause;
                    session.close(true);
                }
                @Override
                public void messageReceived(IoSession session, Object message) throws Exception {
                    IoBuffer buffer = (IoBuffer) message;
                    while (buffer.hasRemaining()) {
                        int x = buffer.getInt();
                        if (x != index) {
                            throw new Exception(String.format("Integer at %d was %d but should have been %d", index, x, index));
                        }
                        index++;
                    }
                    if (index > FILE_SIZE / 4) {
                        throw new Exception("Read too much data");
                    }
                    if (index == FILE_SIZE / 4) {
                        success[0] = true;
                        session.close(true);
                    }
                }
            });
           
            ((NioSocketAcceptor)acceptor).setReuseAddress(true);
           
            acceptor.bind(new InetSocketAddress(port));
           
            connector.setHandler(new IoHandlerAdapter() {
                @Override
                public void exceptionCaught(IoSession session, Throwable cause)
                        throws Exception {
                    exception[0] = cause;
                    session.close(true);
                }
                @Override
                public void sessionClosed(IoSession session) throws Exception {
                    latch.countDown();
                }
            });
           
            ConnectFuture future = connector.connect(new InetSocketAddress("localhost", port));
            future.awaitUninterruptibly();
           
            IoSession session = future.getSession();
            session.write(file);
           
            latch.await();
           
            if (exception[0] != null) {
                throw exception[0];
            }
            assertTrue("Did not complete file transfer successfully", success[0]);
           
            assertEquals("Written messages should be 1 (we wrote one file)", 1, session.getWrittenMessages());
            assertEquals("Written bytes should match file size", FILE_SIZE, session.getWrittenBytes());
        } finally {
            try {
                connector.dispose();
            } finally {
                acceptor.dispose();
            }
        }
    }
View Full Code Here

        acceptor.setHandler(new IoHandlerAdapter());
        acceptor.bind(new InetSocketAddress(port));

        try {
            final StringBuffer buf = new StringBuffer();
            IoConnector connector = createConnector();
            connector.setHandler(new IoHandlerAdapter() {
                @Override
                public void sessionCreated(IoSession session) {
                    buf.append("1");
                }

                @Override
                public void sessionOpened(IoSession session) {
                    buf.append("2");
                }

                @Override
                public void exceptionCaught(IoSession session, Throwable cause) {
                    buf.append("X");
                }
            });
            ConnectFuture future = connector.connect(new InetSocketAddress(
                    "localhost", port));
            future.awaitUninterruptibly();
            buf.append("3");
            future.getSession().close(true);
            // sessionCreated() will fire before the connect future completes
View Full Code Here

    @Test
    public void testConnectFutureFailureTiming() throws Exception {
        int port = AvailablePortFinder.getNextAvailable(1025);
        final StringBuffer buf = new StringBuffer();

        IoConnector connector = createConnector();
        connector.setHandler(new IoHandlerAdapter() {
            @Override
            public void sessionCreated(IoSession session) {
                buf.append("X");
            }

            @Override
            public void sessionOpened(IoSession session) {
                buf.append("Y");
            }

            @Override
            public void exceptionCaught(IoSession session, Throwable cause) {
                buf.append("Z");
            }
        });
       
        try {
            ConnectFuture future = connector.connect(new InetSocketAddress(
                    "localhost", port));
            future.awaitUninterruptibly();
            buf.append("1");
            try {
                future.getSession().close(true);
                fail();
            } catch (RuntimeIoException e) {
                // Signifies a successful test execution
                assertTrue(true);
            }
            assertEquals("1", buf.toString());
        } finally {
            connector.dispose();
        }
    }
View Full Code Here

        final ConnectFuture[] callbackFuture = new ConnectFuture[1];
       
        int port = AvailablePortFinder.getNextAvailable(1025);

        IoAcceptor acceptor = createAcceptor();
        IoConnector connector = createConnector();

        try {
            acceptor.setHandler(new IoHandlerAdapter());
            InetSocketAddress address = new InetSocketAddress(port);
            acceptor.bind(address);
   
            connector.setHandler(new IoHandlerAdapter() {
               @Override
                public void sessionCreated(IoSession session) throws Exception {
                       assertions[sessionCreatedInvoked] = true;
                       assertions[sessionCreatedInvokedBeforeCallback] = !assertions[callbackInvoked];
                       latch.countDown();
                }
            });
       
            ConnectFuture future = connector.connect(new InetSocketAddress("127.0.0.1", port), new IoSessionInitializer<ConnectFuture>() {
                public void initializeSession(IoSession session, ConnectFuture future) {
                    assertions[callbackInvoked] = true;
                    callbackFuture[0] = future;
                    latch.countDown();
                }
            });
           
            assertTrue("Timed out waiting for callback and IoHandler.sessionCreated to be invoked", latch.await(5, TimeUnit.SECONDS));
            assertTrue("Callback was not invoked", assertions[callbackInvoked]);
            assertTrue("IoHandler.sessionCreated was not invoked", assertions[sessionCreatedInvoked]);
            assertFalse("IoHandler.sessionCreated was invoked before session callback", assertions[sessionCreatedInvokedBeforeCallback]);
            assertSame("Callback future should have been same future as returned by connect", future, callbackFuture[0]);
        } finally {
            try {
                connector.dispose();
            } finally {
                acceptor.dispose();
            }
        }
    }
View Full Code Here

*/
public class VmPipeEventOrderTest {
    @Test
    public void testServerToClient() throws Exception {
        IoAcceptor acceptor = new VmPipeAcceptor();
        IoConnector connector = new VmPipeConnector();

        acceptor.setHandler(new IoHandlerAdapter() {
            @Override
            public void sessionOpened(IoSession session) throws Exception {
                session.write("B");
            }

            @Override
            public void messageSent(IoSession session, Object message)
                    throws Exception {
                session.close(true);
            }
        });

        acceptor.bind(new VmPipeAddress(1));

        final StringBuffer actual = new StringBuffer();

        connector.setHandler(new IoHandlerAdapter() {

            @Override
            public void messageReceived(IoSession session, Object message)
                    throws Exception {
                actual.append(message);
            }

            @Override
            public void sessionClosed(IoSession session) throws Exception {
                actual.append("C");
            }

            @Override
            public void sessionOpened(IoSession session) throws Exception {
                actual.append("A");
            }

        });

        ConnectFuture future = connector.connect(new VmPipeAddress(1));

        future.awaitUninterruptibly();
        future.getSession().getCloseFuture().awaitUninterruptibly();
        acceptor.dispose();

View Full Code Here

TOP

Related Classes of org.apache.mina.core.service.IoConnector

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.