このクラスは、マルチ・スレッドに対して安全であり、複数のスレッドで並行して使用できます。 ただし、このオブジェクトは、この端末のそれぞれのカードの有無の状態を追跡します。 waitForChange()の独立した呼出しが必要な場合は、複数のオブジェクトを使用する必要があります。
アプリケーションでは、TerminalFactory.terminals()を呼び出すことで、このクラスのインスタンスを取得できます。
- 導入されたバージョン:
- 1.6
- 関連項目:
TerminalFactory
,CardTerminal
-
ネストされたクラスのサマリー
ネストされたクラス -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明getTerminal(String name)
指定された名前を持つ端末を返します。そのような端末が存在しない場合はnullを返します。list()
使用可能なすべての端末の変更不可能なリストを返します。abstract List<CardTerminal>
list(CardTerminals.State state)
指定された状態と一致するすべての端末の変更不可能なリストを返します。void
このオブジェクトの端末のいずれかで、カードの挿入または取出しを待機します。abstract boolean
waitForChange(long timeout)
このオブジェクトの端末のいずれかでカードの挿入または取出し、あるいはタイム・アウトの期限切れが発生するのを待機します。
-
コンストラクタの詳細
-
CardTerminals
protected CardTerminals()新しいCardTerminalsオブジェクトを構築します。このコンストラクタはサブクラスのみから呼び出されます。 アプリケーションでは、TerminalFactory.terminals()を呼び出してCardTerminalsオブジェクトを取得します。
-
-
メソッドの詳細
-
list
public List<CardTerminal> list() throws CardException使用可能なすべての端末の変更不可能なリストを返します。- 戻り値:
- 使用可能なすべての端末の変更不可能なリスト
- 例外:
CardException
- カード操作が失敗した場合
-
list
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
- 状態がnullの場合CardException
- カード操作が失敗した場合
-
getTerminal
public CardTerminal getTerminal(String name)指定された名前を持つ端末を返します。そのような端末が存在しない場合はnullを返します。- パラメータ:
name
- 端末名- 戻り値:
- 指定された名前を持つ端末。そのような端末が存在しない場合はnull
- 例外:
NullPointerException
- nameがnullである場合
-
waitForChange
public void waitForChange() throws CardExceptionこのオブジェクトの端末のいずれかで、カードの挿入または取出しを待機します。これは、waitForChange(0)の呼び出しと同等です。
- 例外:
IllegalStateException
- このCardTerminals
オブジェクトに端末が含まれない場合CardException
- カード操作が失敗した場合
-
waitForChange
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
ミリ秒間ブロックする。ゼロの場合は、無期限にブロックする。負にすることはできない- 戻り値:
- タイム・アウトの期限が切れたためにメソッドが復帰した場合はfalse、そうでない場合はtrue
- 例外:
IllegalStateException
- このCardTerminals
オブジェクトに端末が含まれない場合IllegalArgumentException
- timeoutが負の値の場合CardException
- カード操作が失敗した場合
-