1
2
3
4
5
6
7
8
9
10 package nl.tudelft.simulation.dsol.formalisms.flow;
11
12 import java.rmi.RemoteException;
13
14 import nl.tudelft.simulation.dsol.formalisms.Resource;
15 import nl.tudelft.simulation.dsol.simulators.DEVSSimulatorInterface;
16 import nl.tudelft.simulation.logger.Logger;
17
18 /***
19 * The release station releases a given quantity of a claimed resource. <br>
20 * (c) copyright 2003 <a href="http://www.simulation.tudelft.nl">Delft
21 * University of Technology </a>, the Netherlands. <br>
22 * See for project information <a href="http://www.simulation.tudelft.nl">
23 * www.simulation.tudelft.nl </a> <br>
24 * License of use: <a href="http://www.gnu.org/copyleft/gpl.html">General Public
25 * License (GPL) </a>, no warranty <br>
26 *
27 * @version 2.0 21.09.2003 <br>
28 * @author <a href="http://www.tbm.tudelft.nl/webstaf/peterja/index.htm">Peter
29 * Jacobs </a>, <a
30 * href="http://www.tbm.tudelft.nl/webstaf/alexandv/index.htm">Alexander
31 * Verbraeck </a>
32 */
33 public class Release extends Station
34 {
35 /*** resource refers to the resource released */
36 private Resource resource;
37
38 /*** amount defines the amount to be released */
39 private double amount = 1.0;
40
41 /***
42 * Constructor for Release.
43 *
44 * @param simulator on which is scheduled
45 * @param resource which is released
46 */
47 public Release(final DEVSSimulatorInterface simulator,
48 final Resource resource)
49 {
50 this(simulator, resource, 1.0);
51 }
52
53 /***
54 * Constructor for Release.
55 *
56 * @param simulator on which is scheduled
57 * @param resource which is released
58 * @param amount of resource which is released
59 */
60 public Release(final DEVSSimulatorInterface simulator,
61 final Resource resource, final double amount)
62 {
63 super(simulator);
64 this.resource = resource;
65 this.amount = amount;
66 }
67
68 /***
69 * @see StationInterface#receiveObject(Object)
70 */
71 public synchronized void receiveObject(final Object object)
72 throws RemoteException
73 {
74 super.receiveObject(object);
75 try
76 {
77 this.resource.releaseCapacity(this.amount);
78 this.releaseObject(object);
79 } catch (Exception exception)
80 {
81 Logger.warning(this, "receiveObject", exception);
82 }
83 }
84 }