00001 <?php 00002 /*************************************************************************** 00003 * Copyright (C) 2005-2008 by Konstantin V. Arkhipov * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU Lesser General Public License as * 00007 * published by the Free Software Foundation; either version 3 of the * 00008 * License, or (at your option) any later version. * 00009 * * 00010 ***************************************************************************/ 00011 00022 final class SemaphorePool extends BaseLocker implements Instantiatable 00023 { 00024 private static $lockerName = 'DirectoryLocker'; 00025 private static $locker = null; 00026 00027 protected function __construct() 00028 { 00029 self::$locker = Singleton::getInstance(self::$lockerName); 00030 } 00031 00032 public static function setDefaultLocker($name) 00033 { 00034 Assert::classExists($name); 00035 00036 self::$lockerName = $name; 00037 self::$locker = Singleton::getInstance($name); 00038 } 00039 00043 public static function me() 00044 { 00045 return Singleton::getInstance(__CLASS__); 00046 } 00047 00048 public function get($key) 00049 { 00050 return self::$locker->get($key); 00051 } 00052 00053 public function free($key) 00054 { 00055 return self::$locker->free($key); 00056 } 00057 00058 public function drop($key) 00059 { 00060 return self::$locker->drop($key); 00061 } 00062 00063 public function clean() 00064 { 00065 return self::$locker->clean(); 00066 } 00067 00068 public function __destruct() 00069 { 00070 self::$locker->clean(); 00071 } 00072 } 00073 ?>