List of usage examples for org.apache.mina.api IoSession write
void write(Object message);
From source file:BuggyServer.java
License:Apache License
public static void main(String[] args) throws Exception { PropertyConfigurator.configure("log4j.properties"); LOG.info("starting echo server"); OneThreadSelectorStrategy strategy = new OneThreadSelectorStrategy( new SelectorFactory(NioSelectorProcessor.class)); NioTcpServer acceptor = new NioTcpServer(strategy); // create the fitler chain for this service acceptor.setFilters(new LoggingFilter("LoggingFilter1"), new IoFilter() { @Override/*from ww w.j a v a 2s .c o m*/ public void sessionOpened(IoSession session) { LOG.info("session {} open", session); } @Override public void sessionIdle(IoSession session, IdleStatus status) { LOG.info("session {} idle", session); } @Override public void sessionCreated(IoSession session) { LOG.info("session {} created", session); } @Override public void sessionClosed(IoSession session) { LOG.info("session {} open", session); } @Override public void messageWriting(IoSession session, Object message, WriteFilterChainController controller) { // we just push the message in the chain controller.callWriteNextFilter(session, message); } @Override public void messageReceived(IoSession session, Object message, ReadFilterChainController controller) { if (message instanceof ByteBuffer) { LOG.info("echoing"); session.write(message); } } }); acceptor.addListener(new IoServiceListener() { @Override public void sessionDestroyed(IoSession session) { LOG.info("session destroyed {}", session); } @Override public void sessionCreated(IoSession session) { LOG.info("session created {}", session); String welcomeStr = "welcome\n"; ByteBuffer bf = ByteBuffer.allocate(welcomeStr.length()); bf.put(welcomeStr.getBytes()); bf.flip(); session.write(bf); } @Override public void serviceInactivated(IoService service) { LOG.info("service deactivated {}", service); } @Override public void serviceActivated(IoService service) { LOG.info("service activated {}", service); } }); startOfAll = System.currentTimeMillis(); List<BindingThread> threads = new ArrayList<BindingThread>(); for (int i = 9999; i < totalPorts + 9999; i++) { BindingThread bindingThread = new BindingThread(acceptor, i); threads.add(bindingThread); bindingThread.start(); } Thread.sleep(500); acceptor.unbindAll();// the iterator in it must be in the synchronized block, but it is not in the sync block, so the concurrentModificationException happens. // Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 // Exception in thread "main" java.util.ConcurrentModificationException // at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894) // at java.util.HashMap$KeyIterator.next(HashMap.java:928) // at org.apache.mina.transport.tcp.nio.NioTcpServer.unbindAll(NioTcpServer.java:127) // at org.apache.mina.examples.echoserver.BuggyServer.main(BuggyServer.java:143) // join does not work for the binding thread as they wait for the incoming requests. // try { // 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(address); // } catch (IOException e) { // LOG.error("I/O exception", e); // } catch (InterruptedException e) { // LOG.error("Interrupted exception", e); // } }
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();/* w ww .j ava2 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/*from w w w. j a v a2s . 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/* ww w.ja v a2 s .c o m*/ 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(); } }
From source file:org.geb.core.transport.tcp.mina.MinaTcpServer.java
@Override public void write(final Message message, final String destPeerID) throws UnknownClientException { Objects.requireNonNull(message); Objects.requireNonNull(destPeerID); final Long sessionID = findSessionID(destPeerID); if (sessionID == null) { LOG.log(Level.INFO, "No such client: {0}", destPeerID); throw new UnknownClientException("No such client: " + destPeerID); }// w w w .j av a 2 s . c o m final IoSession session = ioServer.getManagedSessions().get(sessionID); if (session == null) { LOG.log(Level.WARNING, "No such session: {0}", sessionID); throw new UnknownClientException("No such session: " + sessionID + " for client: " + destPeerID); } session.write(new CommonMessage(message)); }
From source file:performance.BuggyServer.java
License:Apache License
private static void setFiltersListeners(NioTcpServer acceptor) { // create the fitler chain for this service acceptor.setFilters(new LoggingFilter("LoggingFilter1"), new IoFilter() { @Override// w w w .jav a 2 s . c om public void sessionOpened(IoSession session) { LOG.info("session {} open", session); } @Override public void sessionIdle(IoSession session, IdleStatus status) { LOG.info("session {} idle", session); } @Override public void sessionCreated(IoSession session) { LOG.info("session {} created", session); } @Override public void sessionClosed(IoSession session) { LOG.info("session {} open", session); } @Override public void messageWriting(IoSession session, Object message, WriteFilterChainController controller) { // we just push the message in the chain controller.callWriteNextFilter(session, message); } @Override public void messageReceived(IoSession session, Object message, ReadFilterChainController controller) { if (message instanceof ByteBuffer) { LOG.info("echoing"); session.write(message); } } }); acceptor.addListener(new IoServiceListener() { @Override public void sessionDestroyed(IoSession session) { LOG.info("session destroyed {}", session); } @Override public void sessionCreated(IoSession session) { LOG.info("session created {}", session); String welcomeStr = "welcome\n"; ByteBuffer bf = ByteBuffer.allocate(welcomeStr.length()); bf.put(welcomeStr.getBytes()); bf.flip(); session.write(bf); } @Override public void serviceInactivated(IoService service) { LOG.info("service deactivated {}", service); } @Override public void serviceActivated(IoService service) { LOG.info("service activated {}", service); } }); }