View Javadoc
1   package org.opentrafficsim.imb.transceiver.urbanstrategy;
2   
3   import org.opentrafficsim.core.dsol.OTSDEVSSimulatorInterface;
4   import org.opentrafficsim.core.network.OTSNetwork;
5   import org.opentrafficsim.imb.IMBException;
6   import org.opentrafficsim.imb.connector.Connector;
7   import org.opentrafficsim.imb.connector.Connector.IMBEventType;
8   import org.opentrafficsim.imb.transceiver.AbstractTransceiver;
9   
10  import nl.tudelft.simulation.language.Throw;
11  
12  /**
13   * IMB transceiver for the network. <br>
14   * OTS publishes events about the Network to IMB to be able to identify the network. At the start of the OTS simulation, or when
15   * a (sub) network is added later, a NEW message is sent to IMB to identify the network's id. No CHANGE or DELETE messages are posted.
16   * <p>
17   * <style>table,th,td {border:1px solid grey; border-style:solid; text-align:left; border-collapse: collapse;}</style>
18   * <h2>NEW</h2>
19   * <table summary="" style="width:800px;">
20   * <thead>
21   * <tr>
22   * <th style="width:25%;">Variable</th>
23   * <th style="width:15%;">Type</th>
24   * <th style="width:60%;">Comments</th>
25   * </tr>
26   * </thead><tbody>
27   * <tr>
28   * <td>timestamp</td>
29   * <td>double</td>
30   * <td>time of the event, in simulation time seconds</td>
31   * </tr>
32   * <tr>
33   * <td>networkId</td>
34   * <td>String</td>
35   * <td>Name of the network as used in e.g., Link messages</td>
36   * </tr>
37   * </tbody>
38   * </table>
39   * </p>
40   * <p>
41   * <h2>CHANGE</h2> Not sent
42   * </p>
43   * <p>
44   * <h2>DELETE</h2> Not sent
45   * </p>
46   * <p>
47   * Copyright (c) 2013-2016 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
48   * BSD-style license. See <a href="http://opentrafficsim.org/docs/current/license.html">OpenTrafficSim License</a>.
49   * </p>
50   * @version $Revision$, $LastChangedDate$, by $Author$, initial version Sep 16, 2016 <br>
51   * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
52   * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
53   */
54  public class NetworkTransceiver extends AbstractTransceiver
55  {
56      /** */
57      private static final long serialVersionUID = 20160918L;
58  
59      /**
60       * Construct a new NetworkTransceiver.
61       * @param connector Connector; the IMB connector through which this transceiver communicates
62       * @param simulator OTSDEVSSimulatorInterface; the simulator to retrieve the timestamp
63       * @param network OTSNetwork; the OTS network
64       * @throws IMBException when the message cannot be sent
65       * @throws NullPointerException in case one of the arguments is null.
66       */
67      public NetworkTransceiver(final Connector connector, final OTSDEVSSimulatorInterface simulator, final OTSNetwork network)
68              throws IMBException
69      {
70          super("Network", connector, simulator);
71          Throw.whenNull(network, "Network cannot be null");
72          connector.postIMBMessage("Network", IMBEventType.NEW,
73                  new Object[] { simulator.getSimulatorTime().get().si, network.getId() });
74      }
75  
76  }