Spec-Zone.ru › OpenJDK 17

Интерфейс 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) в порядке их добавления в запрос. Только события, которые удовлетворяют всем фильтрам, помещаются в очередь событий.

Набор доступных фильтров зависит от запроса на событие, некоторые примеры фильтров:

  • Фильтры потоков позволяют управлять потоком, для которого генерируются события.
  • Фильтры классов позволяют управлять классом, в котором происходит событие.
  • Фильтры экземпляров позволяют управлять экземпляром, в котором происходит событие.
  • Фильтры счётчиков позволяют управлять количеством раз, когда событие регистрируется.
Фильтры могут значительно улучшить производительность отладчика, уменьшив объем событий, передаваемых от целевой виртуальной машины (VM) к отладчику VM.

Любой метод в EventRequest который принимает EventRequest в качестве параметра, может выбросить VMDisconnectedException, если целевая VM отключена и VMDisconnectEvent был или доступен для чтения из EventQueue.

Любой метод в EventRequest который принимает EventRequest в качестве параметра, может выбросить VMOutOfMemoryException, если целевая VM испытывает недостаток памяти.

C момента:
1.3
См. также:
  • BreakpointEvent
  • EventQueue
  • EventRequestManager

Краткое описание полей

Модификатор и тип Поле Описание
static final int SUSPEND_ALL
Приостановить все потоки при наступлении события
static final int SUSPEND_EVENT_THREAD
Приостановить только поток, который сгенерировал событие, при наступлении события
static final int SUSPEND_NONE
Не приостанавливать ни одного потока при наступлении события

Краткое описание методов

Модификатор и тип Метод Описание
void addCountFilter(int count)
Ограничить запрашиваемое событие, чтобы оно сообщалось не более одного раза после заданного числа событий.
void disable()
То же, что и setEnabled(false).
void enable()
То же, что и setEnabled(true).
Object getProperty(Object key)
Возвращает значение свойства с указанным ключом.
boolean isEnabled()
Определяет, включен ли данный запрос на событие в данный момент.
void putProperty(Object key, Object value)
Добавляет произвольное свойство ключ/значение к данному запросу.
void setEnabled(boolean val)
Включает или отключает запрос на это событие.
void setSuspendPolicy(int policy)
Определяет потоки, которые следует приостановить, когда запрашиваемое событие возникает в целевой 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)
Добавляет произвольное ключевое/значение "свойство" к этому запросу. Свойство может использоваться клиентом JDI для связывания прикладной информации с запросом; эти свойства, установленные клиентом, не используются внутренне JDI.

Методы get/putProperty обеспечивают доступ к небольшой карте на экземпляр. Это не следует путать с Properties.

Если значение равно null, этот метод удалит свойство.

См. также:
  • getProperty(java.lang.Object)

getProperty

Object getProperty(Object key)
Возвращает значение свойства со значением указанного ключа. Только свойства, добавленные с помощью putProperty(java.lang.Object, java.lang.Object), вернут значение, отличное от null.
Возвращает:
значение этого свойства или null
См. также:
  • putProperty(java.lang.Object, java.lang.Object)

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API