package com.jds.nio;
import com.jds.nio.core.NioHandler;
import com.jds.nio.core.NioService;
import com.jds.nio.core.Protocol;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
/**
* Author: VISTALL
* Company: J Develop Station
* Date: 02.09.2009
* Time: 18:03:34
*/
public class NioAcceptor extends NioService
{
private ServerSocketChannel _serverSocket;
public NioAcceptor(NioHandler handler, Protocol protocol)
{
super(handler, protocol);
}
/**
* Биндит хост по определенном адресе
*/
public void bind(InetSocketAddress address) throws IOException
{
//try
//{
_selector = Selector.open();
_serverSocket = ServerSocketChannel.open();
_serverSocket.configureBlocking(false);
_serverSocket.socket().bind(address);
_serverSocket.register(_selector, SelectionKey.OP_ACCEPT);
_serverSocket.socket().setReceiveBufferSize(1024 * 16);
fireServiceActivated();
//}
//catch (IOException e)
/**{
fireServiceDeactivated();
fireCatchException(e);
} */
}
public void unbind()
{
//try
{
try
{
_acceptor.shutdown();
_serverSocket.close();
_selector.close();
}
catch (IOException e)
{
//e.printStackTrace();
}
}
/*catch (IOException e)
{
//
}*/
}
}