SwooleMailbox
in package
implements
Mailbox
Swoole-backed mailbox using a Swoole\Coroutine\Channel for message passing.
On close(), remaining messages are drained from the channel into an internal SplQueue backup so they can still be dequeued after the channel is closed.
Note: Swoole Channel pop(0.0) blocks indefinitely because 0.0 is treated as falsy, falling back to the default -1 timeout. We use a tiny positive epsilon (0.001s) for non-blocking operations instead.
Tags
Table of Contents
Interfaces
Methods
- __construct() : mixed
- close() : void
- Close the mailbox. Subsequent enqueue() calls return EnqueueResult::Dropped without raising. Blocked dequeueBlocking() calls return null once the mailbox drains (closed-and-empty).
- count() : int
- dequeue() : T|null
- dequeueBlocking() : T
- enqueue() : EnqueueResult
- isClosed() : bool
- isEmpty() : bool
- isFull() : bool
Methods
__construct()
public
__construct(MailboxConfig $config) : mixed
Parameters
- $config : MailboxConfig
close()
Close the mailbox. Subsequent enqueue() calls return EnqueueResult::Dropped without raising. Blocked dequeueBlocking() calls return null once the mailbox drains (closed-and-empty).
public
close() : void
Idempotent — calling close() on an already-closed mailbox is a no-op.
Required by Plan 5 (graceful shutdown). Without close(), the actor's message loop has no way to wake up cleanly when the system stops.
count()
public
count() : int
Return values
intdequeue()
public
dequeue() : T|null
Return values
T|nulldequeueBlocking()
public
dequeueBlocking(Duration $timeout) : T
Parameters
- $timeout : Duration
Tags
Return values
Tenqueue()
public
enqueue(T $message) : EnqueueResult
Parameters
- $message : T
Tags
Return values
EnqueueResultisClosed()
public
isClosed() : bool
Return values
boolisEmpty()
public
isEmpty() : bool
Return values
boolisFull()
public
isFull() : bool