Spec-Zone.ru › OpenJDK 21

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

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

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

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

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

С:
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)
Определяет потоки, которые следует приостановить при возникновении запрошенного события в целевой виртуальной машине.
int suspendPolicy()
Возвращает значение, описывающее потоки, которые следует приостановить при возникновении запрошенного события в целевой виртуальной машине.

Методы, объявленные в интерфейсе 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
См. также:
  • putProperty(java.lang.Object, java.lang.Object)

© 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/jdk.jdi/com/sun/jdi/request/EventRequest.html

Spec-Zone.ru

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