A classe EvPrepare

(PECL ev >= 0.2.0)

Introdução

Os observadores EvPrepare e EvCheck são geralmente usados em pares. Os observadores EvPrepare são invocados antes do bloqueio do processo, EvCheck depois.

Não é permitido chamar EvLoop::run() ou métodos ou funções similares que entrem no loop de eventos atual dos observadores EvPrepare ou EvCheck. Outros loops além do atual são adequados, entretanto. A lógica por trás disso é que não é necessário verificar a recursão nesses observadores, ou seja, a sequência será sempre: EvPrepare -> bloqueando -> EvCheck, portanto, tendo um observador de cada tipo, eles sempre serão chamados em pares, colocando entre colchetes a chamada de bloqueio.

O objetivo principal é integrar outros mecanismos de eventos no libev e seu uso está um tanto avançado. Eles poderiam ser usados, por exemplo, para rastrear alterações de variáveis, implementar observadores personalizados, integrar net-snmp ou uma biblioteca de corrotinas e muito mais. Ocasionalmente, eles também são úteis para armazenar alguns dados em cache e deseja liberá-los antes de bloqueá-los.

É recomendado dar aos observadores EvCheck a prioridade mais alta ( Ev::MAXPRI), para garantir que eles estejam sendo executados antes de qualquer outro observador após o poll (isso não importa para observadores EvPrepare).

Além disso, os observadores do EvCheck não devem ativar/alimentar eventos. Embora libev suporte totalmente isso, eles podem ser executados antes que outros observadores EvCheck façam seu trabalho.

Resumo da classe

class EvPrepare extends EvWatcher {
/* Propriedades herdadas */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Métodos */
public __construct( string $callback , string $data = ?, string $priority = ?)
final public static createStopped( callable $callback , mixed $data = null , int $priority = 0 ): EvPrepare
/* Métodos herdados */
public EvWatcher::feed( int $revents ): void
public EvWatcher::invoke( int $revents ): void
public EvWatcher::keepalive( bool $value = ?): bool
public EvWatcher::setCallback( callable $callback ): void
}

Table of Contents