From ea7c87ec0d18b727b017cc2674d6a74ede6ab267 Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 30 Mar 2009 16:18:43 +0000 Subject: [PATCH] #17893298 : added DB based lock (using unique key) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6000 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/module.controller.php | 28 +++++++++++++++++++ modules/module/queries/deleteLock.xml | 9 ++++++ .../queries/deleteLocksTimeoutPassed.xml | 8 ++++++ modules/module/queries/insertLock.xml | 10 +++++++ modules/module/schemas/module_locks.xml | 5 ++++ 5 files changed, 60 insertions(+) create mode 100644 modules/module/queries/deleteLock.xml create mode 100644 modules/module/queries/deleteLocksTimeoutPassed.xml create mode 100644 modules/module/queries/insertLock.xml create mode 100644 modules/module/schemas/module_locks.xml diff --git a/modules/module/module.controller.php b/modules/module/module.controller.php index ec726aafa..2d83938f0 100644 --- a/modules/module/module.controller.php +++ b/modules/module/module.controller.php @@ -646,5 +646,33 @@ $args->module_filebox_srl = $vars->module_filebox_srl; return executeQuery('module.deleteModuleFileBox', $args); } + + /** + * @brief function of locking (timeout is in seconds) + */ + function lock($lock_name, $timeout, $member_srl = null) { + $this->unlockTimeoutPassed(); + $args->lock_name = $lock_name; + if(!$timeout) $timeout = 60; + $args->deadline = date("YmdHis", time() + $timeout); + if($member_srl) $args->member_srl = $member_srl; + $output = executeQuery('module.insertLock', $args); + if($output->toBool()) { + $output->add('lock_name', $lock_name); + $output->add('deadline', $args->deadline); + } + return $output; + } + + function unlockTimeoutPassed() { + executeQuery('module.deleteLocksTimeoutPassed'); + } + + function unlock($lock_name, $deadline) { + $args->lock_name = $lock_name; + $args->deadline = $deadline; + $output = executeQuery('module.deleteLock', $args); + return $output; + } } ?> diff --git a/modules/module/queries/deleteLock.xml b/modules/module/queries/deleteLock.xml new file mode 100644 index 000000000..30610e952 --- /dev/null +++ b/modules/module/queries/deleteLock.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/modules/module/queries/deleteLocksTimeoutPassed.xml b/modules/module/queries/deleteLocksTimeoutPassed.xml new file mode 100644 index 000000000..bb8df20b5 --- /dev/null +++ b/modules/module/queries/deleteLocksTimeoutPassed.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/module/queries/insertLock.xml b/modules/module/queries/insertLock.xml new file mode 100644 index 000000000..9a447c451 --- /dev/null +++ b/modules/module/queries/insertLock.xml @@ -0,0 +1,10 @@ + + +
+ + + + + + + diff --git a/modules/module/schemas/module_locks.xml b/modules/module/schemas/module_locks.xml new file mode 100644 index 000000000..6934d619c --- /dev/null +++ b/modules/module/schemas/module_locks.xml @@ -0,0 +1,5 @@ +
+ + + +