blob: 268b6ac8483e3b156af7b829fb9cc6de67b3eb07 [file] [log] [blame]
tomedf06bb2014-08-27 16:22:15 -07001package org.onlab.onos.net.topology;
2
3import org.onlab.onos.event.AbstractEvent;
tom95329eb2014-10-06 08:40:06 -07004import org.onlab.onos.event.Event;
5
6import java.util.List;
tomedf06bb2014-08-27 16:22:15 -07007
8/**
9 * Describes network topology event.
10 */
11public class TopologyEvent extends AbstractEvent<TopologyEvent.Type, Topology> {
12
tom95329eb2014-10-06 08:40:06 -070013 private final List<Event> reasons;
14
tomedf06bb2014-08-27 16:22:15 -070015 /**
16 * Type of topology events.
17 */
18 public enum Type {
19 /**
20 * Signifies that topology has changed.
21 */
22 TOPOLOGY_CHANGED
23 }
24
25 /**
26 * Creates an event of a given type and for the specified topology and the
27 * current time.
28 *
29 * @param type topology event type
30 * @param topology event topology subject
tom95329eb2014-10-06 08:40:06 -070031 * @param reasons list of events that triggered topology change
tomedf06bb2014-08-27 16:22:15 -070032 */
tom95329eb2014-10-06 08:40:06 -070033 public TopologyEvent(Type type, Topology topology, List<Event> reasons) {
tomedf06bb2014-08-27 16:22:15 -070034 super(type, topology);
tom95329eb2014-10-06 08:40:06 -070035 this.reasons = reasons;
tomedf06bb2014-08-27 16:22:15 -070036 }
37
38 /**
39 * Creates an event of a given type and for the specified topology and time.
40 *
41 * @param type link event type
42 * @param topology event topology subject
tom95329eb2014-10-06 08:40:06 -070043 * @param reasons list of events that triggered topology change
tomedf06bb2014-08-27 16:22:15 -070044 * @param time occurrence time
45 */
tom95329eb2014-10-06 08:40:06 -070046 public TopologyEvent(Type type, Topology topology, List<Event> reasons,
47 long time) {
tomedf06bb2014-08-27 16:22:15 -070048 super(type, topology, time);
tom95329eb2014-10-06 08:40:06 -070049 this.reasons = reasons;
50 }
51
52
53 /**
54 * Returns the list of events that triggered the topology change.
55 *
56 * @return list of events responsible for change in topology; null if
57 * initial topology computation
58 */
59 public List<Event> reasons() {
60 return reasons;
tomedf06bb2014-08-27 16:22:15 -070061 }
62
63}