List of usage examples for org.apache.mina.filter.codec ProtocolCodecFilter ProtocolCodecFilter
public ProtocolCodecFilter(ProtocolEncoder<MESSAGE, ENCODED, ENCODING_STATE> encoder,
ProtocolDecoder<ENCODED, MESSAGE, DECODING_STATE> decoder)
From source file:com.jagornet.dhcpv6.client.TestClient.java
License:Open Source License
/** * Start.//w ww. ja v a2 s . com */ public void start() { // pre-configure the message factory instance DhcpMessageFactory.setType(DhcpMessageFactory.Type.STATELESS_CLIENT); log.debug("Creating a datagram connector"); IoConnector connector = new NioDatagramConnector(); log.debug("Setting the handler"); connector.setHandler(this); DefaultIoFilterChainBuilder chain = connector.getFilterChain(); chain.addLast("logger", new LoggingFilter()); ProtocolEncoder encoder = new DhcpEncoderAdapter(); ProtocolDecoder decoder = new DhcpDecoderAdapter(); chain.addLast("codec", new ProtocolCodecFilter(encoder, decoder)); log.debug("About to connect to the server..."); ConnectFuture connFuture = connector.connect(new InetSocketAddress(serverAddr, serverPort)); log.debug("About to wait."); connFuture.awaitUninterruptibly(); log.debug("Adding a future listener."); connFuture.addListener(new IoFutureListener<ConnectFuture>() { public void operationComplete(ConnectFuture future) { if (future.isConnected()) { log.debug("...connected"); IoSession session = future.getSession(); List<DhcpMessage> msgs = buildRequestMessages(); for (DhcpMessage msg : msgs) { // write the message, the codec will convert it // to wire format... well, hopefully it will! session.write(msg); } System.exit(0); } else { log.error("Not connected...exiting"); } } }); }
From source file:com.jagornet.dhcpv6.server.nio.NioDhcpServer.java
License:Open Source License
/** * Instantiates a new unicast dhcp server. * /* ww w.jav a 2s. c om*/ * @param port the port * * @throws Exception the exception */ public NioDhcpServer(List<InetAddress> addrs, int port) throws Exception { try { acceptor = new NioDatagramAcceptor(); if ((addrs != null) && !addrs.isEmpty()) { List<SocketAddress> socketAddrs = new ArrayList<SocketAddress>(); for (InetAddress addr : addrs) { SocketAddress sockAddr = new InetSocketAddress(addr, port); socketAddrs.add(sockAddr); } acceptor.setDefaultLocalAddresses(socketAddrs); } acceptor.setHandler(new DhcpHandlerAdapter()); registerJmx(acceptor); DefaultIoFilterChainBuilder chain = acceptor.getFilterChain(); chain.addLast("logger", new LoggingFilter()); ProtocolEncoder encoder = new DhcpEncoderAdapter(); ProtocolDecoder decoder = new DhcpDecoderAdapter(); /* * From the MINA Wiki documentation: * * Where should I put an ExecutorFilter in an IoFilterChain? * * It depends on the characteristics of your application. * For an application with a ProtocolCodecFilter implementation and * a usual IoHandler implementation with database operations, * I'd suggest you to add the ExecutorFilter after the * ProtocolCodecFilter implementation. It is because the * performance characteristic of most protocol codec implementations * is CPU-bound, which is the same with I/O processor threads. */ // Add CPU-bound job first, chain.addLast("codec", new ProtocolCodecFilter(encoder, decoder)); // and then a thread pool. executorService = Executors.newCachedThreadPool(); chain.addLast("threadPool", new ExecutorFilter(executorService)); DatagramSessionConfig dcfg = acceptor.getSessionConfig(); dcfg.setReuseAddress(true); } catch (Exception ex) { log.error("Failed to initialize server: " + ex, ex); throw ex; } }
From source file:mx.unam.fesa.isoo.msp.network.MSClient.java
License:Open Source License
/** * @param hostname//from w ww. j a v a2 s.c om * @param port */ public MSClient(String hostname, int port) { this.connector = new NioDatagramConnector(); this.connector.getFilterChain().addLast("ms protocol codec", new ProtocolCodecFilter(new MSRequestEncoder(), new MSResponseDecoder())); StateMachine sm = StateMachineFactory.getInstance(IoHandlerTransition.class).create(MSPlayer.REGISTER, new MSPlayer(this)); this.connector.setHandler(new StateMachineProxyBuilder().create(IoHandler.class, sm)); this.connector.connect(new InetSocketAddress(hostname, port)); }
From source file:mx.unam.fesa.mss.network.MSServer.java
License:Open Source License
/** * @param port/*from w w w . j a v a2s. c o m*/ * @throws IOException */ public MSServer(int port) throws IOException { this.acceptor = new NioDatagramAcceptor(); this.acceptor.getSessionConfig().setReuseAddress(true); this.acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new MSResponseEncoder(), new MSRequestDecoder())); //this.acceptor.getFilterChain().addLast("logger", new LoggingFilter()); this.acceptor.addListener(new IoServiceListener() { /* (non-Javadoc) * @see org.apache.mina.core.service.IoServiceListener#sessionDestroyed(org.apache.mina.core.session.IoSession) */ @Override public void sessionDestroyed(IoSession session) throws Exception { } /* (non-Javadoc) * @see org.apache.mina.core.service.IoServiceListener#sessionCreated(org.apache.mina.core.session.IoSession) */ @Override public void sessionCreated(IoSession session) throws Exception { } /* (non-Javadoc) * @see org.apache.mina.core.service.IoServiceListener#serviceIdle(org.apache.mina.core.service.IoService, org.apache.mina.core.session.IdleStatus) */ @Override public void serviceIdle(IoService service, IdleStatus idleStatus) throws Exception { } /* (non-Javadoc) * @see org.apache.mina.core.service.IoServiceListener#serviceDeactivated(org.apache.mina.core.service.IoService) */ @Override public void serviceDeactivated(IoService service) throws Exception { } /* (non-Javadoc) * @see org.apache.mina.core.service.IoServiceListener#serviceActivated(org.apache.mina.core.service.IoService) */ @Override public void serviceActivated(IoService service) throws Exception { LOGGER.info("Server connected to " + address); } }); StateMachine sm = StateMachineFactory.getInstance(IoHandlerTransition.class) .create(MSProtocolHandler.REGISTER_PLAYER1, new MSProtocolHandler(this)); this.acceptor.setHandler(new StateMachineProxyBuilder().create(IoHandler.class, sm)); this.acceptor.bind(this.address = new InetSocketAddress(port)); }
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/*from w ww . ja v a2 s . co 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.eclipse.scada.core.net.ConnectionHelper.java
License:Open Source License
/** * Setup the filter chain of a NET/GMPP connection * //from w w w. j a va2s .c om * @param connectionInformation * the connection information to use * @param filterChainBuilder * the chain builder */ public static void setupFilterChain(final ConnectionInformation connectionInformation, final DefaultIoFilterChainBuilder filterChainBuilder, final boolean isClient) { // set up compression final CompressionFilter compressionFilter = createCompressionFilter( connectionInformation.getProperties().get("compress")); if (compressionFilter != null) { filterChainBuilder.addLast("compress", compressionFilter); } // set up ssl final String ssl = connectionInformation.getProperties().get("ssl"); if (ssl != null) { initSsl(connectionInformation, filterChainBuilder, isClient); } // set up logging final String trace = connectionInformation.getProperties().get("trace"); if (trace != null) { filterChainBuilder.addLast("logging", new LoggingFilter()); } // add the main codec filterChainBuilder.addLast("codec", new ProtocolCodecFilter(new GMPPProtocolEncoder(), new GMPPProtocolDecoder())); }
From source file:org.eclipse.scada.da.client.sfp.FilterChainBuilder.java
License:Open Source License
@Override public void buildFilterChain(final IoFilterChain chain) { if (this.loggerName != null && Boolean.getBoolean("org.eclipse.scada.protocol.sfp.common.logger.raw")) { chain.addFirst("logger.raw", new LoggingFilter(this.loggerName)); }/*from ww w. j a va 2s .co m*/ if (!Boolean.getBoolean("org.eclipse.scada.protocol.sfp.common.disableStats")) { chain.addFirst(StatisticsFilter.DEFAULT_NAME, new StatisticsFilter()); } if (this.loggerName != null && Boolean.getBoolean("org.eclipse.scada.protocol.sfp.common.logger")) { chain.addFirst("logger", new LoggingFilter(this.loggerName)); } chain.addLast("closeidle", new IoFilterAdapter() { @Override public void sessionIdle(final NextFilter nextFilter, final IoSession session, final IdleStatus status) throws Exception { session.close(true); } }); chain.addLast("codec", new ProtocolCodecFilter(new ProtocolEncoderImpl(), new ProtocolDecoderImpl())); }
From source file:org.eclipse.scada.da.server.exporter.modbus.ModbusExport.java
License:Open Source License
private void createAcceptor() { final NioSocketAcceptor acceptor = new NioSocketAcceptor(this.processor); try {//from w w w. ja va 2 s .c o m acceptor.setReuseAddress(true); acceptor.setBacklog( Integer.getInteger("org.eclipse.scada.da.server.exporter.modbus.acceptor.backlog", 5)); //$NON-NLS-1$ final ModbusTcpEncoder encoder = new ModbusTcpEncoder(); final ModbusTcpDecoder decoder = new ModbusTcpDecoder(); acceptor.getFilterChain().addLast("modbusPdu", new ProtocolCodecFilter(encoder, decoder)); //$NON-NLS-1$ acceptor.getFilterChain().addLast("modbus", new ModbusSlaveProtocolFilter()); //$NON-NLS-1$ acceptor.setHandler(new IoHandlerAdapter() { @Override public void exceptionCaught(final IoSession session, final Throwable cause) throws Exception { session.close(true); }; @Override public void sessionOpened(final IoSession session) throws Exception { logger.info("Session opened: {}", session); //$NON-NLS-1$ ModbusExport.this.info.incrementActiveSessions(); handleSessionOpened(session); }; @Override public void sessionIdle(final IoSession session, final IdleStatus status) throws Exception { logger.info("Session idle: {}", session); //$NON-NLS-1$ handleSessionIdle(session); }; @Override public void sessionClosed(final IoSession session) throws Exception { logger.info("Session closed: {}", session); //$NON-NLS-1$ ModbusExport.this.info.decrementActiveSessions(); }; @Override public void messageReceived(final IoSession session, final Object message) throws Exception { handleMessageReceived(session, message); }; }); this.acceptor = acceptor; this.acceptor.bind(this.currentAddress); } catch (final Exception e) { logger.warn("Failed to create acceptor", e); this.acceptor.dispose(); throw new RuntimeException(e); } }
From source file:org.eclipse.scada.da.server.osgi.modbus.ModbusMaster.java
License:Open Source License
@Override protected void configureConnector(final NioSocketConnector connector) { logger.debug("Configuring connector: {}", connector); switch (this.protocolType) { case TYPE_TCP: connector.getFilterChain().addLast("modbusPdu", new ProtocolCodecFilter(new ModbusTcpEncoder(), new ModbusTcpDecoder())); connector.getFilterChain().addLast("modbus", new ModbusMasterProtocolFilter()); break;/*from w w w.j a v a2 s . co m*/ case TYPE_RTU: // convert milliseconds to microseconds to allow more accurate timing final ModbusRtuDecoder rtuDecoder = new ModbusRtuDecoder(getExecutor(), Double.valueOf(this.interFrameDelay * 1000).longValue(), TimeUnit.MICROSECONDS); connector.getFilterChain().addLast("modbusPdu", new ModbusRtuProtocolCodecFilter(new ModbusRtuEncoder(), rtuDecoder)); connector.getFilterChain().addLast("modbus", new ModbusMasterProtocolFilter()); break; default: throw new IllegalArgumentException( String.format("'%s' is not an allowed modbus device type", this.protocolType)); } if (Boolean.getBoolean("org.eclipse.scada.da.server.osgi.modbus.trace")) { connector.getFilterChain().addFirst("logger", new LoggingFilter(ModbusMaster.class.getName() + ".protocol")); } }
From source file:org.eclipse.scada.protocol.arduino.ArduinoDevice.java
License:Open Source License
public synchronized void start() { if (this.started) { return;/* www . j a va 2 s .c om*/ } this.started = true; this.executorService = ScheduledExportedExecutorService .newSingleThreadExportedScheduledExecutor("ArduninoDevice/" + this.address); this.connector = new NioDatagramConnector(); this.connector.setHandler(this); if (this.activateLogger) { this.connector.getFilterChain().addLast("logger", new LoggingFilter(this.getClass().getName())); } final ArduinoCodec codec = new ArduinoCodec(); this.connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(codec, codec)); this.connector.connect(this.address); }