EvTable of Contents
The Ev classIntroductionEv is a singleton providing access to the default loop and to some common operations. Class synopsis
Ev
final
class Ev
{
/* Constants */
const
integer
Ev::FLAG_AUTO
= 0
;
const
integer
Ev::FLAG_NOENV
= 16777216
;
const
integer
Ev::FLAG_FORKCHECK
= 33554432
;
const
integer
Ev::FLAG_NOINOTIFY
= 1048576
;
const
integer
Ev::FLAG_SIGNALFD
= 2097152
;
const
integer
Ev::FLAG_NOSIGMASK
= 4194304
;
const
integer
Ev::RUN_NOWAIT
= 1
;
const
integer
Ev::RUN_ONCE
= 2
;
const
integer
Ev::BREAK_CANCEL
= 0
;
const
integer
Ev::BREAK_ONE
= 1
;
const
integer
Ev::BREAK_ALL
= 2
;
const
integer
Ev::MINPRI
= -2
;
const
integer
Ev::MAXPRI
= 2
;
const
integer
Ev::READ
= 1
;
const
integer
Ev::WRITE
= 2
;
const
integer
Ev::TIMER
= 256
;
const
integer
Ev::PERIODIC
= 512
;
const
integer
Ev::SIGNAL
= 1024
;
const
integer
Ev::CHILD
= 2048
;
const
integer
Ev::STAT
= 4096
;
const
integer
Ev::IDLE
= 8192
;
const
integer
Ev::PREPARE
= 16384
;
const
integer
Ev::CHECK
= 32768
;
const
integer
Ev::EMBED
= 65536
;
const
integer
Ev::CUSTOM
= 16777216
;
const
integer
Ev::ERROR
= 2147483648
;
const
integer
Ev::BACKEND_SELECT
= 1
;
const
integer
Ev::BACKEND_POLL
= 2
;
const
integer
Ev::BACKEND_EPOLL
= 4
;
const
integer
Ev::BACKEND_KQUEUE
= 8
;
const
integer
Ev::BACKEND_DEVPOLL
= 16
;
const
integer
Ev::BACKEND_PORT
= 32
;
const
integer
Ev::BACKEND_ALL
= 63
;
const
integer
Ev::BACKEND_MASK
= 65535
;
/* Methods */
final
public
static
int
backend
( void
)
final
public
static
int
depth
( void
)
final
public
static
void
embeddableBackends
( void
)
final
public
static
void
feedSignal
(
int
$signum
)
final
public
static
void
feedSignalEvent
(
int
$signum
)
final
public
static
int
iteration
( void
)
final
public
static
double
now
( void
)
final
public
static
void
nowUpdate
( void
)
final
public
static
void
recommendedBackends
( void
)
final
public
static
void
resume
( void
)
final
public
static
void
run
([
int
$flags
] )
final
public
static
void
sleep
(
double
$seconds
)
final
public
static
void
stop
([
int
$how
] )
final
public
static
void
supportedBackends
( void
)
final
public
static
void
suspend
( void
)
final
public
static
double
time
( void
)
final
public
static
void
verify
( void
)
}Predefined ConstantsFlags passed to create a loop:
Flags passed to Ev::run , or EvLoop::run
Flags passed to Ev::stop , or EvLoop::stop
Watcher priorities:
Bit masks of (received) events:
Backend flags:
The EvCheck classIntroductionEvPrepare and EvCheck watchers are usually used in pairs. EvPrepare watchers get invoked before the process blocks, EvCheck afterwards. It is not allowed to call EvLoop::run or similar methods or functions that enter the current event loop from either EvPrepare or EvCheck watchers. Other loops than the current one are fine, however. The rationale behind this is that one don't need to check for recursion in those watchers, i.e. the sequence will always be: EvPrepare -> blocking -> EvCheck , so having a watcher of each kind they will always be called in pairs bracketing the blocking call. The main purpose is to integrate other event mechanisms into libev and their use is somewhat advanced. They could be used, for example, to track variable changes, implement custom watchers, integrate net-snmp or a coroutine library and lots more. They are also occasionally useful to cache some data and want to flush it before blocking.
It is recommended to give
EvCheck
watchers highest(
Also, EvCheck watchers should not activate/feed events. While libev fully supports this, they might get executed before other EvCheck watchers did their job. Class synopsis
EvCheck
class EvCheck
extends
EvWatcher
{
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
__construct
(
callable
$callback
[,
mixed
$data
[,
int
$priority
]] )
final
public
static
object
createStopped
(
string
$callback
[,
string
$data
[,
string
$priority
]] )/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}The EvChild classIntroduction
EvChild
watchers trigger when the process receives a
It is allowed to register EvChild watchers in the default loop only. Class synopsis
EvChild
class EvChild
extends
EvWatcher
{
/* Properties */
public
$pid
;
public
$rpid
;
public
$rstatus
;
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
__construct
(
int
$pid
,
bool
$trace
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
final
public
static
object
createStopped
(
int
$pid
,
bool
$trace
,
callable
$callback
[,
mixed
$data
[,
int
$priority
]] )
public
void
set
(
int
$pid
,
bool
$trace
)/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}Properties
The EvEmbed classIntroductionUsed to embed one event loop into another. Class synopsis
EvEmbed
class EvEmbed
extends
EvWatcher
{
/* Properties */
public
$embed
;
/* Methods */
public
__construct
(
object
$other
[,
callable
$callback
[,
mixed
$data
[,
int
$priority
]]] )
final
public
static
void
createStopped
(
object
$other
[,
callable
$callback
[,
mixed
$data
[,
int
$priority
]]] )
public
void
set
(
object
$other
)
public
void
sweep
( void
)
/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}Properties
The EvFork classIntroductionFork watchers are called when a fork() was detected (usually because whoever signalled libev about it by calling EvLoop::fork ). The invocation is done before the event loop blocks next and before EvCheck watchers are being called, and only in the child after the fork. Note, that if whoever calling EvLoop::fork calls it in the wrong process, the fork handlers will be invoked, too. Class synopsis
EvFork
class EvFork
extends
EvWatcher
{
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
__construct
(
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
final
public
static
object
createStopped
(
string
$callback
[,
string
$data
[,
string
$priority
]] )/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}The EvIdle classIntroductionEvIdle watchers trigger events when no other events of the same or higher priority are pending ( EvPrepare , EvCheck and other EvIdle watchers do not count as receiving events ). Thus, as long as the process is busy handling sockets or timeouts(or even signals) of the same or higher priority it will not be triggered. But when the process is in idle(or only lower-priority watchers are pending), the EvIdle watchers are being called once per event loop iteration - until stopped, that is, or the process receives more events and becomes busy again with higher priority stuff. Apart from keeping the process non-blocking(which is a useful on its own sometimes), EvIdle watchers are a good place to do "pseudo-background processing" , or delay processing stuff to after the event loop has handled all outstanding events. The most noticeable effect is that as long as any idle watchers are active, the process will not block when waiting for new events. Class synopsis
EvIdle
class EvIdle
extends
EvWatcher
{
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
__construct
(
callable
$callback
[,
mixed
$data
[,
int
$priority
]] )
final
public
static
object
createStopped
(
string
$callback
[,
mixed
$data
[,
int
$priority
]] )/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}The EvIo classIntroductionEvIo watchers check whether a file descriptor(or socket, or a stream castable to numeric file descriptor) is readable or writable in each iteration of the event loop, or, more precisely, when reading would not block the process and writing would at least be able to write some data. This behaviour is called level-triggering because events are kept receiving as long as the condition persists. To stop receiving events just stop the watcher.
The number of read and/or write event watchers per
Another thing to watch out for is that it is quite easy to receive false
readiness notifications, i.e. the callback might be called with
If for some reason it is impossible to run the
Always consider using non-blocking mode. Class synopsis
EvIo
class EvIo
extends
EvWatcher
{
/* Properties */
public
$fd
;
public
$events
;
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
__construct
(
mixed
$fd
,
int
$events
,
callable
$callback
[,
mixed
$data
[,
int
$priority
]] )
final
public
static
EvIo
createStopped
(
mixed
$fd
,
int
$events
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
set
(
mixed
$fd
,
int
$events
)/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}Properties
The EvLoop classIntroductionRepresents an event loop that is always distinct from the default loop . Unlike the default loop , it cannot handle EvChild watchers. Having threads we have to create a loop per thread, and use the the default loop in the parent thread. The default event loop is initialized automatically by Ev . It is accessable via methods of the Ev class, or via EvLoop::defaultLoop method. Class synopsis
EvLoop
final
class EvLoop
{
/* Properties */
public
$data
;
public
$backend
;
public
$is_default_loop
;
public
$iteration
;
public
$pending
;
public
$io_interval
;
public
$timeout_interval
;
public
$depth
;
/* Methods */
public
int
backend
( void
)
final
public
EvCheck
check
(
string
$callback
[,
string
$data
[,
string
$priority
]] )
final
public
EvChild
child
(
string
$pid
,
string
$trace
,
string
$callback
[,
string
$data
[,
string
$priority
]] )
public
__construct
([
int
$flags
[,
mixed
$data
= NULL
[,
double
$io_interval
= 0.0
[,
double
$timeout_interval
= 0.0
]]]] )
public
static
EvLoop
defaultLoop
([
int
$flags
= Ev::FLAG_AUTO
[,
mixed
$data
= NULL
[,
double
$io_interval
= 0.
[,
double
$timeout_interval
= 0.
]]]] )
final
public
EvEmbed
embed
(
string
$other
[,
string
$callback
[,
string
$data
[,
string
$priority
]]] )
final
public
EvFork
fork
(
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
final
public
EvIdle
idle
(
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
invokePending
( void
)
final
public
EvIo
io
(
mixed
$fd
,
int
$events
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
loopFork
( void
)
public
double
now
( void
)
public
void
nowUpdate
( void
)
final
public
EvPeriodic
periodic
(
double
$offset
,
double
$interval
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
final
public
EvPrepare
prepare
(
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
resume
( void
)
public
void
run
([
int
$flags
= 0
] )
final
public
EvSignal
signal
(
int
$signum
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
final
public
EvStat
stat
(
string
$path
,
double
$interval
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
stop
([
int
$how
] )
public
void
suspend
( void
)
final
public
EvTimer
timer
(
double
$after
,
double
$repeat
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
verify
( void
)
}Properties
The EvPeriodic classIntroductionPeriodic watchers are also timers of a kind, but they are very versatile. Unlike EvTimer , EvPeriodic watchers are not based on real time(or relative time, the physical time that passes) but on wall clock time(absolute time, calendar or clock). The difference is that wall clock time can run faster or slower than real time, and time jumps are not uncommon(e.g. when adjusting it).
EvPeriodic
watcher can be configured to trigger after some specific point in time.
For example, if an
EvPeriodic
watcher is configured to trigger
"in 10 seconds"
(e.g.
EvLoop::now
+
As with timers, the callback is guaranteed to be invoked only when the point in time where it is supposed to trigger has passed. If multiple timers become ready during the same loop iteration then the ones with earlier time-out values are invoked before ones with later time-out values (but this is no longer true when a callback calls EvLoop::run recursively). Class synopsis
EvPeriodic
class EvPeriodic
extends
EvWatcher
{
/* Properties */
public
$offset
;
public
$interval
;
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
void
again
( void
)
public
double
at
( void
)
public
__construct
(
double
$offset
,
string
$interval
,
callable
$reschedule_cb
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
final
public
static
EvPeriodic
createStopped
(
double
$offset
,
double
$interval
,
callable
$reschedule_cb
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
set
(
double
$offset
,
double
$interval
)/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}Properties
The EvPrepare classIntroductionEvPrepare and EvCheck watchers are usually used in pairs. EvPrepare watchers get invoked before the process blocks, EvCheck afterwards. It is not allowed to call EvLoop::run or similar methods or functions that enter the current event loop from either EvPrepare or EvCheck watchers. Other loops than the current one are fine, however. The rationale behind this is that one don't need to check for recursion in those watchers, i.e. the sequence will always be: EvPrepare -> blocking -> EvCheck , so having a watcher of each kind they will always be called in pairs bracketing the blocking call. The main purpose is to integrate other event mechanisms into libev and their use is somewhat advanced. They could be used, for example, to track variable changes, implement custom watchers, integrate net-snmp or a coroutine library and lots more. They are also occasionally useful to cache some data and want to flush it before blocking.
It is recommended to give
EvCheck
watchers highest(
Also, EvCheck watchers should not activate/feed events. While libev fully supports this, they might get executed before other EvCheck watchers did their job. Class synopsis
EvPrepare
class EvPrepare
extends
EvWatcher
{
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
__construct
(
string
$callback
[,
string
$data
[,
string
$priority
]] )
final
public
static
EvPrepare
createStopped
(
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}The EvSignal classIntroductionEvSignal watchers will trigger an event when the process receives a specific signal one or more times. Even though signals are very asynchronous, libev will try its best to deliver signals synchronously, i.e. as part of the normal event processing, like any other event.
There is no limit for the number of watchers for the same signal, but only
within the same loop, i.e. one can watch for
If possible and supported, libev will install its handlers with SA_RESTART (or equivalent) behaviour enabled, so system calls should not be unduly interrupted. In case of a problem with system calls getting interrupted by signals, all the signals can be blocked in an EvCheck watcher and unblocked in a EvPrepare watcher. Class synopsis
EvSignal
class EvSignal
extends
EvWatcher
{
/* Properties */
public
$signum
;
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
__construct
(
int
$signum
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
final
public
static
EvSignal
createStopped
(
int
$signum
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
set
(
int
$signum
)/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}Properties
The EvStat classIntroductionEvStat monitors a file system path for attribute changes. It calls stat() on that path in regular intervals(or when the OS signals it changed) and sees if it changed compared to the last time, invoking the callback if it did.
The path does not need to exist: changing from "path exists" to "path does
not exist" is a status change like any other. The condition "path does not
exist" is signified by the
The path must not end in a slash or contain special components such as
Since there is no portable change notification interface available, the
portable implementation simply calls
stat()
regularly on the path to see if it changed somehow. For this case a
recommended polling interval can be specified. If one specifies a polling
interval of
This watcher type is not meant for massive numbers of EvStat watchers, as even with OS-supported change notifications, this can be resource-intensive. Class synopsis
EvStat
class EvStat
extends
EvWatcher
{
/* Properties */
public
$path
;
public
$interval
;
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
array
attr
( void
)
public
__construct
(
string
$path
,
double
$interval
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
final
public
static
void
createStopped
(
string
$path
,
double
$interval
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
prev
( void
)
public
void
set
(
string
$path
,
double
$interval
)
public
bool
stat
( void
)
/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}Properties
The EvTimer classIntroductionEvTimer watchers are simple relative timers that generate an event after a given time, and optionally repeating in regular intervals after that. The timers are based on real time, that is, if one registers an event that times out after an hour and resets the system clock to January last year , it will still time out after(roughly) one hour. "Roughly" because detecting time jumps is hard, and some inaccuracies are unavoidable. The callback is guaranteed to be invoked only after its timeout has passed (not at, so on systems with very low-resolution clocks this might introduce a small delay). If multiple timers become ready during the same loop iteration then the ones with earlier time-out values are invoked before ones of the same priority with later time-out values (but this is no longer true when a callback calls EvLoop::run recursively).
The timer itself will do a best-effort at avoiding drift, that is, if a
timer is configured to trigger every
Class synopsis
EvTimer
class EvTimer
extends
EvWatcher
{
/* Properties */
public
$repeat
;
public
$remaining
;
/* Inherited properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
void
again
( void
)
public
__construct
(
double
$after
,
double
$repeat
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
final
public
static
EvTimer
createStopped
(
double
$after
,
double
$repeat
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )
public
void
set
(
double
$after
,
double
$repeat
)/* Inherited methods */
public
int
EvWatcher::clear
( void
)
abstract
public
EvWatcher::__construct
( void
)
public
void
EvWatcher::feed
(
int
$revents
)
public
EvLoop
EvWatcher::getLoop
( void
)
public
void
EvWatcher::invoke
(
int
$revents
)
public
bool
EvWatcher::keepalive
([
bool
$value
] )
public
void
EvWatcher::setCallback
(
callable
$callback
)
public
void
EvWatcher::start
( void
)
public
void
EvWatcher::stop
( void
)
}Properties
The EvWatcher classIntroductionEvWatcher is a base class for all watchers( EvCheck , EvChild etc.). Since EvWatcher 's constructor is abstract , one can't(and don't need to) create EvWatcher objects directly. Class synopsis
EvWatcher
abstract
class EvWatcher
{
/* Properties */
public
$is_active
;
public
$data
;
public
$is_pending
;
public
$priority
;
/* Methods */
public
int
clear
( void
)
abstract
public
__construct
( void
)
public
void
feed
(
int
$revents
)
public
EvLoop
getLoop
( void
)
public
void
invoke
(
int
$revents
)
public
bool
keepalive
([
bool
$value
] )
public
void
setCallback
(
callable
$callback
)
public
void
start
( void
)
public
void
stop
( void
)
}Properties
|