Класс CardTerminals
- java.lang.Object
-
- javax.smartcardio.CardTerminals
public abstract class CardTerminals extends Object
Набор терминалов, поддерживаемых TerminalFactory. Этот класс позволяет приложениям перечислять доступные CardTerminals, получить конкретный CardTerminal или дождаться вставки или извлечения карт.
Этот класс безопасен в многопоточной среде и может использоваться несколькими потоками одновременно. Однако этот объект отслеживает состояние наличия карты для каждого из своих терминалов. Следует использовать несколько объектов, если требуется независимые вызовы waitForChange().
Приложения могут получить экземпляры этого класса, вызвав TerminalFactory.terminals().
- Since:
- 1.6
- See Also:
-
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) |
Ожидает вставки или извлечения карты в любом из терминалов этого объекта или до истечения времени ожидания. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Конструкторы
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 равен State.ALL, этот метод возвращает все CardTerminals, заключённые в этом объекте. Если state равен State.CARD_PRESENT или State.CARD_ABSENT, он возвращает все CardTerminals, где карта присутствует или отсутствует соответственно.
Если state равен State.CARD_INSERTION или State.CARD_REMOVAL, он возвращает все CardTerminals, для которых была обнаружена вставка (или удаление, соответственно) во время последнего вызова waitForChange(). Если waitForChange() не был вызван на этом объекте, CARD_INSERTION эквивалентен CARD_PRESENT, а CARD_REMOVAL эквивалентен CARD_ABSENT. Пример использования CARD_INSERTION, см. waitForChange().
- Параметры:
-
state- состояние - Возвращает:
- неизменяемый список всех терминалов, соответствующих указанному состоянию.
- Исключения:
-
NullPointerException- если state равен null -
CardException- если операция с картой завершилась неудачно
getTerminal
public CardTerminal getTerminal(String name)
Возвращает терминал с указанным именем или null, если такого терминала не существует.
- Параметры:
-
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, 2020, 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/11/docs/api/java.smartcardio/javax/smartcardio/CardTerminals.html