2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.netconf.server.osgi;
10 import java.util.Optional;
11 import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
12 import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
13 import org.opendaylight.netconf.api.monitoring.SessionListener;
14 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
15 import org.opendaylight.netconf.notifications.BaseNotificationPublisherRegistration;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Capabilities;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Schemas;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Sessions;
19 import org.opendaylight.yangtools.concepts.Registration;
21 public class NetconfMonitoringServiceImpl implements NetconfMonitoringService, AutoCloseable {
22 private final NetconfCapabilityMonitoringService capabilityMonitoring;
23 private final NetconfSessionMonitoringService sessionMonitoring;
25 public NetconfMonitoringServiceImpl(final NetconfOperationServiceFactory opProvider) {
26 this(opProvider, Optional.empty(), 0);
29 public NetconfMonitoringServiceImpl(final NetconfOperationServiceFactory opProvider,
30 final ScheduledThreadPool threadPool,
31 final long updateInterval) {
32 this(opProvider, Optional.ofNullable(threadPool), updateInterval);
35 public NetconfMonitoringServiceImpl(final NetconfOperationServiceFactory opProvider,
36 final Optional<ScheduledThreadPool> threadPool,
37 final long updateInterval) {
38 capabilityMonitoring = new NetconfCapabilityMonitoringService(opProvider);
39 sessionMonitoring = new NetconfSessionMonitoringService(threadPool, updateInterval);
44 public Sessions getSessions() {
45 return sessionMonitoring.getSessions();
49 public SessionListener getSessionListener() {
50 return sessionMonitoring;
54 public Schemas getSchemas() {
55 return capabilityMonitoring.getSchemas();
59 public String getSchemaForCapability(final String moduleName, final Optional<String> revision) {
60 return capabilityMonitoring.getSchemaForModuleRevision(moduleName, revision);
64 public Capabilities getCapabilities() {
65 return capabilityMonitoring.getCapabilities();
69 public Registration registerCapabilitiesListener(final CapabilitiesListener listener) {
70 return capabilityMonitoring.registerListener(listener);
74 public Registration registerSessionsListener(final SessionsListener listener) {
75 return sessionMonitoring.registerListener(listener);
78 public void setNotificationPublisher(final BaseNotificationPublisherRegistration notificationPublisher) {
79 capabilityMonitoring.setNotificationPublisher(notificationPublisher);
84 capabilityMonitoring.close();
85 sessionMonitoring.close();