View Javadoc

1   /*
2    * @(#)DEVSSimulatorInterface.java Aug 18, 2003
3    * 
4    * Copyright (c) 2003 Delft University of Technology Jaffalaan 5, 2628 BX Delft,
5    * the Netherlands All rights reserved.
6    * 
7    * This software is proprietary information of Delft University of Technology
8    * The code is published under the General Public License
9    */
10  package nl.tudelft.simulation.dsol.simulators;
11  
12  import java.rmi.RemoteException;
13  
14  import nl.tudelft.simulation.dsol.SimRuntimeException;
15  import nl.tudelft.simulation.dsol.eventlists.EventListInterface;
16  import nl.tudelft.simulation.dsol.experiment.TimeUnitInterface;
17  import nl.tudelft.simulation.dsol.formalisms.devs.SimEventInterface;
18  import nl.tudelft.simulation.event.EventType;
19  
20  /***
21   * The DEVS defines the interface of the DEVS simulator. DEVS stands for the
22   * Discrete Event System Specification. More information on Discrete Event
23   * Simulation can be found in "Theory of Modeling and Simulation" by Bernard
24   * Zeigler et. al.
25   * <p>
26   * (c) copyright 2003 <a href="http://www.simulation.tudelft.nl">Delft
27   * University of Technology </a>, the Netherlands. <br>
28   * See for project information <a href="http://www.simulation.tudelft.nl">
29   * www.simulation.tudelft.nl </a> <br>
30   * License of use: <a href="http://www.gnu.org/copyleft/gpl.html">General Public
31   * License (GPL) </a>, no warranty <br>
32   * 
33   * @author <a href="http://www.simulation.tudelft.nl/people/jacobs.html">Peter
34   *         Jacobs </a>
35   * @version 1.8 2004-03-18
36   * @since 1.0
37   */
38  public interface DEVSSimulatorInterface extends SimulatorInterface
39  {
40  	/*** The EVENTLIST_CHANGED_EVENT is fired when the eventList is changed */
41  	EventType EVENTLIST_CHANGED_EVENT = new EventType("EVENTLIST_CHANGED_EVENT");
42  
43  	/***
44  	 * cancels an event from the event list.
45  	 * 
46  	 * @param event a simulation event to be canceled.
47  	 * @return boolean the succes of the operation.
48  	 * @throws RemoteException on network failure.
49  	 */
50  	boolean cancelEvent(SimEventInterface event) throws RemoteException;
51  
52  	/***
53  	 * returns the eventlist of the simulator.
54  	 * 
55  	 * @return the eventlist.
56  	 * @throws RemoteException on network failure
57  	 */
58  	EventListInterface getEventList() throws RemoteException;
59  
60  	/***
61  	 * Method scheduleEvent schedules an event on the eventlist.
62  	 * 
63  	 * @param event a simulation event
64  	 * @throws RemoteException on network failure
65  	 * @throws SimRuntimeException whenever event is scheduled in past.
66  	 */
67  	void scheduleEvent(SimEventInterface event) throws RemoteException,
68  			SimRuntimeException;
69  
70  	/***
71  	 * schedules a methodCall at a relative duration. The executionTime is thus
72  	 * simulator.getSimulatorTime()+relativeDuration.
73  	 * 
74  	 * @param priority the priority compared to other events scheduled at the
75  	 *        same time.
76  	 * @param source the source of the event
77  	 * @param target the target
78  	 * @param method the method
79  	 * @param args the arguments.
80  	 * @param relativeDelay the relativeDelay in timeUnits of the simulator.
81  	 * @throws RemoteException on network failure.
82  	 * @throws SimRuntimeException whenever the event is scheduled in the past.
83  	 */
84  	void scheduleEvent(double relativeDelay, short priority, Object source,
85  			Object target, String method, Object[] args)
86  			throws RemoteException, SimRuntimeException;
87  
88  	/***
89  	 * schedules a methodCall at a relative duration. The executionTime is thus
90  	 * simulator.getSimulatorTime()+relativeDuration.
91  	 * 
92  	 * @param priority the priority compared to other events scheduled at the
93  	 *        same time.
94  	 * @param timeUnit the timeUnits of the delay
95  	 * @param source the source of the event
96  	 * @param target the target
97  	 * @param method the method
98  	 * @param args the arguments.
99  	 * @param relativeDelay the relativeDelay in timeUnits of the simulator.
100 	 * @throws RemoteException on network failure.
101 	 * @throws SimRuntimeException whenever the event is scheduled in the past.
102 	 */
103 	void scheduleEvent(double relativeDelay, TimeUnitInterface timeUnit,
104 			short priority, Object source, Object target, String method,
105 			Object[] args) throws RemoteException, SimRuntimeException;
106 
107 	/***
108 	 * schedules a methodCall at a relative duration. The executionTime is thus
109 	 * simulator.getSimulatorTime()+relativeDuration.
110 	 * 
111 	 * @param source the source of the event
112 	 * @param target the target
113 	 * @param method the method
114 	 * @param args the arguments.
115 	 * @param relativeDelay the relativeDelay in timeUnits of the simulator.
116 	 * @throws RemoteException on network failure.
117 	 * @throws SimRuntimeException whenever the event is scheduled in the past.
118 	 */
119 	void scheduleEvent(double relativeDelay, Object source, Object target,
120 			String method, Object[] args) throws RemoteException,
121 			SimRuntimeException;
122 
123 	/***
124 	 * schedules a methodCall at a relative duration. The executionTime is thus
125 	 * simulator.getSimulatorTime()+relativeDuration.
126 	 * 
127 	 * @param timeUnit the timeUnits of the delay
128 	 * @param source the source of the event
129 	 * @param target the target
130 	 * @param method the method
131 	 * @param args the arguments.
132 	 * @param relativeDelay the relativeDelay in timeUnits of the simulator.
133 	 * @throws RemoteException on network failure.
134 	 * @throws SimRuntimeException whenever the event is scheduled in the past.
135 	 */
136 	void scheduleEvent(double relativeDelay, TimeUnitInterface timeUnit,
137 			Object source, Object target, String method, Object[] args)
138 			throws RemoteException, SimRuntimeException;
139 
140 	/***
141 	 * Method setEventList sets the eventlist.
142 	 * 
143 	 * @param eventList the eventList for the simulator.
144 	 * @throws RemoteException on network failure
145 	 * @throws SimRuntimeException whenever simulator.isRunning()==true
146 	 */
147 	void setEventList(EventListInterface eventList) throws RemoteException,
148 			SimRuntimeException;
149 }