package com.tilisty.data;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.filterchain.IoFilter;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFactory;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
/**
* Initiates the socket listener - listens on port 19266
*
* Runs in its own thread.
*
* @author Jason Simpson <jsnsimpson@gmail.com>
* @version 1.0
*/
public class TilistyServer extends Thread implements Runnable {
private IoAcceptor acceptor;
private TilistyServerHandler tilistyHandler;
public TilistyServer(TilistyServerHandler handler)
{
this.tilistyHandler = handler;
}
public void run()
{
this.startServer();
}
public void startServer()
{
this.acceptor = (IoAcceptor)new NioSocketAcceptor();
TextLineCodecFactory codec = new TextLineCodecFactory(Charset.forName("UTF-8"));
codec.setDecoderMaxLineLength(250000);
codec.setEncoderMaxLineLength(250000);
this.acceptor.getFilterChain().addLast("codec", (IoFilter)new ProtocolCodecFilter((ProtocolCodecFactory)codec));
this.acceptor.setHandler((IoHandler)this.tilistyHandler);
this.acceptor.getSessionConfig().setMaxReadBufferSize(250000);
this.acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 15);
try {
this.acceptor.bind((SocketAddress)new InetSocketAddress(19266));
}
catch (IOException e) {
try {
Thread.sleep(2000L);
}
catch (InterruptedException ex) {}
this.acceptor.dispose();
new TilistyServer(this.tilistyHandler).start();
}
}
}