diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProvider.java b/net/api/src/main/java/org/onlab/onos/net/host/HostProvider.java index 04c10606ea..8b928838f1 100644 --- a/net/api/src/main/java/org/onlab/onos/net/host/HostProvider.java +++ b/net/api/src/main/java/org/onlab/onos/net/host/HostProvider.java @@ -14,7 +14,7 @@ public interface HostProvider extends Provider { * Triggers an asynchronous probe of the specified host, intended to * determine whether the host is present or not. An indirect result of this * should be invocation of {@link org.onlab.onos.net.host.HostProviderService#hostDetected(HostDescription)} or - * {@link org.onlab.onos.net.host.HostProviderService#hostNotDetected(HostDescription)} + * {@link org.onlab.onos.net.host.HostProviderService#hostVanished(HostDescription)} * at some later point in time. * * @param host host to probe diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java b/net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java index 4c4859f244..76c2aad20c 100644 --- a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java +++ b/net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java @@ -20,6 +20,6 @@ public interface HostProviderService extends ProviderService { * * @param hostDescription description of host */ - void hostNotDetected(HostDescription hostDescription); + void hostVanished(HostDescription hostDescription); } diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java index 190ee00590..7969022afe 100644 --- a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java +++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java @@ -8,17 +8,17 @@ import org.onlab.onos.net.provider.ProviderService; public interface LinkProviderService extends ProviderService { /** - * Signals that an infrastructure link has been connected. + * Signals that an infrastructure link has been detected. * * @param linkDescription link information */ - void linkConnected(LinkDescription linkDescription); + void linkDetected(LinkDescription linkDescription); /** - * Signals that an infrastructure link has been disconnected. + * Signals that an infrastructure link has disappeared. * * @param linkDescription link information */ - void linkDisconnected(LinkDescription linkDescription); + void linkVanished(LinkDescription linkDescription); } diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java new file mode 100644 index 0000000000..8e16877c8a --- /dev/null +++ b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java @@ -0,0 +1,77 @@ +package org.onlab.onos.net.trivial.impl; + +import org.apache.felix.scr.annotations.Activate; +import org.apache.felix.scr.annotations.Component; +import org.apache.felix.scr.annotations.Deactivate; +import org.apache.felix.scr.annotations.Service; +import org.onlab.onos.net.host.HostDescription; +import org.onlab.onos.net.host.HostProvider; +import org.onlab.onos.net.host.HostProviderBroker; +import org.onlab.onos.net.host.HostProviderService; +import org.onlab.onos.net.provider.AbstractProviderBroker; +import org.onlab.onos.net.provider.AbstractProviderService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Provides basic implementation of the host SB & NB APIs. + */ +@Component(immediate = true) +@Service +public class SimpleHostManager implements HostProviderBroker { + + private Logger log = LoggerFactory.getLogger(SimpleHostManager.class); + + private final HostProviderBroker broker = new InternalBroker(); + + @Activate + public void activate() { + log.info("Started"); + } + + @Deactivate + public void deactivate() { + log.info("Stopped"); + } + + @Override + public HostProviderService register(HostProvider provider) { + log.info("Registering provider {}", provider.id()); + return broker.register(provider); + } + + @Override + public void unregister(HostProvider provider) { + log.info("Unregistering provider {}", provider.id()); + broker.unregister(provider); + } + + // Internal delegate for tracking various providers and issuing them a + // personalized provider service. + private class InternalBroker extends AbstractProviderBroker + implements HostProviderBroker { + @Override + protected HostProviderService createProviderService(HostProvider provider) { + return new InternalHostProviderService(provider); + } + } + + // Personalized host provider service issued to the supplied provider. + private class InternalHostProviderService extends AbstractProviderService + implements HostProviderService { + + public InternalHostProviderService(HostProvider provider) { + super(provider); + } + + @Override + public void hostDetected(HostDescription hostDescription) { + log.info("Host {} detected", hostDescription); + } + + @Override + public void hostVanished(HostDescription hostDescription) { + log.info("Host {} vanished", hostDescription); + } + } +} diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java new file mode 100644 index 0000000000..1f97ef87c5 --- /dev/null +++ b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java @@ -0,0 +1,77 @@ +package org.onlab.onos.net.trivial.impl; + +import org.apache.felix.scr.annotations.Activate; +import org.apache.felix.scr.annotations.Component; +import org.apache.felix.scr.annotations.Deactivate; +import org.apache.felix.scr.annotations.Service; +import org.onlab.onos.net.link.LinkDescription; +import org.onlab.onos.net.link.LinkProvider; +import org.onlab.onos.net.link.LinkProviderBroker; +import org.onlab.onos.net.link.LinkProviderService; +import org.onlab.onos.net.provider.AbstractProviderBroker; +import org.onlab.onos.net.provider.AbstractProviderService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Provides basic implementation of the link SB & NB APIs. + */ +@Component(immediate = true) +@Service +public class SimpleLinkManager implements LinkProviderBroker { + + private Logger log = LoggerFactory.getLogger(SimpleLinkManager.class); + + private final LinkProviderBroker broker = new InternalBroker(); + + @Activate + public void activate() { + log.info("Started"); + } + + @Deactivate + public void deactivate() { + log.info("Stopped"); + } + + @Override + public LinkProviderService register(LinkProvider provider) { + log.info("Registering provider {}", provider.id()); + return broker.register(provider); + } + + @Override + public void unregister(LinkProvider provider) { + log.info("Unregistering provider {}", provider.id()); + broker.unregister(provider); + } + + // Internal delegate for tracking various providers and issuing them a + // personalized provider service. + private class InternalBroker extends AbstractProviderBroker + implements LinkProviderBroker { + @Override + protected LinkProviderService createProviderService(LinkProvider provider) { + return new InternalLinkProviderService(provider); + } + } + + // Personalized link provider service issued to the supplied provider. + private class InternalLinkProviderService extends AbstractProviderService + implements LinkProviderService { + + public InternalLinkProviderService(LinkProvider provider) { + super(provider); + } + + @Override + public void linkDetected(LinkDescription linkDescription) { + log.info("Link {} detected", linkDescription); + } + + @Override + public void linkVanished(LinkDescription linkDescription) { + log.info("Link {} vanished", linkDescription); + } + } +}