public abstract class CardTerminals extends Object
このクラスは、マルチスレッドに対して安全であり、複数のスレッドで並行して使用できます。ただし、このオブジェクトは、この端末のそれぞれのカードの有無の状態を追跡します。waitForChange() の独立した呼び出しが必要な場合は、複数のオブジェクトを使用する必要があります。
アプリケーションでは、TerminalFactory.terminals() を呼び出すことで、このクラスのインスタンスを取得できます。
TerminalFactory, CardTerminal| 修飾子と型 | クラスと説明 |
|---|---|
static class |
CardTerminals.State
CardTerminal の属性の列挙です。
|
| 修飾子 | コンストラクタと説明 |
|---|---|
protected |
CardTerminals()
新しい CardTerminals オブジェクトを構築します。
|
| 修飾子と型 | メソッドと説明 |
|---|---|
CardTerminal |
getTerminal(String name)
指定された名前を持つ端末を返します。そのような端末が存在しない場合は null を返します。
|
List<CardTerminal> |
list()
使用可能なすべての端末の変更不可能なリストを返します。
|
abstract List<CardTerminal> |
list(CardTerminals.State state)
指定された状態と一致するすべての端末の変更不可能なリストを返します。
|
void |
waitForChange()
このオブジェクトの端末のいずれかで、カードの挿入または取り出しを待機します。
|
abstract boolean |
waitForChange(long timeout)
このオブジェクトの端末のいずれかでカードの挿入または取り出し、あるいはタイムアウトの期限切れが発生するのを待機します。
|
protected CardTerminals()
このコンストラクタはサブクラスのみから呼び出されます。アプリケーションでは、TerminalFactory.terminals() を呼び出して CardTerminals オブジェクトを取得します。
public List<CardTerminal> list() throws CardException
CardException - カード操作が失敗した場合public abstract List<CardTerminal> list(CardTerminals.State state) throws CardException
状態が State.ALL の場合、このメソッドは、このオブジェクトでカプセル化されたすべての CardTerminals を返します。状態が State.CARD_PRESENT または State.CARD_ABSENT の場合、それぞれ現在カードが存在するすべての CardTerminals、または現在カードが存在しないすべての CardTerminals を返します。
状態が State.CARD_INSERTION または State.CARD_REMOVAL の場合、それぞれ挿入または取り出しが waitForChange() の最後の呼び出し中に検出されたすべての CardTerminals を返します。このオブジェクトで waitForChange() が呼び出されていなかった場合、CARD_INSERTION は CARD_PRESENT と同じで、CARD_REMOVAL は CARD_ABSENT と同じです。CARD_INSERTION の使用例については、waitForChange() を参照してください。
state - 状態NullPointerException - attr が null である場合CardException - カード操作が失敗した場合public CardTerminal getTerminal(String name)
NullPointerException - name が null である場合public void waitForChange()
throws CardException
これは、waitForChange(0) の呼び出しと同等です。
IllegalStateException - この CardTerminals オブジェクトに端末が含まれない場合CardException - カード操作が失敗した場合public abstract boolean waitForChange(long timeout)
throws CardException
このメソッドは、このオブジェクトの各 CardTerminal を調べます。waitForChange() の前回の呼び出し以降に CardTerminal でカードの挿入または取り出しが行われた場合、このメソッドはすぐに復帰します。そうでない場合、またはこれがこのオブジェクトでの最初の waitForChange() の呼び出しである場合は、CardTerminal でカードの挿入または取り出しが行われるまでブロックします。
timeout が 0 より大きい場合は、状態に変化がなくても、このメソッドは timeout ミリ秒後に復帰します。その場合、このメソッドは false を返します。そうでない場合、true を返します。
このメソッドは、list(State.CARD_INSERTION) と組み合わせてループ内でよく使用されます。次に例を示します。
TerminalFactory factory = ...;
CardTerminals terminals = factory.terminals();
while (true) {
for (CardTerminal terminal : terminals.list(CARD_INSERTION)) {
// examine Card in terminal, return if it matches
}
terminals.waitForChange();
}timeout - 正の場合は、最大 timeout ミリ秒間ブロックする。ゼロの場合は、無期限にブロックする。負にすることはできないIllegalStateException - この CardTerminals オブジェクトに端末が含まれない場合IllegalArgumentException - timeout が負の値の場合CardException - カード操作が失敗した場合
Copyright © 2005, 2013, Oracle and/or its affiliates. All rights reserved.