List of usage examples for org.apache.mina.api AbstractIoHandler AbstractIoHandler
AbstractIoHandler
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(); } }