|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
java.lang.Objectjava.nio.channels.SelectionKey
public abstract class SelectionKey
SelectableChannel
가 Selector
에 등록되어 있는 것을 나타내는 토큰입니다.
채널을 셀렉터에 등록할 때마다, 선택 키가 작성됩니다. 이 키는, 선택 키에는, 정수치로 나타내진 2 개의 조작 세트가 있습니다. 조작 세트의 비트는, 키의 채널에 의해 지원되고 있는 선택 가능한 조작의 카테고리를 나타냅니다.
「대상 세트」는, 다음번 셀렉터의 선택 메소드를 호출했을 때에 실행 가능성을 테스트하는 조작 카테고리를 결정합니다. 대상 세트는, 키의 작성시에 초기화되어 지정된 값이 됩니다. 이 값은, 나중에 「실행 가능 세트」는, 키의 셀렉터에 의해 검출된 실행 가능한 채널의 조작 카테고리를 식별합니다. 실행 가능 세트는, 키의 작성시에 초기화되어 제로가 됩니다. 이 값은, 그 후의 선택 조작중에 셀렉터로 갱신할 수 있습니다만, 직접 갱신할 수 없습니다. 선택 키의 실행 가능 세트는, 그 채널이 있는 조작 카테고리를 실행할 수 있는 상태가 되어 있는 것을 나타냅니다. 다만, 이것은 단순한 힌트이며, thread가 블록 되는 일 없이 그 카테고리의 조작을 실행할 수 있는 것을 보증하는 것은 아닙니다. 일반적으로, 실행 가능 세트는, 선택 조작 완료 직후는 정확합니다만, 외부 이벤트나 대응하는 채널상에서 불려 가는 입출력 조작에 의해 부정확하게 될 가능성이 있습니다.
이 클래스는 기존의 모든 조작 세트 비트를 정의합니다만, 어느 비트가 지정된 채널에 의해 지원될까는, 정확하게는 채널의 종류에 따라서 다릅니다. 많은 경우, 어플리케이션 고유의 데이터를 선택 키에 관련지을 필요가 있습니다. 예를 들어, 어느 프로토콜을 구현하기 위해서, 게다가 위프로토콜 상태를 나타내, 실행 가능 통지를 처리하는 객체가 이것에 해당합니다. 이 때문에, 선택 키는, 단일의 임의 객체를 키에 「첨부」하는 기능을 지원하고 있습니다. 선택 키는 복수의 병행 thread로 안전하게 사용할 수 있습니다. 일반적으로, 대상 세트의 읽기 및 기입해 조작은, 셀렉터의 특정의 조작에 동기 합니다. 이 동기 처리의 방법은 구현에 따라서 다릅니다. 네이티브 구현에서는, 선택 조작의 실행중, 대상 세트의 읽기나 기입은 무기한으로 블록 됩니다. 고성능 구현에서는, 대상 세트의 읽기나 기입은, 블록 되었다고 해도 그저 단시간입니다. 어느 경우도, 선택 조작에는 항상, 이 조작을 개시한 시점에서 최신의 대상 세트의 값이 사용됩니다.
cancel
메소드의 호출이나, 채널 또는 셀렉터의 클로즈에 의해 삭제될 때까지 유효합니다. 삭제된 키가 즉시 셀렉터로부터 삭제되는 것은 아닙니다. 삭제된 키는, 다음의 선택 조작이 실행될 때까지, 셀렉터가삭제된 키 세트내에 보관 유지됩니다. 키의 유효성은,isValid
메소드를 호출하는 것으로 확인할 수 있습니다.
interestOps(int)
메소드를 사용해 변경할 수 있습니다. SelectableChannel
의 개개의 서브 클래스는,validOps()
메소드를 정의해, 이 메소드는 채널에 의해 지원되는 조작만을 나타내는 세트를 돌려줍니다. 키의 채널에 의해 지원되어 있지 않은 조작 세트 비트를 설정 또는 테스트하려고 하면(자), 적절한 실행시 예외가 throw 됩니다.
attach
메소드로 객체를 첨부한 뒤,attachment
메소드로 이 객체를 취득할 수 있습니다.
SelectableChannel
,
Selector
필드의 개요 | |
---|---|
static int |
OP_ACCEPT
소켓 접수 조작용의 조작 세트 비트입니다. |
static int |
OP_CONNECT
소켓 접속 조작용의 조작 세트 비트입니다. |
static int |
OP_READ
read 조작용의 조작 세트 비트입니다. |
static int |
OP_WRITE
기입 조작용의 조작 세트 비트입니다. |
생성자 의 개요 | |
---|---|
protected |
SelectionKey ()
이 클래스의 인스턴스를 구축합니다. |
메소드의 개요 | |
---|---|
Object |
attach (Object ob)
이 키로 지정된 객체를 첨부합니다. |
Object |
attachment ()
현재의 첨부 객체를 가져옵니다. |
abstract void |
cancel ()
이 키의 셀렉터에의 등록을 해제하는 것을 요구합니다. |
abstract SelectableChannel |
channel ()
작성된 이 키의 채널을 돌려줍니다. |
abstract int |
interestOps ()
이 키의 대상 세트를 가져옵니다. |
abstract SelectionKey |
interestOps (int ops)
이 키의 대상 세트가 지정된 값으로 합니다. |
boolean |
isAcceptable ()
이 키의 채널이 새로운 소켓 접속을 받아들일 수 있는 상태가 되어 있는지 어떤지를 테스트합니다. |
boolean |
isConnectable ()
이 키의 채널이 소켓 접속 조작을 올바르게 완료했는지 실패했는지를 테스트합니다. |
boolean |
isReadable ()
이 키의 채널이 읽어들여 가능한 상태가 되어 있는지 어떤지를 테스트합니다. |
abstract boolean |
isValid ()
이 키가 유효한지 어떤지를 판단합니다. |
boolean |
isWritable ()
이 키의 채널이 기입해 가능한 상태가 되어 있는지 어떤지를 테스트합니다. |
abstract int |
readyOps ()
이 키의 실행 가능 조작 세트를 가져옵니다. |
abstract Selector |
selector ()
작성된 이 키의 셀렉터를 돌려줍니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
필드의 상세 |
---|
public static final int OP_READ
선택 조작을 시작할 때, 선택 키의 대상 세트에 OP_READ 가 포함되어 있다고 합니다. 대응하는 채널이 읽어들여 가능한 상태가 되어 있는지, 스트림의 마지막에 이르고 있는지, 다음의 read가 생기도록(듯이) 원격 종료 되고 있는지, 에러에 의해 일시정지하고 있는 것을 검출하면(자), 셀렉터는, 키의 실행 가능 조작 세트에 OP_READ 를 추가해, 이 키를 선택 키 세트에 추가합니다.
public static final int OP_WRITE
선택 조작을 시작할 때, 선택 키의 대상 세트에 OP_WRITE 가 포함되어 있다고 합니다. 대응하는 채널이 기입해 가능한 상태가 되어 있는지, 다음의 기입을 할 수 있도록(듯이) 원격 종료 되고 있는지, 에러에 의해 일시정지하고 있는 것을 검출하면(자), 셀렉터는, 키의 실행 가능 조작 세트에 OP_WRITE 를 추가해, 이 키를 선택 키 세트에 추가합니다.
public static final int OP_CONNECT
선택 조작을 시작할 때, 선택 키의 대상 세트에 OP_CONNECT 가 포함되어 있다고 합니다. 대응하는 소켓 채널이 접속 순서를 완료할 수 있는 상태가 되어 있는지, 에러에 의해 일시정지하고 있는 것을 검출하면(자), 셀렉터는, 키의 실행 가능 조작 세트에 OP_CONNECT 를 추가해, 이 키를 선택 키 세트에 추가합니다.
public static final int OP_ACCEPT
선택 조작을 시작할 때, 선택 키의 대상 세트에 OP_ACCEPT 가 포함되어 있다고 합니다. 대응하는 서버 소켓 채널이 다른 접속을 받아들일 수 있는 상태가 되어 있는지, 에러에 의해 일시정지하고 있는 것을 검출하면(자), 셀렉터는, 키의 실행 가능 조작 세트에 OP_ACCEPT 를 추가해, 이 키를 선택 키 세트에 추가합니다.
생성자 의 상세 |
---|
protected SelectionKey()
메소드의 상세 |
---|
public abstract SelectableChannel channel()
public abstract Selector selector()
public abstract boolean isValid()
키는, 작성된 시점으로부터, 삭제되는지, 채널 또는 셀렉터가 클로즈 할 때까지 유효합니다.
public abstract void cancel()
이 키가 벌써 삭제되고 있는 경우는, 이 메소드를 호출해도 아무것도 일어나지 않습니다. 일단 삭제된 키는 이후 영구히 무효입니다.
이 메소드는 언제라도 호출할 수가 있습니다. 셀렉터가 삭제된 키 세트와의 동기가 취해지기 (위해)때문에, 같은 셀렉터를 사용하는 취소 조작 또는 선택 조작중에 병행해 불려 가면(자), 일시적으로 블록 됩니다.
public abstract int interestOps()
반환되는 세트에는, 이 키의 채널에 있어 유효한 조작 비트만이 포함됩니다.
이 메소드는 언제라도 호출할 수가 있습니다. 블록 될지 어떨지, 된다고 하면(자) 어느 정도의 기간이 될까는, 구현에 따라서 다릅니다.
CancelledKeyException
- 이 키가 삭제되었을 경우public abstract SelectionKey interestOps(int ops)
이 메소드는 언제라도 호출할 수가 있습니다. 블록 될지 어떨지, 된다고 하면(자) 어느 정도의 기간이 될까는, 구현에 따라서 다릅니다.
ops
- 새로운 대상 세트
IllegalArgumentException
- 세트내의 비트가 이 키의 채널로 지원되는 조작에 대응하고 있지 않는 경우
(set & ~(channel(). validOps()) ! = 0)
CancelledKeyException
- 이 키가 삭제되었을 경우public abstract int readyOps()
반환되는 세트에는, 이 키의 채널에 있어 유효한 조작 비트만이 포함됩니다.
CancelledKeyException
- 이 키가 삭제되었을 경우public final boolean isReadable()
이 메소드를 k.isReadable() 의 형식에서 호출했을 경우, 다음의 식과 같은 결과를 얻을 수 있습니다.
k.readyOps() & OP_READ ! = 0
이 키의 채널이 읽어들여 조작을 지원하지 않는 경우, 이 메소드는 항상 false 를 돌려줍니다.
CancelledKeyException
- 이 키가 삭제되었을 경우public final boolean isWritable()
이 메소드를 k.isWritable() 의 형식에서 호출했을 경우, 다음의 식과 같은 결과를 얻을 수 있습니다.
k.readyOps() & OP_WRITE ! = 0
이 키의 채널이 기입해 조작을 지원하지 않는 경우, 이 메소드는 항상 false 를 돌려줍니다.
CancelledKeyException
- 이 키가 삭제되었을 경우public final boolean isConnectable()
이 메소드를 k.isConnectable() 의 형식에서 호출했을 경우, 다음의 식과 같은 결과를 얻을 수 있습니다.
k.readyOps() & OP_CONNECT ! = 0
이 키의 채널이 소켓 접속 조작을 지원하지 않는 경우, 이 메소드는 항상 false 를 돌려줍니다.
CancelledKeyException
- 이 키가 삭제되었을 경우public final boolean isAcceptable()
이 메소드를 k.isAcceptable() 의 형식에서 호출했을 경우, 다음의 식과 같은 결과를 얻을 수 있습니다.
k.readyOps() & OP_ACCEPT ! = 0
이 키의 채널이 소켓 접수 조작을 지원하지 않는 경우, 이 메소드는 항상 false 를 돌려줍니다.
CancelledKeyException
- 이 키가 삭제되었을 경우public final Object attach(Object ob)
첨부된 객체는, 나중에 attachment
메소드를 사용해 취득할 수 있습니다. 동시에 복수의 객체를 첨부할 수 없습니다. 이 메소드를 호출하면(자), 그 이전에 첨부된 객체는 파기됩니다. null 를 첨부하면(자), 현재의 첨부 객체가 파기됩니다.
ob
- 첨부되는 객체. null 의 경우도 있다
public final Object attachment()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.