blob: 8e16877c8acadcd9a8e4e27f28a0ad710e1f5995 [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;
6import org.apache.felix.scr.annotations.Service;
7import org.onlab.onos.net.host.HostDescription;
8import org.onlab.onos.net.host.HostProvider;
9import org.onlab.onos.net.host.HostProviderBroker;
10import org.onlab.onos.net.host.HostProviderService;
11import org.onlab.onos.net.provider.AbstractProviderBroker;
12import org.onlab.onos.net.provider.AbstractProviderService;
13import org.slf4j.Logger;
14import org.slf4j.LoggerFactory;
15
16/**
17 * Provides basic implementation of the host SB & NB APIs.
18 */
19@Component(immediate = true)
20@Service
21public class SimpleHostManager implements HostProviderBroker {
22
23 private Logger log = LoggerFactory.getLogger(SimpleHostManager.class);
24
25 private final HostProviderBroker broker = new InternalBroker();
26
27 @Activate
28 public void activate() {
29 log.info("Started");
30 }
31
32 @Deactivate
33 public void deactivate() {
34 log.info("Stopped");
35 }
36
37 @Override
38 public HostProviderService register(HostProvider provider) {
39 log.info("Registering provider {}", provider.id());
40 return broker.register(provider);
41 }
42
43 @Override
44 public void unregister(HostProvider provider) {
45 log.info("Unregistering provider {}", provider.id());
46 broker.unregister(provider);
47 }
48
49 // Internal delegate for tracking various providers and issuing them a
50 // personalized provider service.
51 private class InternalBroker extends AbstractProviderBroker<HostProvider, HostProviderService>
52 implements HostProviderBroker {
53 @Override
54 protected HostProviderService createProviderService(HostProvider provider) {
55 return new InternalHostProviderService(provider);
56 }
57 }
58
59 // Personalized host provider service issued to the supplied provider.
60 private class InternalHostProviderService extends AbstractProviderService<HostProvider>
61 implements HostProviderService {
62
63 public InternalHostProviderService(HostProvider provider) {
64 super(provider);
65 }
66
67 @Override
68 public void hostDetected(HostDescription hostDescription) {
69 log.info("Host {} detected", hostDescription);
70 }
71
72 @Override
73 public void hostVanished(HostDescription hostDescription) {
74 log.info("Host {} vanished", hostDescription);
75 }
76 }
77}