diff --git a/src/Interface/Model/Pool.php b/src/Interface/Model/Pool.php index 6b88dca3..d47dcf4b 100644 --- a/src/Interface/Model/Pool.php +++ b/src/Interface/Model/Pool.php @@ -20,7 +20,7 @@ interface Pool public function set( string $key, - string $value = '', + ?string $value = null, string $flags = 'c', int $offset = 0, int $mode = 0644, diff --git a/src/Model/Pool.php b/src/Model/Pool.php index eb6aad0b..808c95ca 100644 --- a/src/Model/Pool.php +++ b/src/Model/Pool.php @@ -24,29 +24,38 @@ class Pool implements \Yggverse\Yoda\Interface\Model\Pool int $count = 0 ): ?string { - if (isset($this->_data[$key])) + if (empty($this->_data[$key])) { - return shmop_read( - $this->_data[$key], - $start, - $count ? $count : shmop_size( - $this->_data[$key] - ) - ); + return null; } - return null; + return shmop_read( + $this->_data[$key], + $start, + $count ? $count : shmop_size( + $this->_data[$key] + ) + ); } public function set( string $key, - string $value = '', + ?string $value = null, string $flags = 'c', int $offset = 0, int $mode = 0644, ?string $encoding = null ): int { + if (empty($value)) + { + // @TODO delete from memory + + $this->_data[$key] = null; + + return 0; + } + if ($this->_data[$key] = shmop_open(crc32($this->_namespace . $key), $flags, $mode, mb_strlen($value, $encoding))) { return shmop_write( @@ -63,9 +72,12 @@ class Pool implements \Yggverse\Yoda\Interface\Model\Pool { foreach ($this->_data as $data) { - shmop_delete( - $data - ); + if ($data) + { + shmop_delete( + $data + ); + } } $this->_data = [];