Example #1
0
<?php

uv_fs_open(uv_default_loop(), "./tmp", UV::O_WRONLY | UV::O_CREAT | UV::O_APPEND, UV::S_IRWXU | UV::S_IRUSR, function ($r) {
    var_dump($r);
    uv_fs_write(uv_default_loop(), $r, "hello", 0, function ($a) use($r) {
        var_dump($a);
        var_dump("ok");
        uv_fs_fdatasync(uv_default_loop(), $r, function () {
            echo "fsync finished";
        });
    });
});
uv_run();
Example #2
0
<?php

$socket = stream_socket_server("tcp://0.0.0.0:9999", $errno, $errstr);
stream_set_blocking($socket, 0);
$poll = uv_poll_init(uv_default_loop(), $socket);
uv_poll_start($poll, UV::READABLE, function ($poll, $stat, $ev, $socket) {
    echo "parent poll:\n";
    var_dump($stat);
    $conn = stream_socket_accept($socket);
    $pp = uv_poll_init(uv_default_loop(), $conn);
    uv_poll_start($pp, UV::WRITABLE, function ($poll, $stat, $ev, $conn) {
        echo "  cb";
        var_dump($stat);
        var_dump($conn);
        uv_poll_stop($poll);
        uv_fs_write(uv_default_loop(), $conn, "Hello World", -1, function ($conn, $nwrite) {
            var_dump($conn);
            fclose($conn);
        });
    });
});
uv_run();
Example #3
0
 public function write($fd, $buffer, $position, $callback)
 {
     uv_fs_write($this->getEventLoop(), $fd, $buffer, $position, $callback);
 }
Example #4
0
 private function doPut($path, $contents) : \Generator
 {
     $flags = \UV::O_WRONLY | \UV::O_CREAT;
     $mode = \UV::S_IRWXU | \UV::S_IRUSR;
     $this->reactor->addRef();
     $promise = $this->doFsOpen($path, $flags, $mode);
     if (!($fh = (yield $promise))) {
         $this->reactor->delRef();
         throw new \RuntimeException("Failed opening write file handle");
     }
     $promisor = new Deferred();
     $len = strlen($contents);
     \uv_fs_write($this->loop, $fh, $contents, $offset = 0, function ($fh, $result) use($promisor, $len) {
         \uv_fs_close($this->loop, $fh, function () use($promisor, $result, $len) {
             $this->reactor->delRef();
             if ($result < 0) {
                 $promisor->fail(new \RuntimeException(uv_strerror($result)));
             } else {
                 $promisor->succeed($len);
             }
         });
     });
     (yield new \Amp\CoroutineResult((yield $promisor->promise())));
 }
Example #5
0
 private function doWrite($op)
 {
     $this->reactor->addRef();
     $onWrite = function ($fh, $result) use($op) {
         $this->isActive = false;
         $this->reactor->delRef();
         if ($result < 0) {
             $op->promisor->fail(new FilesystemException(\uv_strerror($result)));
         } else {
             StatCache::clear($this->path);
             $bytesWritten = \strlen($op->writeData);
             $this->pendingWriteOps--;
             $newPosition = $op->position + $bytesWritten;
             $delta = $newPosition - $this->position;
             $this->position = $this->mode[0] === "a" ? $this->position : $newPosition;
             $this->size += $delta;
             $op->promisor->succeed($result);
         }
         if ($this->queue) {
             $this->dequeue();
         }
     };
     \uv_fs_write($this->loop, $this->fh, $op->writeData, $op->position, $onWrite);
 }