blob: 6283e0b790d907503efc4e470c4649ba338bae59 [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) {
tomdb0d03f2014-08-27 16:34:15 -070039 return broker.register(provider);
40 }
41
42 @Override
43 public void unregister(LinkProvider provider) {
tomdb0d03f2014-08-27 16:34:15 -070044 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 return new InternalLinkProviderService(provider);
54 }
55 }
56
57 // Personalized link provider service issued to the supplied provider.
58 private class InternalLinkProviderService extends AbstractProviderService<LinkProvider>
59 implements LinkProviderService {
60
61 public InternalLinkProviderService(LinkProvider provider) {
62 super(provider);
63 }
64
65 @Override
66 public void linkDetected(LinkDescription linkDescription) {
67 log.info("Link {} detected", linkDescription);
68 }
69
70 @Override
71 public void linkVanished(LinkDescription linkDescription) {
72 log.info("Link {} vanished", linkDescription);
73 }
74 }
75}