1 package org.opentrafficsim.imb.connector;
2
3 import org.opentrafficsim.imb.IMBException;
4 import org.opentrafficsim.imb.transceiver.Transceiver;
5
6 import nl.tno.imb.TEventEntry;
7
8 /**
9 * IMB listener and publisher.
10 * <p>
11 * Copyright (c) 2013-2016 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
12 * BSD-style license. See <a href="http://opentrafficsim.org/docs/current/license.html">OpenTrafficSim License</a>.
13 * <p>
14 * @version $Revision$, $LastChangedDate$, by $Author$, initial version Aug 19, 2016 <br>
15 * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
16 * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
17 * @author <a href="http://www.transport.citg.tudelft.nl">Wouter Schakel</a>
18 */
19 public interface Connector
20 {
21 /**
22 * Compose a message containing the specified objects and send it to recipients.
23 * @param IMBEventName String; publication
24 * @param imbEventType IMBEventType; one of NEW, CHANGE, or DELETE
25 * @param args Object[]; the objects to send
26 * @return boolean; true on success, false on failure
27 * @throws IMBException when the event name is not a registered publication
28 */
29 boolean postIMBMessage(String IMBEventName, IMBEventType imbEventType, Object[] args) throws IMBException;
30
31 /**
32 * Register the transceiver as the interested party when an IMB message identified by the imbEventName is received. When an
33 * IMB message with that imbEventName is received, the postOTSMessage method on the transceiver is called.
34 * @param fullIMBEventName the IMB Event name including the federation prefix, e.g. OTS_RT.SIM_Start
35 * @param transceiver the transceiver to handle the incoming event
36 * @throws IMBException in case the transceiver is switched to a new one for an event
37 */
38 void register(String fullIMBEventName, Transceiver transceiver) throws IMBException;
39
40 /**
41 * Return the host of the connection, e.g. localhost, or 192,168.1.11
42 * @return String; the host of the connection
43 */
44 String getHost();
45
46 /**
47 * Return the port of the connection, e.g. 4000
48 * @return int; the port of the connection
49 */
50 int getPort();
51
52 /**
53 * Return the model name (owner name) of the connection, e.g. OTS
54 * @return String; the model name (owner name) of the connection
55 */
56 String getModelName();
57
58 /**
59 * Return the model id (owner id) of the connection, e.g. 1
60 * @return String; the model id (owner id) of the connection
61 */
62 int getModelId();
63
64 /**
65 * Return the federation name of the connection, e.g. OTS_RT
66 * @return String; the federation name of the connection
67 */
68 String getFederation();
69
70 /**
71 * Enum for IMB event types.
72 * <p>
73 * Copyright (c) 2013-2016 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
74 * <br>
75 * BSD-style license. See <a href="http://opentrafficsim.org/docs/current/license.html">OpenTrafficSim License</a>.
76 * <p>
77 * @version $Revision$, $LastChangedDate$, by $Author$, initial version Sep 9, 2016 <br>
78 * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
79 * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
80 * @author <a href="http://www.transport.citg.tudelft.nl">Wouter Schakel</a>
81 */
82 public enum IMBEventType
83 {
84 /** Corresponds to TEventEntry.ACTION_NEW. */
85 NEW(TEventEntry.ACTION_NEW),
86
87 /** Corresponds to TEventEntry.ACTION_CHANGE. */
88 CHANGE(TEventEntry.ACTION_CHANGE),
89
90 /** Corresponds to TEventEntry.ACTION_DELETE. */
91 DELETE(TEventEntry.ACTION_DELETE);
92
93 /** Equivalent TEventEntry value. */
94 private final int eventEntry;
95
96 /**
97 * Construct a
98 * @param eventEntry
99 */
100 IMBEventType(final int eventEntry)
101 {
102 this.eventEntry = eventEntry;
103 }
104
105 /**
106 * Return the corresponding integer IMB type.
107 * @return int; the IMB event type
108 */
109 public int getEventEntry()
110 {
111 return this.eventEntry;
112 }
113
114 }
115
116 }