/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.anarres.tftp.server.mina; import java.io.IOException; import java.net.InetSocketAddress; import javax.annotation.Nonnegative; import javax.annotation.Nonnull; import org.anarres.tftp.protocol.engine.AbstractTftpServer; import org.anarres.tftp.protocol.resource.TftpDataProvider; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.logging.LoggingFilter; import org.apache.mina.transport.socket.DatagramSessionConfig; import org.apache.mina.transport.socket.nio.NioDatagramAcceptor; /** * * @author shevek */ public class TftpServer extends AbstractTftpServer { private NioDatagramAcceptor acceptor; public TftpServer(@Nonnull TftpDataProvider dataProvider, @Nonnegative int port) { super(dataProvider, port); } public TftpServer(@Nonnull TftpDataProvider dataProvider) { super(dataProvider, DEFAULT_SERVER_PORT); } @Override public void start() throws IOException { acceptor = new NioDatagramAcceptor(); acceptor.setDefaultLocalAddress(new InetSocketAddress(getPort())); acceptor.getFilterChain().addLast("logger-data", new LoggingFilter("tftp-server-data")); acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TftpProtocolCodecFactory())); acceptor.getFilterChain().addLast("logger-packet", new LoggingFilter("tftp-server-packet")); acceptor.setHandler(new TftpServerProtocolHandler(getDataProvider())); DatagramSessionConfig dcfg = acceptor.getSessionConfig(); dcfg.setReuseAddress(true); // dcfg.setIdleTime(IdleStatus.BOTH_IDLE, 5); acceptor.bind(); } @Override public void stop() throws IOException { acceptor.dispose(); } }