1 /*
2 * This file is part of Waarp Project (named also Waarp or GG).
3 *
4 * Copyright (c) 2019, Waarp SAS, and individual contributors by the @author
5 * tags. See the COPYRIGHT.txt in the distribution for a full listing of
6 * individual contributors.
7 *
8 * All Waarp Project is free software: you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or (at your
11 * option) any later version.
12 *
13 * Waarp is distributed in the hope that it will be useful, but WITHOUT ANY
14 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * Waarp . If not, see <http://www.gnu.org/licenses/>.
19 */
20 package org.waarp.common.future;
21
22 import org.waarp.common.logging.SysErrLogger;
23
24 import java.util.concurrent.TimeUnit;
25 import java.util.concurrent.locks.ReentrantLock;
26
27 /**
28 * ReentrantLock with a timeout in locking without exception and no exception on
29 * unlock if the thread is not
30 * locking it.
31 */
32 public class WaarpLock extends ReentrantLock {
33 /**
34 *
35 */
36 private static final long serialVersionUID = 2715044114949871427L;
37
38 /**
39 *
40 */
41 public WaarpLock() {
42 }
43
44 /**
45 * @param fair
46 */
47 public WaarpLock(final boolean fair) {
48 super(fair);
49 }
50
51 /**
52 * Try to lock within the given limit, but do not raized any exception if
53 * not
54 * locked. A complete lock shall be
55 * done using other calls, like simple lock() method.
56 *
57 * @param timeout
58 * @param timeUnit
59 */
60 public final void lock(final long timeout, final TimeUnit timeUnit) {
61 try {
62 tryLock(timeout, timeUnit);
63 } catch (final InterruptedException e) {//NOSONAR
64 SysErrLogger.FAKE_LOGGER.ignoreLog(e);
65 }
66 }
67
68 @Override
69 public final void unlock() {
70 try {
71 super.unlock();
72 } catch (final IllegalMonitorStateException ignored) {//NOSONAR
73 SysErrLogger.FAKE_LOGGER.ignoreLog(ignored);
74 }
75 }
76
77 }