source: trunk/zpush/lib/default/simplemutex.php @ 7589

Revision 7589, 3.3 KB checked in by douglas, 11 years ago (diff)

Ticket #3209 - Integrar módulo de sincronização Z-push ao Expresso

Line 
1<?php
2/***********************************************
3* File      :   simplemutex.php
4* Project   :   Z-Push
5* Descr     :   Implements a simple mutex using InterProcessData
6*
7* Created   :   29.02.2012
8*
9* Copyright 2007 - 2012 Zarafa Deutschland GmbH
10*
11* This program is free software: you can redistribute it and/or modify
12* it under the terms of the GNU Affero General Public License, version 3,
13* as published by the Free Software Foundation with the following additional
14* term according to sec. 7:
15*
16* According to sec. 7 of the GNU Affero General Public License, version 3,
17* the terms of the AGPL are supplemented with the following terms:
18*
19* "Zarafa" is a registered trademark of Zarafa B.V.
20* "Z-Push" is a registered trademark of Zarafa Deutschland GmbH
21* The licensing of the Program under the AGPL does not imply a trademark license.
22* Therefore any rights, title and interest in our trademarks remain entirely with us.
23*
24* However, if you propagate an unmodified version of the Program you are
25* allowed to use the term "Z-Push" to indicate that you distribute the Program.
26* Furthermore you may use our trademarks where it is necessary to indicate
27* the intended purpose of a product or service provided you use it in accordance
28* with honest practices in industrial or commercial matters.
29* If you want to propagate modified versions of the Program under the name "Z-Push",
30* you may only do so if you have a written permission by Zarafa Deutschland GmbH
31* (to acquire a permission please contact Zarafa at trademark@zarafa.com).
32*
33* This program is distributed in the hope that it will be useful,
34* but WITHOUT ANY WARRANTY; without even the implied warranty of
35* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36* GNU Affero General Public License for more details.
37*
38* You should have received a copy of the GNU Affero General Public License
39* along with this program.  If not, see <http://www.gnu.org/licenses/>.
40*
41* Consult LICENSE file for details
42************************************************/
43
44class SimpleMutex extends InterProcessData {
45    /**
46     * Constructor
47     */
48    public function SimpleMutex() {
49        // initialize super parameters
50        $this->allocate = 64;
51        $this->type = 5173;
52        parent::__construct();
53
54        if (!$this->IsActive()) {
55            ZLog::Write(LOGLEVEL_ERROR, "SimpleMutex not available as InterProcessData is not available. This is not recommended on duty systems and may result in corrupt user/device linking.");
56        }
57    }
58
59    /**
60     * Blocks the mutex
61     * Method blocks until mutex is available!
62     * ATTENTION: make sure that you *always* release a blocked mutex!
63     *
64     * @access public
65     * @return boolean
66     */
67    public function Block() {
68        if ($this->IsActive())
69            return $this->blockMutex();
70
71        ZLog::Write(LOGLEVEL_WARN, "Could not enter mutex as InterProcessData is not available. This is not recommended on duty systems and may result in corrupt user/device linking!");
72        return true;
73    }
74
75    /**
76     * Releases the mutex
77     * After the release other processes are able to block the mutex themselfs
78     *
79     * @access public
80     * @return boolean
81     */
82    public function Release() {
83        if ($this->IsActive())
84            return $this->releaseMutex();
85
86        return true;
87    }
88}
89?>
Note: See TracBrowser for help on using the repository browser.