blob: 0c0c9833865b92b0b246487a754c274f6619ce64 [file] [log] [blame]
tomdb0d03f2014-08-27 16:34:15 -07001package org.onlab.onos.net.trivial.impl;
2
3import org.apache.felix.scr.annotations.Activate;
4import org.apache.felix.scr.annotations.Component;
5import org.apache.felix.scr.annotations.Deactivate;
tom5f38b3a2014-08-27 23:50:54 -07006import org.apache.felix.scr.annotations.Reference;
7import org.apache.felix.scr.annotations.ReferenceCardinality;
tomdb0d03f2014-08-27 16:34:15 -07008import org.apache.felix.scr.annotations.Service;
tom5f38b3a2014-08-27 23:50:54 -07009import org.onlab.onos.event.AbstractListenerManager;
10import org.onlab.onos.event.EventDispatchService;
tomdb0d03f2014-08-27 16:34:15 -070011import org.onlab.onos.net.host.HostDescription;
tom5f38b3a2014-08-27 23:50:54 -070012import org.onlab.onos.net.host.HostEvent;
13import org.onlab.onos.net.host.HostListener;
tomdb0d03f2014-08-27 16:34:15 -070014import org.onlab.onos.net.host.HostProvider;
15import org.onlab.onos.net.host.HostProviderBroker;
16import org.onlab.onos.net.host.HostProviderService;
17import org.onlab.onos.net.provider.AbstractProviderBroker;
18import org.onlab.onos.net.provider.AbstractProviderService;
19import org.slf4j.Logger;
tom5f38b3a2014-08-27 23:50:54 -070020
21import static org.slf4j.LoggerFactory.getLogger;
tomdb0d03f2014-08-27 16:34:15 -070022
23/**
24 * Provides basic implementation of the host SB & NB APIs.
25 */
26@Component(immediate = true)
27@Service
tom5f38b3a2014-08-27 23:50:54 -070028public class SimpleHostManager
29 extends AbstractProviderBroker<HostProvider, HostProviderService>
30 implements HostProviderBroker {
tomdb0d03f2014-08-27 16:34:15 -070031
tom5f38b3a2014-08-27 23:50:54 -070032 private final Logger log = getLogger(getClass());
tomdb0d03f2014-08-27 16:34:15 -070033
tom5f38b3a2014-08-27 23:50:54 -070034 private final AbstractListenerManager<HostEvent, HostListener>
35 listenerManager = new AbstractListenerManager<>();
36
37 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
38 private EventDispatchService eventDispatcher;
39
tomdb0d03f2014-08-27 16:34:15 -070040
41 @Activate
42 public void activate() {
tom5f38b3a2014-08-27 23:50:54 -070043 eventDispatcher.addSink(HostEvent.class, listenerManager);
tomdb0d03f2014-08-27 16:34:15 -070044 log.info("Started");
45 }
46
47 @Deactivate
48 public void deactivate() {
tom5f38b3a2014-08-27 23:50:54 -070049 eventDispatcher.removeSink(HostEvent.class);
tomdb0d03f2014-08-27 16:34:15 -070050 log.info("Stopped");
51 }
52
53 @Override
tom5f38b3a2014-08-27 23:50:54 -070054 protected HostProviderService createProviderService(HostProvider provider) {
55 return new InternalHostProviderService(provider);
tomdb0d03f2014-08-27 16:34:15 -070056 }
57
58 // Personalized host provider service issued to the supplied provider.
59 private class InternalHostProviderService extends AbstractProviderService<HostProvider>
60 implements HostProviderService {
61
62 public InternalHostProviderService(HostProvider provider) {
63 super(provider);
64 }
65
66 @Override
67 public void hostDetected(HostDescription hostDescription) {
68 log.info("Host {} detected", hostDescription);
69 }
70
71 @Override
72 public void hostVanished(HostDescription hostDescription) {
73 log.info("Host {} vanished", hostDescription);
74 }
75 }
76}