[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Lock configuration class, used to get an instance of the currently configured lock factory. 19 * 20 * @package core 21 * @category lock 22 * @copyright Damyon Wiese 2013 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 24 */ 25 26 namespace core\lock; 27 28 defined('MOODLE_INTERNAL') || die(); 29 30 /** 31 * Lock configuration class, used to get an instance of the currently configured lock factory. 32 * 33 * @package core 34 * @category lock 35 * @copyright Damyon Wiese 2013 36 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 37 */ 38 class lock_config { 39 40 /** 41 * Get an instance of the currently configured locking subclass. 42 * 43 * @param string $type - Unique namespace for the locks generated by this factory. e.g. core_cron 44 * @return \core\lock\lock_factory 45 * @throws \coding_exception 46 */ 47 public static function get_lock_factory($type) { 48 global $CFG, $DB; 49 $lockfactory = null; 50 51 if (isset($CFG->lock_factory) && $CFG->lock_factory != 'auto') { 52 if (!class_exists($CFG->lock_factory)) { 53 // In this case I guess it is not safe to continue. Different cluster nodes could end up using different locking 54 // types because of an installation error. 55 throw new \coding_exception('Lock factory set in $CFG does not exist: ' . $CFG->lock_factory); 56 } 57 $lockfactoryclass = $CFG->lock_factory; 58 $lockfactory = new $lockfactoryclass($type); 59 } else { 60 $dbtype = clean_param($DB->get_dbfamily(), PARAM_ALPHA); 61 62 // DB Specific lock factory is preferred - should support auto-release. 63 $lockfactoryclass = "\\core\\lock\\$dbtype}_lock_factory"; 64 if (!class_exists($lockfactoryclass)) { 65 $lockfactoryclass = '\core\lock\file_lock_factory'; 66 } 67 /* @var lock_factory $lockfactory */ 68 $lockfactory = new $lockfactoryclass($type); 69 if (!$lockfactory->is_available()) { 70 // Final fallback - DB row locking. 71 $lockfactory = new \core\lock\db_record_lock_factory($type); 72 } 73 } 74 75 return $lockfactory; 76 } 77 78 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |