Posted on 2009-02-04 19:28
dennis 閱讀(1938)
評論(0) 編輯 收藏 所屬分類:
java 、
my open-source
俺的山寨nio框架yanf4j發布0.50-alpha版本,下載地址在
這里,更新了
wiki。本測試版本主要修改如下:
1、Controller接口引入了兩個新方法:
a)接受InetSocketAddress類型參數的系列open方法,用以在多宿主機上綁定到不同網絡接口
public void open(InetSocketAddress inetSocketAddress, boolean reuseAddr,
Handler handler, CodecFactory codecFactory) throws IOException;
public void open(InetSocketAddress inetSocketAddress, boolean reuseAddr,
Handler handler) throws IOException;
public void open(InetSocketAddress inetSocketAddress, Handler handler)
throws IOException;
public void open(InetSocketAddress inetSocketAddress, Handler handler,
CodecFactory codecFactory) throws IOException;
b)wakeup()方法,用以喚醒阻塞在select調用上的reactor,此方法的重載版本可以傳入session和 EventType指定觸發
public void wakeup();
public void wakeup(Session session, EventType eventType);
通常來說,你并不需要用到此方法。
2、TCPController添加了backlog的getter和setter方法,用以設置backlog隊列大小
public int getBacklog();
public void setBacklog(int backlog);
3、reuseAddress默認修改為false,防止服務器悄無聲息地啟動出錯,除非你明確指定。
4、修復數個bug,如session啟動未注冊到controller、關閉session在異常情況下Controller沒有移除session可能造成內存泄露等問題
5、一些優化手段,依照ACE建議調整事件派發順序等
6、一些重構,因為早期AbstractController并不龐大,因而將Reactor作為它的內部類實現,現在隨著代碼的添加,AbstractController變的復雜難懂,因而將Reactor從AbstractController抽離成獨立的類,引入新的接口如SessionEventManager、ControllerLifeCycle、ControllerWrapper以及SelectionKeyHandler等。
7、可以在jdk5.0下使用yanf4j了,原來僅支持1.6以上,不過你需要自己編譯,二進制包仍然僅提供jdk6.0編譯版本。