快速业务通道

yanf4j引入了客户端非阻塞API - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
race(); }

yanf4j引入了客户端非阻塞API(3)

时间:2011-06-12 BlogJava dennis

注意,connect方法并不阻塞,而是立即返回,连接是否建立可以通过 TCPConnectorController.isConnected()方法来判断,因此通常你可能会这样使 用:

try {
            connector.Connect(new InetSocketAddress

("localhost", 8080));
            while(!connector.isConnected())
                ;
        } catch (Exception e) {
            e.printStackTrace();
        }

来强制确保后面对connector的使用是已经连接上的connector,然而更好的 做法是在Handler的onConnected()回调方法中处理逻辑,因为这个方法仅仅在连 接建立后才会被调用。

两个ConnectorController都有系列send方法,用于发送数据:

TCPConnectorController.send(Object msg) throws InterruptedException UDPConnectorController.send(DatagramPacket packet) throws InterruptedException UDPConnectorController.send(SocketAddress targetAddr, Object msg) throws InterruptedException

0.50-beta2带来的另一个修改就是Session接口添加setReadBufferByteOrder 方法,用于设置session接收缓冲区的字节序,默认是网络字节序,也就是大端 法。这个方法建议在Handler的onSessionStarted回调方法中调用。

在0.50-beta最重要的修改是引入了session发送队列缓冲区的流量控制选项 。默认情况下,session的发送缓冲队列是无界的,队列的push和pop也全然不会 阻塞。在设置了缓冲队列的高低水位选项后即引入了发送流量控制,规则如下:

a)当发送队列中的数据总量大于高水位标记(highWaterMark), Session.send将阻塞

b)在条件a的作用下,Session.send的阻塞将持续到发送队列中的数据总量小 于于低水位标记(lowWaterMark)才解除。

缓冲队列高低水位的设置通过Controller的下列方法设置:

public void setSessionWriteQueueHighWaterMark(int highWaterMark);

public void setSessionWriteQueueLowWaterMark(int lowWaterMark);

缓冲队列的流量控制想法来自ACE的ACE_Message_Queue,是通过 com.google.code.yanf4j.util.MessageQueue类实现的。

0.50-beta还引入了Session.send(Object msg)的重载版本 Session.send (Object msg,long timeout),在超过timeout时间后send仍然阻塞时即终止send 。注意,现在Session.send的这两个方法都返回一个bool值来表示send成功与否 ,并且都将响应中断(仅限启动了流量控制选项)抛出InterruptedException。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号