00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00018 final class SystemFiveLocker extends BaseLocker
00019 {
00020 public function get($key)
00021 {
00022 try {
00023 if (!isset($this->pool[$key]))
00024 $this->pool[$key] = sem_get($key, 1, ONPHP_IPC_PERMS, false);
00025
00026 sem_acquire($this->pool[$key]);
00027
00028 return $this->pool[$key];
00029 } catch (BaseException $e) {
00030 return null;
00031 }
00032
00033 Assert::isUnreachable();
00034 }
00035
00036 public function free($key)
00037 {
00038 if (isset($this->pool[$key])) {
00039 try {
00040 return sem_release($this->pool[$key]);
00041 } catch (BaseException $e) {
00042
00043 return false;
00044 }
00045 }
00046
00047 return null;
00048 }
00049
00050 public function drop($key)
00051 {
00052 if (isset($this->pool[$key])) {
00053 try {
00054 return sem_remove($this->pool[$key]);
00055 } catch (BaseException $e) {
00056 unset($this->pool[$key]);
00057 return false;
00058 }
00059 }
00060
00061 return null;
00062 }
00063 }
00064 ?>