当前位置: 首页>>代码示例>>Java>>正文


Java Selector.keys方法代码示例

本文整理汇总了Java中java.nio.channels.Selector.keys方法的典型用法代码示例。如果您正苦于以下问题:Java Selector.keys方法的具体用法?Java Selector.keys怎么用?Java Selector.keys使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.nio.channels.Selector的用法示例。


在下文中一共展示了Selector.keys方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: socketTimeouts

import java.nio.channels.Selector; //导入方法依赖的package包/类
protected void socketTimeouts() {
	long now = System.currentTimeMillis();
	if ((now - lastCheck) < getSelectorTimeout())
		return;
	// timeout
	Selector tmpsel = this.selector.get();
	Set<SelectionKey> keys = (isListening() && tmpsel != null) ? tmpsel.keys() : null;
	if (keys == null)
		return;
	for (Iterator<SelectionKey> iter = keys.iterator(); iter.hasNext();) {
		SelectionKey key = iter.next();
		try {
			// if (key.interestOps() == SelectionKey.OP_READ) {
			// //only timeout sockets that we are waiting for a read from
			// ObjectReader ka = (ObjectReader) key.attachment();
			// long delta = now - ka.getLastAccess();
			// if (delta > (long) getTimeout()) {
			// cancelledKey(key);
			// }
			// }
			// else
			if (key.interestOps() == 0) {
				// check for keys that didn't make it in.
				ObjectReader ka = (ObjectReader) key.attachment();
				if (ka != null) {
					long delta = now - ka.getLastAccess();
					if (delta > getTimeout() && (!ka.isAccessed())) {
						if (log.isWarnEnabled())
							log.warn("Channel key is registered, but has had no interest ops for the last "
									+ getTimeout() + " ms. (cancelled:" + ka.isCancelled() + "):" + key
									+ " last access:" + new java.sql.Timestamp(ka.getLastAccess())
									+ " Possible cause: all threads used, perform thread dump");
						ka.setLastAccess(now);
						// key.interestOps(SelectionKey.OP_READ);
					} // end if
				} else {
					cancelledKey(key);
				} // end if
			} // end if
		} catch (CancelledKeyException ckx) {
			cancelledKey(key);
		}
	}
	lastCheck = System.currentTimeMillis();
}
 
开发者ID:how2j,项目名称:lazycat,代码行数:46,代码来源:NioReceiver.java

示例2: socketTimeouts

import java.nio.channels.Selector; //导入方法依赖的package包/类
protected void socketTimeouts() {
        long now = System.currentTimeMillis();
        if ( (now-lastCheck) < getSelectorTimeout() ) return;
        //timeout
        Selector tmpsel = this.selector.get();
        Set<SelectionKey> keys =  (isListening()&&tmpsel!=null)?tmpsel.keys():null;
        if ( keys == null ) return;
        for (Iterator<SelectionKey> iter = keys.iterator(); iter.hasNext();) {
            SelectionKey key = iter.next();
            try {
//                if (key.interestOps() == SelectionKey.OP_READ) {
//                    //only timeout sockets that we are waiting for a read from
//                    ObjectReader ka = (ObjectReader) key.attachment();
//                    long delta = now - ka.getLastAccess();
//                    if (delta > (long) getTimeout()) {
//                        cancelledKey(key);
//                    }
//                }
//                else
                if ( key.interestOps() == 0 ) {
                    //check for keys that didn't make it in.
                    ObjectReader ka = (ObjectReader) key.attachment();
                    if ( ka != null ) {
                        long delta = now - ka.getLastAccess();
                        if (delta > getTimeout() && (!ka.isAccessed())) {
                            if (log.isWarnEnabled())
                                log.warn("Channel key is registered, but has had no interest ops for the last "+getTimeout()+" ms. (cancelled:"+ka.isCancelled()+"):"+key+" last access:"+new java.sql.Timestamp(ka.getLastAccess())+" Possible cause: all threads used, perform thread dump");
                            ka.setLastAccess(now);
                            //key.interestOps(SelectionKey.OP_READ);
                        }//end if
                    } else {
                        cancelledKey(key);
                    }//end if
                }//end if
            }catch ( CancelledKeyException ckx ) {
                cancelledKey(key);
            }
        }
        lastCheck = System.currentTimeMillis();
    }
 
开发者ID:liaokailin,项目名称:tomcat7,代码行数:41,代码来源:NioReceiver.java

示例3: handleTimeout

import java.nio.channels.Selector; //导入方法依赖的package包/类
private void handleTimeout(){
	Selector tmpsel = selector;
       Set keys =  (stoped == false && tmpsel!=null)?tmpsel.keys():null;
       if ( keys == null ) {
       	return;
       }
       Iterator it = keys.iterator();
       long now = System.currentTimeMillis();
       //cancel timeout and no interestOps key,close socket and channel
       while(it.hasNext()){
       	SelectionKey key = (SelectionKey) it.next();
       	if(key.channel() instanceof ServerSocketChannel){
       		continue;
       	}
       	if(key.isValid() == false){
       		continue;
       	}
       	try{
       		PushTask task = (PushTask)key.attachment();
       		if(task == null){
       			cancelKey(key);
       			continue;
       		}
       		if(task.isWritePending() == false && now - task.getLastActive() > sockTimout){
       			cancelKey(key);
       		}
       	}catch(CancelledKeyException e){
       		cancelKey(key);
       	}
       }
}
 
开发者ID:ahhblss,项目名称:ddpush,代码行数:32,代码来源:NIOPushListener.java

示例4: handleTimeout

import java.nio.channels.Selector; //导入方法依赖的package包/类
private void handleTimeout(){
	Selector tmpsel = selector;
       Set keys =  (stoped == false && tmpsel!=null)?tmpsel.keys():null;
       if ( keys == null ) {
       	return;
       }
       Iterator it = keys.iterator();
       long now = System.currentTimeMillis();
       //cancel timeout and no interestOps keys,close socket and channel
       while(it.hasNext()){
       	SelectionKey key = (SelectionKey) it.next();
       	if(key.channel() instanceof ServerSocketChannel){
       		continue;
       	}
       	if(key.isValid() == false){
       		continue;
       	}
       	try{
       		MessengerTask task = (MessengerTask)key.attachment();
       		if(task == null){
       			cancelKey(key);
       			continue;
       		}
       		if(task.isWritePending() == false && now - task.getLastActive() > sockTimout){
       			cancelKey(key);
       		}
       	}catch(CancelledKeyException e){
       		cancelKey(key);
       	}
       }
}
 
开发者ID:ahhblss,项目名称:ddpush,代码行数:32,代码来源:NIOTcpConnector.java

示例5: debugPrint

import java.nio.channels.Selector; //导入方法依赖的package包/类
void debugPrint(Selector selector) {
    System.err.println("Selector: debugprint start");
    Set<SelectionKey> keys = selector.keys();
    for (SelectionKey key : keys) {
        SelectableChannel c = key.channel();
        int ops = key.interestOps();
        System.err.printf("selector chan:%s ops:%d\n", c, ops);
    }
    System.err.println("Selector: debugprint end");
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:11,代码来源:HttpClientImpl.java


注:本文中的java.nio.channels.Selector.keys方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。