Showing
19 changed files
with
211 additions
and
89 deletions
1 | package org.onlab.onos.event; | 1 | package org.onlab.onos.event; |
2 | 2 | ||
3 | import org.slf4j.Logger; | 3 | import org.slf4j.Logger; |
4 | -import org.slf4j.LoggerFactory; | ||
5 | 4 | ||
6 | import java.util.Set; | 5 | import java.util.Set; |
7 | import java.util.concurrent.CopyOnWriteArraySet; | 6 | import java.util.concurrent.CopyOnWriteArraySet; |
8 | 7 | ||
9 | import static com.google.common.base.Preconditions.checkArgument; | 8 | import static com.google.common.base.Preconditions.checkArgument; |
10 | import static com.google.common.base.Preconditions.checkNotNull; | 9 | import static com.google.common.base.Preconditions.checkNotNull; |
10 | +import static org.slf4j.LoggerFactory.getLogger; | ||
11 | 11 | ||
12 | /** | 12 | /** |
13 | * Base implementation of a manager capable of tracking listeners and | 13 | * Base implementation of a manager capable of tracking listeners and |
... | @@ -16,7 +16,7 @@ import static com.google.common.base.Preconditions.checkNotNull; | ... | @@ -16,7 +16,7 @@ import static com.google.common.base.Preconditions.checkNotNull; |
16 | public class AbstractListenerManager<E extends Event, L extends EventListener<E>> | 16 | public class AbstractListenerManager<E extends Event, L extends EventListener<E>> |
17 | implements EventSink<E> { | 17 | implements EventSink<E> { |
18 | 18 | ||
19 | - protected Logger log = LoggerFactory.getLogger(AbstractListenerManager.class); | 19 | + private final Logger log = getLogger(getClass()); |
20 | 20 | ||
21 | private final Set<L> listeners = new CopyOnWriteArraySet<>(); | 21 | private final Set<L> listeners = new CopyOnWriteArraySet<>(); |
22 | 22 | ... | ... |
1 | package org.onlab.onos.event.impl; | 1 | package org.onlab.onos.event.impl; |
2 | 2 | ||
3 | +import org.apache.felix.scr.annotations.Activate; | ||
3 | import org.apache.felix.scr.annotations.Component; | 4 | import org.apache.felix.scr.annotations.Component; |
5 | +import org.apache.felix.scr.annotations.Deactivate; | ||
4 | import org.apache.felix.scr.annotations.Service; | 6 | import org.apache.felix.scr.annotations.Service; |
7 | +import org.onlab.onos.event.AbstractEvent; | ||
8 | +import org.onlab.onos.event.DefaultEventSinkBroker; | ||
5 | import org.onlab.onos.event.Event; | 9 | import org.onlab.onos.event.Event; |
6 | import org.onlab.onos.event.EventDispatchService; | 10 | import org.onlab.onos.event.EventDispatchService; |
7 | import org.onlab.onos.event.EventSink; | 11 | import org.onlab.onos.event.EventSink; |
12 | +import org.slf4j.Logger; | ||
8 | 13 | ||
9 | -import java.util.Set; | 14 | +import java.util.concurrent.BlockingQueue; |
10 | import java.util.concurrent.ExecutorService; | 15 | import java.util.concurrent.ExecutorService; |
11 | -import java.util.concurrent.Executors; | 16 | +import java.util.concurrent.LinkedBlockingQueue; |
17 | + | ||
18 | +import static java.util.concurrent.Executors.newSingleThreadExecutor; | ||
19 | +import static org.onlab.util.Tools.namedThreads; | ||
20 | +import static org.slf4j.LoggerFactory.getLogger; | ||
12 | 21 | ||
13 | /** | 22 | /** |
14 | * Simple implementation of an event dispatching service. | 23 | * Simple implementation of an event dispatching service. |
15 | */ | 24 | */ |
16 | @Component(immediate = true) | 25 | @Component(immediate = true) |
17 | @Service | 26 | @Service |
18 | -public class SimpleEventDispatcher implements EventDispatchService { | 27 | +public class SimpleEventDispatcher extends DefaultEventSinkBroker |
28 | + implements EventDispatchService { | ||
19 | 29 | ||
20 | - private final ExecutorService executor = Executors.newSingleThreadExecutor(); | 30 | + private final Logger log = getLogger(getClass()); |
21 | 31 | ||
22 | - @Override | 32 | + private final ExecutorService executor = |
23 | - public void post(Event event) { | 33 | + newSingleThreadExecutor(namedThreads("event-dispatch-%d")); |
24 | 34 | ||
25 | - } | 35 | + @SuppressWarnings("unchecked") |
36 | + private static final Event KILL_PILL = new AbstractEvent(null, 0) { | ||
37 | + }; | ||
26 | 38 | ||
27 | - @Override | 39 | + private final BlockingQueue<Event> events = new LinkedBlockingQueue<>(); |
28 | - public <E extends Event> void addSink(Class<E> eventClass, EventSink<E> sink) { | ||
29 | 40 | ||
30 | - } | 41 | + private volatile boolean stopped = false; |
31 | 42 | ||
32 | @Override | 43 | @Override |
33 | - public <E extends Event> void removeSink(Class<E> eventClass) { | 44 | + public void post(Event event) { |
45 | + events.add(event); | ||
46 | + } | ||
34 | 47 | ||
48 | + @Activate | ||
49 | + public void activate() { | ||
50 | + stopped = false; | ||
51 | + executor.execute(new DispatchLoop()); | ||
52 | + log.info("Started"); | ||
35 | } | 53 | } |
36 | 54 | ||
37 | - @Override | 55 | + @Deactivate |
38 | - public <E extends Event> EventSink<E> getSink(Class<E> eventClass) { | 56 | + public void deactivate() { |
39 | - return null; | 57 | + stopped = true; |
58 | + post(KILL_PILL); | ||
59 | + log.info("Stopped"); | ||
40 | } | 60 | } |
41 | 61 | ||
62 | + // Auxiliary event dispatching loop that feeds off the events queue. | ||
63 | + private class DispatchLoop implements Runnable { | ||
42 | @Override | 64 | @Override |
43 | - public Set<Class<? extends Event>> getSinks() { | 65 | + @SuppressWarnings("unchecked") |
44 | - return null; | 66 | + public void run() { |
67 | + log.info("Dispatch loop initiated"); | ||
68 | + while (!stopped) { | ||
69 | + try { | ||
70 | + // Fetch the next event and if it is the kill-pill, bail | ||
71 | + Event event = events.take(); | ||
72 | + if (event == KILL_PILL) { | ||
73 | + break; | ||
74 | + } | ||
75 | + | ||
76 | + // Locate the sink for the event class and use it to | ||
77 | + // process the event | ||
78 | + EventSink sink = getSink(event.getClass()); | ||
79 | + if (sink != null) { | ||
80 | + sink.process(event); | ||
81 | + } else { | ||
82 | + log.warn("No sink registered for event class {}", | ||
83 | + event.getClass()); | ||
84 | + } | ||
85 | + } catch (Throwable e) { | ||
86 | + log.warn("Error encountered while dispatching event:", e); | ||
45 | } | 87 | } |
88 | + } | ||
89 | + log.info("Dispatch loop terminated"); | ||
90 | + } | ||
91 | + } | ||
92 | + | ||
46 | } | 93 | } | ... | ... |
... | @@ -7,12 +7,12 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -7,12 +7,12 @@ import org.apache.felix.scr.annotations.Deactivate; |
7 | import org.apache.felix.scr.annotations.Service; | 7 | import org.apache.felix.scr.annotations.Service; |
8 | import org.onlab.onos.GreetService; | 8 | import org.onlab.onos.GreetService; |
9 | import org.slf4j.Logger; | 9 | import org.slf4j.Logger; |
10 | -import org.slf4j.LoggerFactory; | ||
11 | 10 | ||
12 | import java.util.HashSet; | 11 | import java.util.HashSet; |
13 | import java.util.Set; | 12 | import java.util.Set; |
14 | 13 | ||
15 | import static com.google.common.base.Preconditions.checkNotNull; | 14 | import static com.google.common.base.Preconditions.checkNotNull; |
15 | +import static org.slf4j.LoggerFactory.getLogger; | ||
16 | 16 | ||
17 | /** | 17 | /** |
18 | * Trivial implementation of the seed service to demonstrate component and | 18 | * Trivial implementation of the seed service to demonstrate component and |
... | @@ -22,7 +22,7 @@ import static com.google.common.base.Preconditions.checkNotNull; | ... | @@ -22,7 +22,7 @@ import static com.google.common.base.Preconditions.checkNotNull; |
22 | @Service | 22 | @Service |
23 | public class GreetManager implements GreetService { | 23 | public class GreetManager implements GreetService { |
24 | 24 | ||
25 | - private final Logger log = LoggerFactory.getLogger(getClass()); | 25 | + private final Logger log = getLogger(getClass()); |
26 | 26 | ||
27 | private final Set<String> names = new HashSet<>(); | 27 | private final Set<String> names = new HashSet<>(); |
28 | 28 | ... | ... |
... | @@ -7,7 +7,8 @@ import org.apache.felix.scr.annotations.Reference; | ... | @@ -7,7 +7,8 @@ import org.apache.felix.scr.annotations.Reference; |
7 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 7 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
8 | import org.onlab.onos.GreetService; | 8 | import org.onlab.onos.GreetService; |
9 | import org.slf4j.Logger; | 9 | import org.slf4j.Logger; |
10 | -import org.slf4j.LoggerFactory; | 10 | + |
11 | +import static org.slf4j.LoggerFactory.getLogger; | ||
11 | 12 | ||
12 | /** | 13 | /** |
13 | * Example of a component that does not provide any service, but consumes one. | 14 | * Example of a component that does not provide any service, but consumes one. |
... | @@ -15,7 +16,7 @@ import org.slf4j.LoggerFactory; | ... | @@ -15,7 +16,7 @@ import org.slf4j.LoggerFactory; |
15 | @Component(immediate = true) | 16 | @Component(immediate = true) |
16 | public class SomeOtherComponent { | 17 | public class SomeOtherComponent { |
17 | 18 | ||
18 | - private final Logger log = LoggerFactory.getLogger(SomeOtherComponent.class); | 19 | + private final Logger log = getLogger(getClass()); |
19 | 20 | ||
20 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 21 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
21 | protected GreetService service; | 22 | protected GreetService service; | ... | ... |
... | @@ -3,6 +3,8 @@ package org.onlab.onos.net.trivial.impl; | ... | @@ -3,6 +3,8 @@ package org.onlab.onos.net.trivial.impl; |
3 | import org.apache.felix.scr.annotations.Activate; | 3 | import org.apache.felix.scr.annotations.Activate; |
4 | import org.apache.felix.scr.annotations.Component; | 4 | import org.apache.felix.scr.annotations.Component; |
5 | import org.apache.felix.scr.annotations.Deactivate; | 5 | import org.apache.felix.scr.annotations.Deactivate; |
6 | +import org.apache.felix.scr.annotations.Reference; | ||
7 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
6 | import org.apache.felix.scr.annotations.Service; | 8 | import org.apache.felix.scr.annotations.Service; |
7 | import org.onlab.onos.event.AbstractListenerManager; | 9 | import org.onlab.onos.event.AbstractListenerManager; |
8 | import org.onlab.onos.event.EventDispatchService; | 10 | import org.onlab.onos.event.EventDispatchService; |
... | @@ -22,11 +24,11 @@ import org.onlab.onos.net.device.PortDescription; | ... | @@ -22,11 +24,11 @@ import org.onlab.onos.net.device.PortDescription; |
22 | import org.onlab.onos.net.provider.AbstractProviderBroker; | 24 | import org.onlab.onos.net.provider.AbstractProviderBroker; |
23 | import org.onlab.onos.net.provider.AbstractProviderService; | 25 | import org.onlab.onos.net.provider.AbstractProviderService; |
24 | import org.slf4j.Logger; | 26 | import org.slf4j.Logger; |
25 | -import org.slf4j.LoggerFactory; | ||
26 | 27 | ||
27 | import java.util.List; | 28 | import java.util.List; |
28 | 29 | ||
29 | import static com.google.common.base.Preconditions.checkNotNull; | 30 | import static com.google.common.base.Preconditions.checkNotNull; |
31 | +import static org.slf4j.LoggerFactory.getLogger; | ||
30 | 32 | ||
31 | /** | 33 | /** |
32 | * Provides basic implementation of the device SB & NB APIs. | 34 | * Provides basic implementation of the device SB & NB APIs. |
... | @@ -42,24 +44,25 @@ public class SimpleDeviceManager | ... | @@ -42,24 +44,25 @@ public class SimpleDeviceManager |
42 | public static final String DEVICE_DESCRIPTION_NULL = "Device description cannot be null"; | 44 | public static final String DEVICE_DESCRIPTION_NULL = "Device description cannot be null"; |
43 | public static final String PORT_DESCRIPTION_NULL = "Port description cannot be null"; | 45 | public static final String PORT_DESCRIPTION_NULL = "Port description cannot be null"; |
44 | 46 | ||
45 | - private Logger log = LoggerFactory.getLogger(SimpleDeviceManager.class); | 47 | + private final Logger log = getLogger(getClass()); |
46 | 48 | ||
47 | private final AbstractListenerManager<DeviceEvent, DeviceListener> | 49 | private final AbstractListenerManager<DeviceEvent, DeviceListener> |
48 | listenerManager = new AbstractListenerManager<>(); | 50 | listenerManager = new AbstractListenerManager<>(); |
49 | 51 | ||
50 | - private EventDispatchService eventDispatcher; | ||
51 | - | ||
52 | private final DeviceStore store = new DeviceStore(); | 52 | private final DeviceStore store = new DeviceStore(); |
53 | 53 | ||
54 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
55 | + private EventDispatchService eventDispatcher; | ||
56 | + | ||
54 | @Activate | 57 | @Activate |
55 | public void activate() { | 58 | public void activate() { |
56 | -// eventDispatcher.addSink(DeviceEvent.class, listenerManager); | 59 | + eventDispatcher.addSink(DeviceEvent.class, listenerManager); |
57 | log.info("Started"); | 60 | log.info("Started"); |
58 | } | 61 | } |
59 | 62 | ||
60 | @Deactivate | 63 | @Deactivate |
61 | public void deactivate() { | 64 | public void deactivate() { |
62 | -// eventDispatcher.removeSink(DeviceEvent.class); | 65 | + eventDispatcher.removeSink(DeviceEvent.class); |
63 | log.info("Stopped"); | 66 | log.info("Stopped"); |
64 | } | 67 | } |
65 | 68 | ... | ... |
... | @@ -3,56 +3,57 @@ package org.onlab.onos.net.trivial.impl; | ... | @@ -3,56 +3,57 @@ package org.onlab.onos.net.trivial.impl; |
3 | import org.apache.felix.scr.annotations.Activate; | 3 | import org.apache.felix.scr.annotations.Activate; |
4 | import org.apache.felix.scr.annotations.Component; | 4 | import org.apache.felix.scr.annotations.Component; |
5 | import org.apache.felix.scr.annotations.Deactivate; | 5 | import org.apache.felix.scr.annotations.Deactivate; |
6 | +import org.apache.felix.scr.annotations.Reference; | ||
7 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
6 | import org.apache.felix.scr.annotations.Service; | 8 | import org.apache.felix.scr.annotations.Service; |
9 | +import org.onlab.onos.event.AbstractListenerManager; | ||
10 | +import org.onlab.onos.event.EventDispatchService; | ||
7 | import org.onlab.onos.net.host.HostDescription; | 11 | import org.onlab.onos.net.host.HostDescription; |
12 | +import org.onlab.onos.net.host.HostEvent; | ||
13 | +import org.onlab.onos.net.host.HostListener; | ||
8 | import org.onlab.onos.net.host.HostProvider; | 14 | import org.onlab.onos.net.host.HostProvider; |
9 | import org.onlab.onos.net.host.HostProviderBroker; | 15 | import org.onlab.onos.net.host.HostProviderBroker; |
10 | import org.onlab.onos.net.host.HostProviderService; | 16 | import org.onlab.onos.net.host.HostProviderService; |
11 | import org.onlab.onos.net.provider.AbstractProviderBroker; | 17 | import org.onlab.onos.net.provider.AbstractProviderBroker; |
12 | import org.onlab.onos.net.provider.AbstractProviderService; | 18 | import org.onlab.onos.net.provider.AbstractProviderService; |
13 | import org.slf4j.Logger; | 19 | import org.slf4j.Logger; |
14 | -import org.slf4j.LoggerFactory; | 20 | + |
21 | +import static org.slf4j.LoggerFactory.getLogger; | ||
15 | 22 | ||
16 | /** | 23 | /** |
17 | * Provides basic implementation of the host SB & NB APIs. | 24 | * Provides basic implementation of the host SB & NB APIs. |
18 | */ | 25 | */ |
19 | @Component(immediate = true) | 26 | @Component(immediate = true) |
20 | @Service | 27 | @Service |
21 | -public class SimpleHostManager implements HostProviderBroker { | 28 | +public class SimpleHostManager |
29 | + extends AbstractProviderBroker<HostProvider, HostProviderService> | ||
30 | + implements HostProviderBroker { | ||
31 | + | ||
32 | + private final Logger log = getLogger(getClass()); | ||
22 | 33 | ||
23 | - private Logger log = LoggerFactory.getLogger(SimpleHostManager.class); | 34 | + private final AbstractListenerManager<HostEvent, HostListener> |
35 | + listenerManager = new AbstractListenerManager<>(); | ||
36 | + | ||
37 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
38 | + private EventDispatchService eventDispatcher; | ||
24 | 39 | ||
25 | - private final HostProviderBroker broker = new InternalBroker(); | ||
26 | 40 | ||
27 | @Activate | 41 | @Activate |
28 | public void activate() { | 42 | public void activate() { |
43 | + eventDispatcher.addSink(HostEvent.class, listenerManager); | ||
29 | log.info("Started"); | 44 | log.info("Started"); |
30 | } | 45 | } |
31 | 46 | ||
32 | @Deactivate | 47 | @Deactivate |
33 | public void deactivate() { | 48 | public void deactivate() { |
49 | + eventDispatcher.removeSink(HostEvent.class); | ||
34 | log.info("Stopped"); | 50 | log.info("Stopped"); |
35 | } | 51 | } |
36 | 52 | ||
37 | @Override | 53 | @Override |
38 | - public HostProviderService register(HostProvider provider) { | ||
39 | - return broker.register(provider); | ||
40 | - } | ||
41 | - | ||
42 | - @Override | ||
43 | - public void unregister(HostProvider provider) { | ||
44 | - broker.unregister(provider); | ||
45 | - } | ||
46 | - | ||
47 | - // Internal delegate for tracking various providers and issuing them a | ||
48 | - // personalized provider service. | ||
49 | - private class InternalBroker extends AbstractProviderBroker<HostProvider, HostProviderService> | ||
50 | - implements HostProviderBroker { | ||
51 | - @Override | ||
52 | protected HostProviderService createProviderService(HostProvider provider) { | 54 | protected HostProviderService createProviderService(HostProvider provider) { |
53 | return new InternalHostProviderService(provider); | 55 | return new InternalHostProviderService(provider); |
54 | } | 56 | } |
55 | - } | ||
56 | 57 | ||
57 | // Personalized host provider service issued to the supplied provider. | 58 | // Personalized host provider service issued to the supplied provider. |
58 | private class InternalHostProviderService extends AbstractProviderService<HostProvider> | 59 | private class InternalHostProviderService extends AbstractProviderService<HostProvider> | ... | ... |
... | @@ -3,56 +3,56 @@ package org.onlab.onos.net.trivial.impl; | ... | @@ -3,56 +3,56 @@ package org.onlab.onos.net.trivial.impl; |
3 | import org.apache.felix.scr.annotations.Activate; | 3 | import org.apache.felix.scr.annotations.Activate; |
4 | import org.apache.felix.scr.annotations.Component; | 4 | import org.apache.felix.scr.annotations.Component; |
5 | import org.apache.felix.scr.annotations.Deactivate; | 5 | import org.apache.felix.scr.annotations.Deactivate; |
6 | +import org.apache.felix.scr.annotations.Reference; | ||
7 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
6 | import org.apache.felix.scr.annotations.Service; | 8 | import org.apache.felix.scr.annotations.Service; |
9 | +import org.onlab.onos.event.AbstractListenerManager; | ||
10 | +import org.onlab.onos.event.EventDispatchService; | ||
7 | import org.onlab.onos.net.link.LinkDescription; | 11 | import org.onlab.onos.net.link.LinkDescription; |
12 | +import org.onlab.onos.net.link.LinkEvent; | ||
13 | +import org.onlab.onos.net.link.LinkListener; | ||
8 | import org.onlab.onos.net.link.LinkProvider; | 14 | import org.onlab.onos.net.link.LinkProvider; |
9 | import org.onlab.onos.net.link.LinkProviderBroker; | 15 | import org.onlab.onos.net.link.LinkProviderBroker; |
10 | import org.onlab.onos.net.link.LinkProviderService; | 16 | import org.onlab.onos.net.link.LinkProviderService; |
11 | import org.onlab.onos.net.provider.AbstractProviderBroker; | 17 | import org.onlab.onos.net.provider.AbstractProviderBroker; |
12 | import org.onlab.onos.net.provider.AbstractProviderService; | 18 | import org.onlab.onos.net.provider.AbstractProviderService; |
13 | import org.slf4j.Logger; | 19 | import org.slf4j.Logger; |
14 | -import org.slf4j.LoggerFactory; | 20 | + |
21 | +import static org.slf4j.LoggerFactory.getLogger; | ||
15 | 22 | ||
16 | /** | 23 | /** |
17 | * Provides basic implementation of the link SB & NB APIs. | 24 | * Provides basic implementation of the link SB & NB APIs. |
18 | */ | 25 | */ |
19 | @Component(immediate = true) | 26 | @Component(immediate = true) |
20 | @Service | 27 | @Service |
21 | -public class SimpleLinkManager implements LinkProviderBroker { | 28 | +public class SimpleLinkManager |
29 | + extends AbstractProviderBroker<LinkProvider, LinkProviderService> | ||
30 | + implements LinkProviderBroker { | ||
31 | + | ||
32 | + private final Logger log = getLogger(getClass()); | ||
22 | 33 | ||
23 | - private Logger log = LoggerFactory.getLogger(SimpleLinkManager.class); | 34 | + private final AbstractListenerManager<LinkEvent, LinkListener> |
35 | + listenerManager = new AbstractListenerManager<>(); | ||
24 | 36 | ||
25 | - private final LinkProviderBroker broker = new InternalBroker(); | 37 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
38 | + private EventDispatchService eventDispatcher; | ||
26 | 39 | ||
27 | @Activate | 40 | @Activate |
28 | public void activate() { | 41 | public void activate() { |
42 | + eventDispatcher.addSink(LinkEvent.class, listenerManager); | ||
29 | log.info("Started"); | 43 | log.info("Started"); |
30 | } | 44 | } |
31 | 45 | ||
32 | @Deactivate | 46 | @Deactivate |
33 | public void deactivate() { | 47 | public void deactivate() { |
48 | + eventDispatcher.removeSink(LinkEvent.class); | ||
34 | log.info("Stopped"); | 49 | log.info("Stopped"); |
35 | } | 50 | } |
36 | 51 | ||
37 | @Override | 52 | @Override |
38 | - public LinkProviderService register(LinkProvider provider) { | ||
39 | - return broker.register(provider); | ||
40 | - } | ||
41 | - | ||
42 | - @Override | ||
43 | - public void unregister(LinkProvider provider) { | ||
44 | - broker.unregister(provider); | ||
45 | - } | ||
46 | - | ||
47 | - // Internal delegate for tracking various providers and issuing them a | ||
48 | - // personalized provider service. | ||
49 | - private class InternalBroker extends AbstractProviderBroker<LinkProvider, LinkProviderService> | ||
50 | - implements LinkProviderBroker { | ||
51 | - @Override | ||
52 | protected LinkProviderService createProviderService(LinkProvider provider) { | 53 | protected LinkProviderService createProviderService(LinkProvider provider) { |
53 | return new InternalLinkProviderService(provider); | 54 | return new InternalLinkProviderService(provider); |
54 | } | 55 | } |
55 | - } | ||
56 | 56 | ||
57 | // Personalized link provider service issued to the supplied provider. | 57 | // Personalized link provider service issued to the supplied provider. |
58 | private class InternalLinkProviderService extends AbstractProviderService<LinkProvider> | 58 | private class InternalLinkProviderService extends AbstractProviderService<LinkProvider> | ... | ... |
... | @@ -26,6 +26,11 @@ | ... | @@ -26,6 +26,11 @@ |
26 | <groupId>com.google.guava</groupId> | 26 | <groupId>com.google.guava</groupId> |
27 | <artifactId>guava</artifactId> | 27 | <artifactId>guava</artifactId> |
28 | </dependency> | 28 | </dependency> |
29 | + | ||
30 | + <dependency> | ||
31 | + <groupId>org.onlab.onos</groupId> | ||
32 | + <artifactId>onlab-misc</artifactId> | ||
33 | + </dependency> | ||
29 | </dependencies> | 34 | </dependencies> |
30 | 35 | ||
31 | <build> | 36 | <build> | ... | ... |
... | @@ -112,6 +112,12 @@ | ... | @@ -112,6 +112,12 @@ |
112 | <!-- ONOS related --> | 112 | <!-- ONOS related --> |
113 | <dependency> | 113 | <dependency> |
114 | <groupId>org.onlab.onos</groupId> | 114 | <groupId>org.onlab.onos</groupId> |
115 | + <artifactId>onlab-misc</artifactId> | ||
116 | + <version>${project.version}</version> | ||
117 | + </dependency> | ||
118 | + | ||
119 | + <dependency> | ||
120 | + <groupId>org.onlab.onos</groupId> | ||
115 | <artifactId>onos-api</artifactId> | 121 | <artifactId>onos-api</artifactId> |
116 | <version>${project.version}</version> | 122 | <version>${project.version}</version> |
117 | </dependency> | 123 | </dependency> |
... | @@ -260,13 +266,13 @@ | ... | @@ -260,13 +266,13 @@ |
260 | <group> | 266 | <group> |
261 | <title>Network Model & Services</title> | 267 | <title>Network Model & Services</title> |
262 | <packages> | 268 | <packages> |
263 | - org.onlab.onos.* | 269 | + org.onlab.onos:org.onlab.onos.* |
264 | </packages> | 270 | </packages> |
265 | </group> | 271 | </group> |
266 | <group> | 272 | <group> |
267 | <title>Core Subsystems</title> | 273 | <title>Core Subsystems</title> |
268 | <packages> | 274 | <packages> |
269 | - org.onlab.onos.net.trivial.impl:org.onlab.onos.net.*.impl | 275 | + org.onlab.onos.net.trivial.impl:org.onlab.onos.net.*.impl:org.onlab.onos.impl:org.onlab.onos.event.impl |
270 | </packages> | 276 | </packages> |
271 | </group> | 277 | </group> |
272 | <group> | 278 | <group> | ... | ... |
providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
... | @@ -12,8 +12,10 @@ import org.onlab.onos.net.device.DeviceProviderBroker; | ... | @@ -12,8 +12,10 @@ import org.onlab.onos.net.device.DeviceProviderBroker; |
12 | import org.onlab.onos.net.device.DeviceProviderService; | 12 | import org.onlab.onos.net.device.DeviceProviderService; |
13 | import org.onlab.onos.net.provider.AbstractProvider; | 13 | import org.onlab.onos.net.provider.AbstractProvider; |
14 | import org.onlab.onos.net.provider.ProviderId; | 14 | import org.onlab.onos.net.provider.ProviderId; |
15 | +import org.onlab.onos.of.controller.OpenFlowController; | ||
15 | import org.slf4j.Logger; | 16 | import org.slf4j.Logger; |
16 | -import org.slf4j.LoggerFactory; | 17 | + |
18 | +import static org.slf4j.LoggerFactory.getLogger; | ||
17 | 19 | ||
18 | /** | 20 | /** |
19 | * Provider which uses an OpenFlow controller to detect network | 21 | * Provider which uses an OpenFlow controller to detect network |
... | @@ -22,16 +24,15 @@ import org.slf4j.LoggerFactory; | ... | @@ -22,16 +24,15 @@ import org.slf4j.LoggerFactory; |
22 | @Component(immediate = true) | 24 | @Component(immediate = true) |
23 | public class OpenFlowDeviceProvider extends AbstractProvider implements DeviceProvider { | 25 | public class OpenFlowDeviceProvider extends AbstractProvider implements DeviceProvider { |
24 | 26 | ||
25 | - private final Logger log = LoggerFactory.getLogger(OpenFlowDeviceProvider.class); | 27 | + private final Logger log = getLogger(getClass()); |
26 | 28 | ||
27 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 29 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
28 | protected DeviceProviderBroker providerBroker; | 30 | protected DeviceProviderBroker providerBroker; |
29 | 31 | ||
30 | - private DeviceProviderService providerService; | 32 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
31 | - | 33 | + protected OpenFlowController controller; |
32 | -// @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
33 | -// protected OpenFlowController controller; | ||
34 | 34 | ||
35 | + private DeviceProviderService providerService; | ||
35 | 36 | ||
36 | /** | 37 | /** |
37 | * Creates an OpenFlow device provider. | 38 | * Creates an OpenFlow device provider. | ... | ... |
... | @@ -11,8 +11,10 @@ import org.onlab.onos.net.host.HostProviderBroker; | ... | @@ -11,8 +11,10 @@ import org.onlab.onos.net.host.HostProviderBroker; |
11 | import org.onlab.onos.net.host.HostProviderService; | 11 | import org.onlab.onos.net.host.HostProviderService; |
12 | import org.onlab.onos.net.provider.AbstractProvider; | 12 | import org.onlab.onos.net.provider.AbstractProvider; |
13 | import org.onlab.onos.net.provider.ProviderId; | 13 | import org.onlab.onos.net.provider.ProviderId; |
14 | +import org.onlab.onos.of.controller.OpenFlowController; | ||
14 | import org.slf4j.Logger; | 15 | import org.slf4j.Logger; |
15 | -import org.slf4j.LoggerFactory; | 16 | + |
17 | +import static org.slf4j.LoggerFactory.getLogger; | ||
16 | 18 | ||
17 | /** | 19 | /** |
18 | * Provider which uses an OpenFlow controller to detect network | 20 | * Provider which uses an OpenFlow controller to detect network |
... | @@ -21,15 +23,15 @@ import org.slf4j.LoggerFactory; | ... | @@ -21,15 +23,15 @@ import org.slf4j.LoggerFactory; |
21 | @Component(immediate = true) | 23 | @Component(immediate = true) |
22 | public class OpenFlowHostProvider extends AbstractProvider implements HostProvider { | 24 | public class OpenFlowHostProvider extends AbstractProvider implements HostProvider { |
23 | 25 | ||
24 | - private final Logger log = LoggerFactory.getLogger(OpenFlowHostProvider.class); | 26 | + private final Logger log = getLogger(getClass()); |
25 | 27 | ||
26 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 28 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
27 | protected HostProviderBroker providerBroker; | 29 | protected HostProviderBroker providerBroker; |
28 | 30 | ||
29 | - private HostProviderService providerService; | 31 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
32 | + protected OpenFlowController controller; | ||
30 | 33 | ||
31 | -// @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 34 | + private HostProviderService providerService; |
32 | -// protected OpenFlowController controller; | ||
33 | 35 | ||
34 | /** | 36 | /** |
35 | * Creates an OpenFlow host provider. | 37 | * Creates an OpenFlow host provider. | ... | ... |
... | @@ -10,8 +10,10 @@ import org.onlab.onos.net.link.LinkProviderBroker; | ... | @@ -10,8 +10,10 @@ import org.onlab.onos.net.link.LinkProviderBroker; |
10 | import org.onlab.onos.net.link.LinkProviderService; | 10 | import org.onlab.onos.net.link.LinkProviderService; |
11 | import org.onlab.onos.net.provider.AbstractProvider; | 11 | import org.onlab.onos.net.provider.AbstractProvider; |
12 | import org.onlab.onos.net.provider.ProviderId; | 12 | import org.onlab.onos.net.provider.ProviderId; |
13 | +import org.onlab.onos.of.controller.OpenFlowController; | ||
13 | import org.slf4j.Logger; | 14 | import org.slf4j.Logger; |
14 | -import org.slf4j.LoggerFactory; | 15 | + |
16 | +import static org.slf4j.LoggerFactory.getLogger; | ||
15 | 17 | ||
16 | /** | 18 | /** |
17 | * Provider which uses an OpenFlow controller to detect network | 19 | * Provider which uses an OpenFlow controller to detect network |
... | @@ -20,15 +22,15 @@ import org.slf4j.LoggerFactory; | ... | @@ -20,15 +22,15 @@ import org.slf4j.LoggerFactory; |
20 | @Component(immediate = true) | 22 | @Component(immediate = true) |
21 | public class OpenFlowLinkProvider extends AbstractProvider implements LinkProvider { | 23 | public class OpenFlowLinkProvider extends AbstractProvider implements LinkProvider { |
22 | 24 | ||
23 | - private final Logger log = LoggerFactory.getLogger(OpenFlowLinkProvider.class); | 25 | + private final Logger log = getLogger(getClass()); |
24 | 26 | ||
25 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 27 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
26 | protected LinkProviderBroker providerBroker; | 28 | protected LinkProviderBroker providerBroker; |
27 | 29 | ||
28 | - private LinkProviderService providerService; | 30 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
31 | + protected OpenFlowController controller; | ||
29 | 32 | ||
30 | -// @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 33 | + private LinkProviderService providerService; |
31 | -// protected OpenFlowController controller; | ||
32 | 34 | ||
33 | /** | 35 | /** |
34 | * Creates an OpenFlow link provider. | 36 | * Creates an OpenFlow link provider. | ... | ... |
... | @@ -24,7 +24,11 @@ | ... | @@ -24,7 +24,11 @@ |
24 | <dependency> | 24 | <dependency> |
25 | <groupId>org.onlab.onos</groupId> | 25 | <groupId>org.onlab.onos</groupId> |
26 | <artifactId>onos-api</artifactId> | 26 | <artifactId>onos-api</artifactId> |
27 | - <version>${project.version}</version> | 27 | + </dependency> |
28 | + | ||
29 | + <dependency> | ||
30 | + <groupId>org.onlab.onos</groupId> | ||
31 | + <artifactId>onlab-misc</artifactId> | ||
28 | </dependency> | 32 | </dependency> |
29 | 33 | ||
30 | <dependency> | 34 | <dependency> | ... | ... |
utils/misc/pom.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
3 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
4 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | ||
5 | + <modelVersion>4.0.0</modelVersion> | ||
6 | + | ||
7 | + <parent> | ||
8 | + <groupId>org.onlab.onos</groupId> | ||
9 | + <artifactId>onlab-utils</artifactId> | ||
10 | + <version>1.0.0-SNAPSHOT</version> | ||
11 | + <relativePath>../pom.xml</relativePath> | ||
12 | + </parent> | ||
13 | + | ||
14 | + <artifactId>onlab-misc</artifactId> | ||
15 | + <packaging>bundle</packaging> | ||
16 | + | ||
17 | + <description>Miscellaneous ON.Lab utilities</description> | ||
18 | + | ||
19 | + <dependencies> | ||
20 | + </dependencies> | ||
21 | + | ||
22 | +</project> |
1 | +package org.onlab.util; | ||
2 | + | ||
3 | +import com.google.common.util.concurrent.ThreadFactoryBuilder; | ||
4 | + | ||
5 | +import java.util.concurrent.ThreadFactory; | ||
6 | + | ||
7 | +public abstract class Tools { | ||
8 | + | ||
9 | + private Tools() { | ||
10 | + } | ||
11 | + | ||
12 | + /** | ||
13 | + * Returns a thread factory that produces threads named according to the | ||
14 | + * supplied name pattern. | ||
15 | + * | ||
16 | + * @param pattern name pattern | ||
17 | + * @return thread factory | ||
18 | + */ | ||
19 | + public static ThreadFactory namedThreads(String pattern) { | ||
20 | + return new ThreadFactoryBuilder().setNameFormat(pattern).build(); | ||
21 | + } | ||
22 | + | ||
23 | +} |
-
Please register or login to post a comment