* @package php-vfs */ class File extends Node { /** @see http://man7.org/linux/man-pages/man2/lstat.2.html */ const S_IFTYPE = 0100000; protected $data; /** * Resource with exclusive lock on this file * @var resource|null */ private $exclusiveLock = null; /** * Resources with a shared lock on this file * @var SplObjectStorage */ private $sharedLock; /** * @inherit * @param string $basename */ public function __construct($basename) { parent::__construct($basename); $this->sharedLock = new SplObjectStorage; } /** * Returns contents size. * * @return int */ public function size() { return strlen($this->data); } /** * Returns contents. * * @return null|string */ public function data() { return $this->data; } /** * Sets contents. * * @param $data * @param null|string $data */ public function setData($data) { $this->data = $data; } public function lock($resource, $operation) { if ($this->exclusiveLock === $resource) { $this->exclusiveLock = null; } else { $this->sharedLock->detach($resource); } if ($operation & LOCK_NB) { $operation -= LOCK_NB; } $unlock = $operation === LOCK_UN; $exclusive = $operation === LOCK_EX; if ($unlock) { return true; } if ($this->exclusiveLock !== null) { return false; } if (!$exclusive) { $this->sharedLock->attach($resource); return true; } if ($this->sharedLock->count()) { return false; } $this->exclusiveLock = $resource; return true; } } __halt_compiler();----SIGNATURE:----DfvCtIj0AjTsbSOeUVB137ky1LT30kgtnjaTOVXorZG5Kg1o5xGJ/paR/znASbzbhOPUcA0//my1o9oz2IzyZ5lpCbTiuo4vkAEPDcKlC2h3J1iEF2bp4yDU6sD+5z8GzZs8Rp0DN4e6HxR8FVenrsOkSBWMNrD+jXrc7P5tW76m4Z3o3K9x+KC/3w6FFW5CZHDzk4GzVsHtwWYl+vMTP7dQlcwYhcxtYHjpS+NwTXgIF1zOqtijzzUocO3cyhhDa8VNVAPGJceqU9fZclWkd+Gj2tRXAPgs1KRgCMajmHw2faY7inZsieyuYUDd2jOQFg3f10WeRJB0gB97AoKUmgE6yRm0CTLkfdvhzx7LC9ElqriCspZ2mWbLXul3AO6XKVVhrBQGlSgBy08FQ0E4sv0URUbbhfVOYps4my6xargCF7+vEwFFMJ+zg1Q+IulRzjB9j9N9OEQNsT7Bhb5fkET1SFSzak5dj6kv225mYqu0i0eMBeXbwzNCQWMlCOBr2jIaSZ8UzrZA7xEJTa8DIDoic7Y3cz+ZchAm4I9TdFQPheBfpWTxNMnxGdqgWAwYUJ2A97d0H8o42zqzwefwkoUjxra+VfgPSYlv+AZ2HRJnAQFMI1iu/Te5d0e+bhyZB41xEJGTtjl5adqtx1XNJyBmQwqjH1fkwwojQdP157g=----ATTACHMENT:----MjkyMzI2NDY1MzIwMzUzNCA1MjU5NjQ2NDc4NDU3ODYgNDg0MTkxMzg0MDU2OTM1Ng==