📄 acceptor.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 + -