⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acceptor.java

📁 短信发送
💻 JAVA
字号:
/**
 * Created at Nov 22, 2008
 */
package com.jdev.net.connector;

import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;

import com.jdev.net.event.Notifier;
import com.jdev.net.queue.Request;
import com.jdev.util.Debug;

/**
 * <p>Title: Acceptor</p>
 * <p>Description: </p>
 * @author Lawrence
 * @version 
 */
public class Acceptor implements Runnable {

	private final static String module = Acceptor.class.getName();
	private final Selector selector;
	private final ServerSocketChannel ssc;
	private static Notifier notifier = Notifier.getNotifier();
	
	/**
	 * @param selector
	 * @param ssc
	 */
	public Acceptor(Selector selector, ServerSocketChannel ssc) {
		this.selector = selector;
		this.ssc = ssc;
	}

	/* (non-Javadoc)
	 * @see java.lang.Runnable#run()
	 */
	public void run() {
		try{
			notifier.fireOnAccept();
			SocketChannel sc = ssc.accept();
			sc.configureBlocking(false);

			// 触发接受连接事件
			Request request = new Request(sc);
			notifier.fireOnAccepted(request);

			// 注册读操作,以进行下一步的读操作
			SelectionKey sk = sc.register(selector, 0);
			sk.interestOps(SelectionKey.OP_READ);
			selector.wakeup();
			sk.attach(new TcpHelper(sk,sc));
			
		}catch(Exception e){
			Debug.logError(e, module);
		}

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -