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
21 package org.waarp.vitam.common;
22
23 import fr.gouv.vitam.access.external.client.AdminExternalClientFactory;
24
25 import java.io.File;
26 import java.util.concurrent.atomic.AtomicBoolean;
27
28 /**
29 * Interface of all Waarp-Vitam Monitor
30 */
31 public abstract class WaarpMonitor {
32 protected final long elapseTime;
33 private final File stopFile;
34 private final AdminExternalClientFactory adminFactory;
35 private final AtomicBoolean shutdown = new AtomicBoolean(false);
36
37 /**
38 * @param stopFile
39 * @param adminFactory
40 */
41 protected WaarpMonitor(final File stopFile,
42 final AdminExternalClientFactory adminFactory,
43 final long elapseTime) {
44 this.stopFile = stopFile;
45 this.adminFactory = adminFactory;
46 this.elapseTime = elapseTime;
47 }
48
49 /**
50 * @return the stop File for this Monitor
51 */
52 public File getStopFile() {
53 return stopFile;
54 }
55
56 /**
57 * @return the {@link AdminExternalClientFactory} for this Monitor
58 */
59 public AdminExternalClientFactory getAdminFactory() {
60 return adminFactory;
61 }
62
63 /**
64 * @param isShutdown
65 *
66 * @return this
67 */
68 public WaarpMonitor setShutdown(boolean isShutdown) {
69 shutdown.set(isShutdown);
70 return this;
71 }
72
73 /**
74 * @return true if this Monitor is in shutdown
75 */
76 public boolean isShutdown() {
77 return stopFile.exists() || shutdown.get();
78 }
79
80 public long getElapseTime() {
81 return elapseTime;
82 }
83 }