package com.jenkov.nioserver;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Queue;
/**
* Project: java-nio-server
* File: SocketAcceptor.java
* Created: 19 Oct 2015
*
* @author jjenkov
*/
public class SocketAcceptor implements Runnable {
private int tcpPort;
private ServerSocketChannel serverSocket;
private Queue socketQueue;
public SocketAcceptor(int tcpPort, Queue socketQueue) {
this.tcpPort = tcpPort;
this.socketQueue = socketQueue;
}
public void run() {
try {
serverSocket = ServerSocketChannel.open();
serverSocket.bind(new InetSocketAddress(tcpPort));
} catch (IOException e) {
e.printStackTrace();
return;
}
while (true) {
try {
SocketChannel socketChannel = serverSocket.accept();
System.out.println("Socket accepted: " + socketChannel);
// TODO: check if the queue can even accept more sockets.
this.socketQueue.add(new Socket(socketChannel));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}