本文整理匯總了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(); }
}
}
}
示例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(); }
}
}
}
示例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");
}
}
示例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 ); }
}
示例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 ); }
}
示例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());
}
}
示例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);
}
}
示例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;
}