01 /* This file is part of the project "Hilbert II" - http://www.qedeq.org
02 *
03 * Copyright 2000-2014, Michael Meyling <mime@qedeq.org>.
04 *
05 * "Hilbert II" is free software; you can redistribute
06 * it and/or modify it under the terms of the GNU General Public
07 * License as published by the Free Software Foundation; either
08 * version 2 of the License, or (at your option) any later version.
09 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16 package org.qedeq.kernel.bo.module;
17
18 import org.qedeq.kernel.bo.common.QedeqBoSet;
19 import org.qedeq.kernel.bo.common.ServiceJob;
20 import org.qedeq.kernel.se.visitor.InterruptException;
21
22 /**
23 * Get locks for modules.
24 *
25 * @author Michael Meyling
26 */
27 public interface ModuleArbiter {
28
29 /**
30 * Lock QEDEQ module for exclusive read and write access.
31 *
32 * @param call This service call acquires the lock.
33 * @return The call locked this module newly. Before this call the module was not locked.
34 * @throws InterruptException Lock acquirement interrupted.
35 */
36 public boolean lockRequiredModule(InternalModuleServiceCall call) throws InterruptException;
37
38 /**
39 * Unlock module again.
40 *
41 * @param call This call must have acquired the lock.
42 * @return Was this module even locked?
43 */
44 public boolean unlockRequiredModule(InternalModuleServiceCall call);
45
46 /**
47 * Get all blocked modules from given process.
48 *
49 * @param process Get all modules blocked by this job.
50 *
51 * @return Set of blocked modules.
52 */
53 public QedeqBoSet getBlockedModules(ServiceJob process);
54
55 }
|