Класс CardTerminals
public abstract class CardTerminals extends Object
Этот класс потокобезопасен и может использоваться несколькими потоками одновременно. Однако этот объект отслеживает состояние наличия карты для каждого из своих терминалов. Несколько объектов должны использоваться, если требуются независимые вызовы waitForChange().
Приложения могут получить экземпляры этого класса, вызвав TerminalFactory.terminals().
- Since:
- 1.6
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
CardTerminals.State |
Перечисление атрибутов CardTerminal. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новый объект CardTerminals. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
CardTerminal |
getTerminal |
Возвращает терминал с указанным именем или null, если такого терминала нет. |
List |
list() |
Возвращает неизменяемый список всех доступных терминалов. |
abstract List |
list |
Возвращает неизменяемый список всех терминалов, соответствующих указанному состоянию. |
void |
waitForChange() |
Ожидает вставки или извлечения карты в любом из терминалов этого объекта. |
abstract boolean |
waitForChange |
Ожидает вставки или извлечения карты в любом из терминалов этого объекта или до истечения срока ожидания. |
Подробное описание конструкторов
CardTerminals
protected 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, где карта присутствует или отсутствует в данный момент соответственно.
Если состояние равно State.CARD_INSERTION или State.CARD_REMOVAL, он возвращает все CardTerminals, для которых была обнаружена вставка (или удаление соответственно) во время последнего вызова waitForChange(). Если waitForChange() не был вызван для этого объекта, CARD_INSERTION эквивалентно CARD_PRESENT и CARD_REMOVAL эквивалентно CARD_ABSENT. Пример использования CARD_INSERTION, см. waitForChange().
- Параметры:
-
state- состояние - Возвращает:
- неизменяемый список всех терминалов, соответствующих указанному состоянию.
- Исключение:
-
NullPointerException- если состояние равно null -
CardException- если операция с картой завершилась неудачно
getTerminal
public CardTerminal getTerminal(String name)
- Параметры:
-
name- имя терминала - Возвращает:
- терминал с указанным именем или null, если такого терминала нет.
- Исключение:
-
NullPointerException- если имя равно null
waitForChange
public void waitForChange() throws CardException
Этот вызов эквивалентен вызову waitForChange(0).
- Исключение:
-
IllegalStateException- если этотCardTerminalsобъект не содержит ни одного терминала -
CardException- если операция с картой завершилась неудачно
waitForChange
public abstract boolean waitForChange(long timeout) throws CardException
Этот метод проверяет каждый CardTerminal этого объекта. Если карта была вставлена или извлечена из CardTerminal с момента предыдущего вызова waitForChange(), он возвращается немедленно. В противном случае, или если это первый вызов 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- если операция с картой завершилась неудачно
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.smartcardio/javax/smartcardio/CardTerminals.html