Интерфейс EventRequest
- Все суперинтерфейсы:
Mirror
- Все известные подинтерфейсы:
-
AccessWatchpointRequest,BreakpointRequest,ClassPrepareRequest,ClassUnloadRequest,ExceptionRequest,MethodEntryRequest,MethodExitRequest,ModificationWatchpointRequest,MonitorContendedEnteredRequest,MonitorContendedEnterRequest,MonitorWaitedRequest,MonitorWaitRequest,StepRequest,ThreadDeathRequest,ThreadStartRequest,VMDeathRequest,WatchpointRequest
public interface EventRequest extends Mirror
BreakpointRequest и ExceptionRequest. Когда происходит событие, для которого присутствует включенный запрос, будет помещен EventSet в EventQueue. Совокупность существующих запросов на события управляется EventRequestManager. Количество событий, сгенерированных для запроса на событие, может быть контролируемо с помощью фильтров. Фильтры предоставляют дополнительные ограничения, которым должно удовлетворять событие, прежде чем оно будет помещено в очередь событий. Несколько фильтров могут быть использованы, выполняя несколько вызовов методов добавления фильтров, таких как ExceptionRequest.addClassFilter(java.lang.String classPattern). Фильтры добавляются к событию по одному, только когда событие отключено. Несколько фильтров применяются с логикой И (CUT-OFF AND) в порядке их добавления в запрос. Только события, которые удовлетворяют всем фильтрам, помещаются в очередь событий.
Набор доступных фильтров зависит от запроса на событие, некоторые примеры фильтров:
- Фильтры потоков позволяют управлять потоком, для которого генерируются события.
- Фильтры классов позволяют управлять классом, в котором происходит событие.
- Фильтры экземпляров позволяют управлять экземпляром, в котором происходит событие.
- Фильтры счётчиков позволяют управлять количеством раз, когда событие регистрируется.
Любой метод в EventRequest который принимает EventRequest в качестве параметра, может выбросить VMDisconnectedException, если целевая VM отключена и VMDisconnectEvent был или доступен для чтения из EventQueue.
Любой метод в EventRequest который принимает EventRequest в качестве параметра, может выбросить VMOutOfMemoryException, если целевая VM испытывает недостаток памяти.
- C момента:
- 1.3
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
SUSPEND_ALL |
Приостановить все потоки при наступлении события |
static final int |
SUSPEND_EVENT_THREAD |
Приостановить только поток, который сгенерировал событие, при наступлении события |
static final int |
SUSPEND_NONE |
Не приостанавливать ни одного потока при наступлении события |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addCountFilter |
Ограничить запрашиваемое событие, чтобы оно сообщалось не более одного раза после заданного числа событий. |
void |
disable() |
То же, что и setEnabled(false). |
void |
enable() |
То же, что и setEnabled(true). |
Object |
getProperty |
Возвращает значение свойства с указанным ключом. |
boolean |
isEnabled() |
Определяет, включен ли данный запрос на событие в данный момент. |
void |
putProperty |
Добавляет произвольное свойство ключ/значение к данному запросу. |
void |
setEnabled |
Включает или отключает запрос на это событие. |
void |
setSuspendPolicy |
Определяет потоки, которые следует приостановить, когда запрашиваемое событие возникает в целевой VM. |
int |
suspendPolicy() |
Возвращает значение, которое описывает потоки, которые следует приостановить, когда запрашиваемое событие возникает в целевой VM. |
Методы, объявленные в интерфейсе com.sun.jdi.Mirror
toString, virtualMachine
Подробное описание полей
SUSPEND_NONE
static final int SUSPEND_NONE
- См. также:
SUSPEND_EVENT_THREAD
static final int SUSPEND_EVENT_THREAD
- См. также:
SUSPEND_ALL
static final int SUSPEND_ALL
- См. также:
Подробное описание методов
isEnabled
boolean isEnabled()
- Возвращает:
-
trueесли активен;falseв противном случае.
setEnabled
void setEnabled(boolean val)
EventRequestManager.breakpointRequests().- Параметры:
-
val-trueесли запрос на событие должен быть включен;falseв противном случае. - Исключения:
-
InvalidRequestStateException- если этот запрос был удален. -
IllegalThreadStateException- если это запрос StepRequest,valявляетсяtrue, и поток, указанный в запросе, умер или еще не запущен.
enable
void enable()
setEnabled(true).- Исключения:
-
InvalidRequestStateException- если этот запрос был удален. -
IllegalThreadStateException- если это запрос StepRequest, и поток, указанный в запросе, умер или еще не запущен.
disable
void disable()
setEnabled(false).- Исключения:
-
InvalidRequestStateException- если этот запрос был удален.
addCountFilter
void addCountFilter(int count)
count - 1 раз, когда достигается данный фильтр. Чтобы запросить однократное событие, вызовите этот метод со значением счетчика 1. Когда счетчик достигает 0, применяются любые последующие фильтры в этом запросе. Если ни один из этих фильтров не приводит к подавлению события, событие сообщается. В противном случае событие не сообщается. В любом случае последующие события никогда не сообщаются для этого запроса.
- Параметры:
-
count- количество событий до генерации события. - Исключения:
-
InvalidRequestStateException- если этот запрос в настоящее время активен или был удален. Фильтры могут быть добавлены только к отключенным запросам. -
IllegalArgumentException- еслиcountменьше единицы.
setSuspendPolicy
void setSuspendPolicy(int policy)
SUSPEND_ALL, чтобы приостановить все потоки в целевой виртуальной машине (по умолчанию). Используйте SUSPEND_EVENT_THREAD, чтобы приостановить только поток, который сгенерировал событие. Используйте SUSPEND_NONE, чтобы не приостанавливать ни один поток. Приостановки потоков через события имеют ту же функциональность, что и явно запрошенные приостановки. Смотрите ThreadReference.suspend() и VirtualMachine.suspend() для получения подробной информации.
- Параметры:
-
policy- выбранная политика приостановки. - Исключения:
-
InvalidRequestStateException- если этот запрос в настоящее время активен или был удален. Политика приостановки может быть установлена только в отключенных запросах. -
IllegalArgumentException- если аргумент политики содержит недопустимое значение.
suspendPolicy
int suspendPolicy()
SUSPEND_ALL, SUSPEND_EVENT_THREAD или SUSPEND_NONE.- Возвращает:
- текущий режим приостановки для этого запроса
putProperty
void putProperty(Object key, Object value)
Методы get/putProperty обеспечивают доступ к небольшой карте на экземпляр. Это не следует путать с Properties.
Если значение равно null, этот метод удалит свойство.
- См. также:
getProperty
Object getProperty(Object key)
putProperty(java.lang.Object, java.lang.Object), вернут значение, отличное от null.- Возвращает:
- значение этого свойства или null
- См. также:
© 1993, 2021, 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/17/docs/api/jdk.jdi/com/sun/jdi/request/EventRequest.html