blob: 1f97ef87c54455ca09edbd510daa34a5d363dd97 [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.link.LinkDescription;
8import org.onlab.onos.net.link.LinkProvider;
9import org.onlab.onos.net.link.LinkProviderBroker;
10import org.onlab.onos.net.link.LinkProviderService;
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 link SB & NB APIs.
18 */
19@Component(immediate = true)
20@Service
21public class SimpleLinkManager implements LinkProviderBroker {
22
23 private Logger log = LoggerFactory.getLogger(SimpleLinkManager.class);
24
25 private final LinkProviderBroker 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 LinkProviderService register(LinkProvider provider) {
39 log.info("Registering provider {}", provider.id());
40 return broker.register(provider);
41 }
42
43 @Override
44 public void unregister(LinkProvider 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<LinkProvider, LinkProviderService>
52 implements LinkProviderBroker {
53 @Override
54 protected LinkProviderService createProviderService(LinkProvider provider) {
55 return new InternalLinkProviderService(provider);
56 }
57 }
58
59 // Personalized link provider service issued to the supplied provider.
60 private class InternalLinkProviderService extends AbstractProviderService<LinkProvider>
61 implements LinkProviderService {
62
63 public InternalLinkProviderService(LinkProvider provider) {
64 super(provider);
65 }
66
67 @Override
68 public void linkDetected(LinkDescription linkDescription) {
69 log.info("Link {} detected", linkDescription);
70 }
71
72 @Override
73 public void linkVanished(LinkDescription linkDescription) {
74 log.info("Link {} vanished", linkDescription);
75 }
76 }
77}