add nullable values support

This commit is contained in:
yggverse 2024-07-17 10:25:52 +03:00
parent 59d1c8cb06
commit 04238c3d6c
2 changed files with 26 additions and 14 deletions

View file

@ -20,7 +20,7 @@ interface Pool
public function set( public function set(
string $key, string $key,
string $value = '', ?string $value = null,
string $flags = 'c', string $flags = 'c',
int $offset = 0, int $offset = 0,
int $mode = 0644, int $mode = 0644,

View file

@ -24,29 +24,38 @@ class Pool implements \Yggverse\Yoda\Interface\Model\Pool
int $count = 0 int $count = 0
): ?string ): ?string
{ {
if (isset($this->_data[$key])) if (empty($this->_data[$key]))
{ {
return shmop_read( return null;
$this->_data[$key],
$start,
$count ? $count : shmop_size(
$this->_data[$key]
)
);
} }
return null; return shmop_read(
$this->_data[$key],
$start,
$count ? $count : shmop_size(
$this->_data[$key]
)
);
} }
public function set( public function set(
string $key, string $key,
string $value = '', ?string $value = null,
string $flags = 'c', string $flags = 'c',
int $offset = 0, int $offset = 0,
int $mode = 0644, int $mode = 0644,
?string $encoding = null ?string $encoding = null
): int ): 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))) if ($this->_data[$key] = shmop_open(crc32($this->_namespace . $key), $flags, $mode, mb_strlen($value, $encoding)))
{ {
return shmop_write( return shmop_write(
@ -63,9 +72,12 @@ class Pool implements \Yggverse\Yoda\Interface\Model\Pool
{ {
foreach ($this->_data as $data) foreach ($this->_data as $data)
{ {
shmop_delete( if ($data)
$data {
); shmop_delete(
$data
);
}
} }
$this->_data = []; $this->_data = [];