欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

山寨nio框架yanf4j发布0.50-alpha

程序员文章站 2022-03-01 14:33:32
...

俺的山寨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编译版本。

相关标签: 框架