Example usage for org.apache.mina.api AbstractIoHandler AbstractIoHandler

List of usage examples for org.apache.mina.api AbstractIoHandler AbstractIoHandler

Introduction

In this page you can find the example usage for org.apache.mina.api AbstractIoHandler AbstractIoHandler.

Prototype

AbstractIoHandler

Source Link

Usage

From source file:com.semion.demo.mina.NioEchoClient.java

License:Apache License

public static void main(String[] args) {
    LOG.info("starting echo client");

    final NioTcpClient client = new NioTcpClient();
    client.setFilters();//from   w w  w . j  a v  a  2 s  .c o m
    client.setIoHandler(new AbstractIoHandler() {
        @Override
        public void sessionOpened(final IoSession session) {
            LOG.info("session opened {}", session);
        }

        @Override
        public void messageReceived(IoSession session, Object message) {
            LOG.info("message received {}", message);
            if (message instanceof ByteBuffer) {
                LOG.info("echoing");
                session.write(message);
            }
        }

        @Override
        public void messageSent(IoSession session, Object message) {
            LOG.info("message sent {}", message);
        }

        @Override
        public void sessionClosed(IoSession session) {
            LOG.info("session closed {}", session);
        }
    });

    try {
        IoFuture<IoSession> future = client.connect(new InetSocketAddress("localhost", 9999));

        try {
            IoSession session = future.get();
            LOG.info("session connected : {}", session);
        } catch (ExecutionException e) {
            LOG.error("cannot connect : ", e);
        }

        LOG.debug("Running the client for 25 sec");
        Thread.sleep(25000);
    } catch (InterruptedException e) {
    }
}

From source file:com.semion.demo.mina.NioEchoServer.java

License:Apache License

public static void main(final String[] args) {
    LOG.info("starting echo server");

    final NioTcpServer acceptor = new NioTcpServer();

    // create the filter chain for this service
    acceptor.setFilters(new LoggingFilter("LoggingFilter1"));

    acceptor.setIoHandler(new AbstractIoHandler() {
        @Override// w  ww  . ja  v  a  2 s  . c  o  m
        public void sessionOpened(final IoSession session) {
            LOG.info("session opened {}", session);

            final String welcomeStr = "welcome\n";
            final ByteBuffer bf = ByteBuffer.allocate(welcomeStr.length());
            bf.put(welcomeStr.getBytes());
            bf.flip();
            session.write(bf);
        }

        @Override
        public void messageReceived(IoSession session, Object message) {
            if (message instanceof ByteBuffer) {
                LOG.info("echoing");
                session.write(message);
            }
        }
    });
    try {
        final SocketAddress address = new InetSocketAddress(9999);
        acceptor.bind(address);
        LOG.debug("Running the server for 25 sec");
        Thread.sleep(25000);
        LOG.debug("Unbinding the TCP port");
        acceptor.unbind();
    } catch (final InterruptedException e) {
        LOG.error("Interrupted exception", e);
    }
}

From source file:org.eclipse.mihini.coap.assetfactory.CoapServer.java

License:Apache License

public void start() {

    final Map<String, IoSession> registration = new ConcurrentHashMap<String, IoSession>();

    reg = new ResourceRegistry();

    BioUdpServer server = new BioUdpServer();
    final RequestFilter<CoapMessage, CoapMessage> rq = new RequestFilter<CoapMessage, CoapMessage>();

    server.setFilters(/* new LoggingFilter(), */new ProtocolCodecFilter<CoapMessage, ByteBuffer, Void, Void>(
            new CoapEncoder(), new CoapDecoder()), rq);
    // idle in 10 minute
    server.getSessionConfig().setIdleTimeInMillis(IdleStatus.READ_IDLE, 10 * 60 * 1000);
    server.setIoHandler(new AbstractIoHandler() {

        long start = System.currentTimeMillis();
        int count = 0;

        @Override// w  w  w .j a  v  a  2  s.c  om
        public void messageReceived(IoSession session, Object message) {
            System.err.println("rcv : " + message);

            CoapMessage resp = reg.respond((CoapMessage) message, session);
            System.err.println("resp : " + resp);
            session.write(resp);
            count++;
            if (count >= 100000) {
                System.err.println("time for 100k msg : " + (System.currentTimeMillis() - start));
                count = 0;
                start = System.currentTimeMillis();
            }
        }

        @Override
        public void messageSent(IoSession session, Object message) {
            System.err.println("sent : " + message);
        }

        @Override
        public void sessionIdle(IoSession session, IdleStatus status) {
            System.err.println("idle closing");
            session.close(false);
        }
    });

    try {
        server.bind(5683);
        new Thread() {
            @Override
            public void run() {
                for (;;) {
                    for (IoSession s : registration.values()) {
                        rq.request(s, CoapMessage.get("st", true), 15000)
                                .register(new AbstractIoFutureListener<CoapMessage>() {
                                    @Override
                                    public void completed(CoapMessage result) {
                                        System.err.println("status : " + result);
                                    }
                                });
                    }

                    try {
                        // let's poll every 10 seconds
                        Thread.sleep(10000);
                    } catch (InterruptedException e) {
                        break;
                    }
                }
            }
        }.start();

        for (;;) {
            Thread.sleep(1000);
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

}