Menu
Reference
- Manticore\Ds
- Async
- Classes
- AggregateError
- CancellationToken
- CancelledException
- Channel
- ChannelClosedException
- Context
- DeadlockException
- Mutex
- Once
- Pool
- Received
- SelectCase
- Selected
- Semaphore
- Settled
- Task
- TaskGroup
- TimeoutException
- Functions
- async()
- awaitAll()
- awaitAllSettled()
- awaitAny()
- channel()
- delay()
- dump()
- dumpOn()
- failure()
- group()
- mapConcurrent()
- mapSettled()
- readFile()
- select()
- selectNow()
- selectWithin()
- shield()
- shutdownOn()
- spawn()
- stats()
- timeout()
- watchdog()
- writeFile()
- Http
- Http\WebSocket
- Buffer
- Process
- Io\Poll
- Manticore\Sapi
- Ffi
Selected
finalclass
final class Selected
Which select() case fired, and with what.
index: position in the case list handed toselect()value: the received value; always null for a send caseok: false when the channel was closed rather than delivering a valuechannel: the channel that completedisSend: true when the case that fired was a send
Example
use Async\SelectCase;
use function Async\async;
use function Async\channel;
use function Async\delay;
use function Async\select;
use function Async\selectNow;
use function Async\selectWithin;
use function Async\spawn;
async(function () {
$fast = channel();
$slow = channel();
spawn(function () use ($fast) { delay(0.01); $fast->send("from fast"); });
spawn(function () use ($slow) { delay(0.05); $slow->send("from slow"); });
// A bare channel is shorthand for a receive case.
$r = select([$slow, $fast]);
echo "case {$r->index}: {$r->value}\n";
// Nothing is ready right now.
var_dump(selectNow([$fast]));
// A deadline: null when it expires first.
var_dump(selectWithin(0.01, [$fast]));
// The other value is still on its way.
$r = select([$slow]);
echo $r->value, "\n";
// A send arm completes when a receiver (or buffer space) is available.
$out = channel(1);
$r = select([SelectCase::send($out, 7)]);
echo $r->isSend ? "sent " : "received ", $out->recv(), "\n";
});Output
case 1: from fast
NULL
NULL
from slow
sent 7See also: select
Methods
__construct() | Build a select result. |
__construct()#source
function __construct(
public int $index,
public mixed $value,
public bool $ok,
public ?Channel $channel,
public bool $isSend
)
Build a select result.
Parameters
$indexint- position of the winning case
$valuemixed- received value, null for a send case
$okbool- false when the channel was closed
$channel?Channel- the channel that completed
$isSendbool- whether the winning case was a send