當前位置: 首頁>>代碼示例>>Java>>正文


Java AbstractSelectableChannel.keyFor方法代碼示例

本文整理匯總了Java中java.nio.channels.spi.AbstractSelectableChannel.keyFor方法的典型用法代碼示例。如果您正苦於以下問題:Java AbstractSelectableChannel.keyFor方法的具體用法?Java AbstractSelectableChannel.keyFor怎麽用?Java AbstractSelectableChannel.keyFor使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在java.nio.channels.spi.AbstractSelectableChannel的用法示例。


在下文中一共展示了AbstractSelectableChannel.keyFor方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: pauseSelects

import java.nio.channels.spi.AbstractSelectableChannel; //導入方法依賴的package包/類
public void pauseSelects( AbstractSelectableChannel channel ) {

      //System.out.println( "pauseSelects: " + channel + " - " + Debug.getCompressedStackTrace() );

      if( channel == null ) {
        return;
      }

      SelectionKey key = channel.keyFor( selector );

      if( key != null && key.isValid() ) {
        key.interestOps( key.interestOps() & ~INTEREST_OP );
      }
      else {  //channel not (yet?) registered
        if( channel.isOpen() ) {  //only bother if channel has not already been closed
          try{  register_cancel_list_mon.enter();

            paused_states.put( channel, Boolean.TRUE);  //ensure the op is paused upon reg select-time reg

          }
          finally{  register_cancel_list_mon.exit();  }
        }
      }
    }
 
開發者ID:BiglySoftware,項目名稱:BiglyBT,代碼行數:25,代碼來源:VirtualChannelSelectorImpl.java

示例2: pauseSelects

import java.nio.channels.spi.AbstractSelectableChannel; //導入方法依賴的package包/類
public void pauseSelects( AbstractSelectableChannel channel ) {
  
  //System.out.println( "pauseSelects: " + channel + " - " + Debug.getCompressedStackTrace() );
  
  if( channel == null ) {
    return;
  }
  
  SelectionKey key = channel.keyFor( selector );
  
  if( key != null && key.isValid() ) {
    key.interestOps( key.interestOps() & ~INTEREST_OP );
  }
  else {  //channel not (yet?) registered
    if( channel.isOpen() ) {  //only bother if channel has not already been closed
      try{  register_cancel_list_mon.enter();
      
        paused_states.put( channel, new Boolean( true ) );  //ensure the op is paused upon reg select-time reg

      }
      finally{  register_cancel_list_mon.exit();  }
    }
  }
}
 
開發者ID:thangbn,項目名稱:Direct-File-Downloader,代碼行數:25,代碼來源:VirtualChannelSelectorImpl.java

示例3: addInterest

import java.nio.channels.spi.AbstractSelectableChannel; //導入方法依賴的package包/類
protected void addInterest( AbstractSelectableChannel channel ,  int interest , Object attachment , Selector selector )
{
	try
	{
     SelectionKey sk = channel.keyFor(selector);
     if (sk != null)
     {
     	if (!sk.isValid())
     		return;
     	
         int actualInterests = sk.interestOps();
         if ((actualInterests & interest) != interest)
             sk.interestOps(actualInterests | interest);
         if (attachment != null)
             sk.attach(attachment);
     }
     else
         channel.register(selector, interest, attachment);
	}
	catch (ClosedChannelException e)
	{
		log.warn("Cannot add interest to selector channel : channel is closed");
	}
}
 
開發者ID:timewalker74,項目名稱:ffmq,代碼行數:25,代碼來源:NIOTcpMultiplexer.java

示例4: resumeSelects

import java.nio.channels.spi.AbstractSelectableChannel; //導入方法依賴的package包/類
public void resumeSelects( AbstractSelectableChannel channel ) {
  //System.out.println( "resumeSelects: " + channel + " - " + Debug.getCompressedStackTrace() );
  if( channel == null ) {
    Debug.printStackTrace( new Exception( "resumeSelects():: channel == null" ) );
    return;
  }

  SelectionKey key = channel.keyFor( selector );

  if( key != null && key.isValid() ) {
	  	// if we're resuming a non-interested key then reset the metrics

	if (( key.interestOps() & INTEREST_OP ) == 0 ){
 	   RegistrationData data = (RegistrationData)key.attachment();

 	   data.last_select_success_time 	= SystemTime.getCurrentTime();
 	   data.non_progress_count			= 0;
	}
    key.interestOps( key.interestOps() | INTEREST_OP );
  }
  else {  //channel not (yet?) registered
    try{  register_cancel_list_mon.enter();
      paused_states.remove( channel );  //check if the channel's op has been already paused before select-time reg
    }
    finally{  register_cancel_list_mon.exit();  }
  }

  //try{
  //  selector.wakeup();
  //}
  //catch( Throwable t ) {  Debug.out( "selector.wakeup():: caught exception: ", t );   }
}
 
開發者ID:BiglySoftware,項目名稱:BiglyBT,代碼行數:33,代碼來源:VirtualChannelSelectorImpl.java

示例5: resumeSelects

import java.nio.channels.spi.AbstractSelectableChannel; //導入方法依賴的package包/類
public void resumeSelects( AbstractSelectableChannel channel ) {
  //System.out.println( "resumeSelects: " + channel + " - " + Debug.getCompressedStackTrace() );
  if( channel == null ) {
    Debug.printStackTrace( new Exception( "resumeSelects():: channel == null" ) );
    return;
  }
  
  SelectionKey key = channel.keyFor( selector );
  
  if( key != null && key.isValid() ) {
	  	// if we're resuming a non-interested key then reset the metrics
	  
	if (( key.interestOps() & INTEREST_OP ) == 0 ){
 	   RegistrationData data = (RegistrationData)key.attachment();

 	   data.last_select_success_time 	= SystemTime.getCurrentTime();
 	   data.non_progress_count			= 0;
	}
    key.interestOps( key.interestOps() | INTEREST_OP );
  }
  else {  //channel not (yet?) registered
    try{  register_cancel_list_mon.enter();
      paused_states.remove( channel );  //check if the channel's op has been already paused before select-time reg
    }
    finally{  register_cancel_list_mon.exit();  }
  }
  
  //try{
  //  selector.wakeup();
  //}
  //catch( Throwable t ) {  Debug.out( "selector.wakeup():: caught exception: ", t );   }
}
 
開發者ID:thangbn,項目名稱:Direct-File-Downloader,代碼行數:33,代碼來源:VirtualChannelSelectorImpl.java

示例6: closeSocketChannel

import java.nio.channels.spi.AbstractSelectableChannel; //導入方法依賴的package包/類
private void closeSocketChannel( AbstractSelectableChannel channel , Selector selector )
{
    try
    {
        SelectionKey sk = channel.keyFor(selector);
        if (sk != null && sk.isValid())
            sk.cancel();
        if (channel.isOpen())
            channel.close();
    }
    catch (Exception e)
    {
        log.error("Could not close channel : "+e.toString());
    }
}
 
開發者ID:timewalker74,項目名稱:ffmq,代碼行數:16,代碼來源:NIOTcpMultiplexer.java

示例7: removeInterest

import java.nio.channels.spi.AbstractSelectableChannel; //導入方法依賴的package包/類
private void removeInterest( AbstractSelectableChannel channel ,  int interest , Selector selector )
{
    SelectionKey sk = channel.keyFor(selector);
    if (sk != null && sk.isValid())
    {
        int actualInterests = sk.interestOps();
        if ((actualInterests & interest) != 0)
            sk.interestOps(sk.interestOps() & ~interest);
    }
}
 
開發者ID:timewalker74,項目名稱:ffmq,代碼行數:11,代碼來源:NIOTcpMultiplexer.java

示例8: deregister

import java.nio.channels.spi.AbstractSelectableChannel; //導入方法依賴的package包/類
public VanillaSelector deregister(@NotNull AbstractSelectableChannel channel, int ops) throws IOException {
    SelectionKey selectionKey = channel.keyFor(this.selector);
    if (selectionKey != null) {
        selectionKey.interestOps(selectionKey.interestOps() & ~ops);
    }

    return this;
}
 
開發者ID:OpenHFT,項目名稱:Chronicle-Common,代碼行數:9,代碼來源:VanillaSelector.java


注:本文中的java.nio.channels.spi.AbstractSelectableChannel.keyFor方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。