01: /*
02: * <copyright>
03: *
04: * Copyright 1997-2004 BBNT Solutions, LLC
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: */
26:
27: package org.cougaar.core.agent;
28:
29: import org.cougaar.core.component.Component;
30: import org.cougaar.core.component.ServiceBroker;
31: import org.cougaar.core.component.ServiceRevokedListener;
32: import org.cougaar.util.GenericStateModelAdapter;
33:
34: /**
35: * This component uses the {@link ReconcileEnablerService}
36: * provided by the {@link Reconcile} component to enable and
37: * disable blackboard reconciliation.
38: * <p>
39: * Reconcile can not start/stop itself, since the message transport
40: * (which is loaded after Reconcile) must be started/stopped before
41: * Reconcile.
42: */
43: public final class ReconcileEnabler extends GenericStateModelAdapter
44: implements Component {
45:
46: private ServiceBroker sb;
47:
48: private ReconcileEnablerService res;
49:
50: public void setServiceBroker(ServiceBroker sb) {
51: this .sb = sb;
52: }
53:
54: public void load() {
55: super .load();
56:
57: res = (ReconcileEnablerService) sb.getService(this ,
58: ReconcileEnablerService.class, null);
59: if (res == null) {
60: throw new RuntimeException(
61: "Unable to obtain ReconcileEnablerService");
62: }
63: }
64:
65: public void start() {
66: super .start();
67: res.startTimer();
68: }
69:
70: public void suspend() {
71: super .suspend();
72: res.stopTimer();
73: }
74:
75: public void resume() {
76: super .resume();
77: res.startTimer();
78: }
79:
80: public void stop() {
81: super .stop();
82: res.stopTimer();
83: }
84:
85: public void unload() {
86: super .unload();
87: if (res != null) {
88: sb.releaseService(this , ReconcileEnablerService.class, res);
89: res = null;
90: }
91: }
92: }
|