package com.github.luohaha.worker;

import java.io.IOException;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.logging.Logger;

public class Worker {
	public Logger logger = Logger.getLogger("LightComm4J");
	/**
	 * open selector
	 * @param msg
	 * msg
	 * @return
	 * selector
	 */
	public Selector openSelector(String msg) {
		Selector selector;
		do {
			try {
				selector = Selector.open();
				// selector open
				return selector;
			} catch (IOException e) {
				this.logger.warning(msg + e.toString());
			}
		} while (true);
	}
	
	/**
	 * open non-blocking socket channel
	 * @param msg
	 * message
	 * @return
	 * SocketChannel
	 */
	public SocketChannel openSocketChannelNonBlocking(String msg) {
		SocketChannel socketChannel;
		do {
			try {
				socketChannel = SocketChannel.open();
				socketChannel.configureBlocking(false);
				return socketChannel;
			} catch (IOException e) {
				this.logger.warning(msg + e.toString());
			}
		} while (true);
	}
	
	/**
	 * open server socket channel
	 * @param msg
	 * message
	 * @return
	 * ServerSocketChannel
	 */
	public ServerSocketChannel openServerSocketChannelNonBlocking(String msg) {
		ServerSocketChannel serverSocketChannel;
		do {
			try {
				serverSocketChannel = ServerSocketChannel.open();
				serverSocketChannel.configureBlocking(false);
				return serverSocketChannel;
			} catch (IOException e) {
				this.logger.warning(msg + e.toString());
			}
		} while (true);
	}
}