blob: 17849b1a7155f654989f556e25209f5741b3fdc7 [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;
tom96dfcab2014-08-28 09:26:03 -07009import org.onlab.onos.event.AbstractListenerRegistry;
10import org.onlab.onos.event.EventDeliveryService;
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;
tom96dfcab2014-08-28 09:26:03 -070015import org.onlab.onos.net.host.HostProviderRegistry;
tomdb0d03f2014-08-27 16:34:15 -070016import org.onlab.onos.net.host.HostProviderService;
tom96dfcab2014-08-28 09:26:03 -070017import org.onlab.onos.net.provider.AbstractProviderRegistry;
tomdb0d03f2014-08-27 16:34:15 -070018import 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
tom96dfcab2014-08-28 09:26:03 -070029 extends AbstractProviderRegistry<HostProvider, HostProviderService>
30 implements HostProviderRegistry {
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
tom96dfcab2014-08-28 09:26:03 -070034 private final AbstractListenerRegistry<HostEvent, HostListener>
35 listenerRegistry = new AbstractListenerRegistry<>();
tom5f38b3a2014-08-27 23:50:54 -070036
37 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
tom96dfcab2014-08-28 09:26:03 -070038 private EventDeliveryService eventDispatcher;
tom5f38b3a2014-08-27 23:50:54 -070039
tomdb0d03f2014-08-27 16:34:15 -070040
41 @Activate
42 public void activate() {
tom96dfcab2014-08-28 09:26:03 -070043 eventDispatcher.addSink(HostEvent.class, listenerRegistry);
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
tomcfde0622014-09-09 11:02:42 -070062 InternalHostProviderService(HostProvider provider) {
tomdb0d03f2014-08-27 16:34:15 -070063 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}