FswatchDriver
class FswatchDriver extends AbstractDriver
Properties
| protected Channel|null | $stopSignal | from AbstractDriver | |
| protected bool | $stopping | from AbstractDriver | |
| protected array<string, resource> | $processes | ||
| protected array<string, resource> | $pipes |
Methods
Stop the active fswatch processes.
Run a polling scan until the driver is stopped.
Resolve configured watch paths to absolute targets.
Group watch paths by their resolved target.
Execute a shell command using Swoole's coroutine-aware exec.
Escape a list of arguments for interpolation into a shell command.
Process complete NUL-delimited paths while retaining a partial tail.
Open every configured fswatch process group.
Open one fswatch subprocess and retain its output pipe.
Close every process resource owned by the active watch lifecycle.
Resolve command operands and canonical matcher mappings.
Group watch targets by the recursion depth their process requires.
Determine whether a path is equal to or nested beneath another path.
Build the fswatch command arguments.
Details
at line 22
__construct(Option $option)
No description
in
AbstractDriver at line 26
bool
isDarwin()
Determine if the current OS is macOS.
at line 162
void
stop()
Stop the active fswatch processes.
in
AbstractDriver at line 51
protected bool
isStopping()
Determine whether the driver has been stopped.
The state may change while hooked I/O yields to another coroutine.
in
AbstractDriver at line 59
protected void
watchAtInterval(float $seconds, callable $scan)
Run a polling scan until the driver is stopped.
in
AbstractDriver at line 96
protected array
resolveTargets(array $watchPaths)
Resolve configured watch paths to absolute targets.
in
AbstractDriver at line 116
protected array
groupWatchPathsByTarget(array $watchPaths)
Group watch paths by their resolved target.
in
AbstractDriver at line 137
protected array
existingTargets(array $targets)
Filter targets that currently exist.
in
AbstractDriver at line 149
protected array
exec(string $command)
Execute a shell command using Swoole's coroutine-aware exec.
Every interpolated argument must be escaped before it reaches this boundary.
in
AbstractDriver at line 165
protected string
shellArguments(array $arguments)
Escape a list of arguments for interpolation into a shell command.
at line 35
void
watch(Channel $channel)
Watch for file changes using fswatch.
at line 111
protected void
processOutput(string $buffer, string $chunk, Channel $channel, array $watchPaths, array $watchTargets)
Process complete NUL-delimited paths while retaining a partial tail.
at line 178
protected void
openProcesses(array $groups)
Open every configured fswatch process group.
at line 190
protected void
openProcess(string $group, array $operands, bool $recursive)
Open one fswatch subprocess and retain its output pipe.
at line 218
protected void
closeProcesses()
Close every process resource owned by the active watch lifecycle.
at line 254
protected array
resolveWatchTargets(array $watchPaths)
Resolve command operands and canonical matcher mappings.
at line 298
protected array
groupWatchTargets(array $targets)
Group watch targets by the recursion depth their process requires.
at line 362
protected bool
isContainedBy(string $path, string $parent)
Determine whether a path is equal to or nested beneath another path.
Both paths must be canonical because a literal path can escape its lexical parent through a symlink.
at line 383
protected bool
shouldStopWatching(Channel $channel)
Determine whether the active watch loop should stop.
The state may change while hooked I/O yields to another coroutine.
at line 394
protected array
getCommand(array $operands, bool $recursive)
Build the fswatch command arguments.