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.impl.osgi;
10 import com.google.common.base.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;
20 public class NetconfMonitoringServiceImpl implements NetconfMonitoringService, AutoCloseable {
22 private final NetconfCapabilityMonitoringService capabilityMonitoring;
23 private final NetconfSessionMonitoringService sessionMonitoring;
25 public NetconfMonitoringServiceImpl(NetconfOperationServiceFactory opProvider) {
26 this(opProvider, Optional.absent(), 0);
29 public NetconfMonitoringServiceImpl(NetconfOperationServiceFactory opProvider,
30 Optional<ScheduledThreadPool> threadPool,
31 long updateInterval) {
32 this.capabilityMonitoring = new NetconfCapabilityMonitoringService(opProvider);
33 this.sessionMonitoring = new NetconfSessionMonitoringService(threadPool, updateInterval);
38 public Sessions getSessions() {
39 return sessionMonitoring.getSessions();
43 public SessionListener getSessionListener() {
44 return sessionMonitoring;
48 public Schemas getSchemas() {
49 return capabilityMonitoring.getSchemas();
53 public String getSchemaForCapability(String moduleName, Optional<String> revision) {
54 return capabilityMonitoring.getSchemaForModuleRevision(moduleName, revision);
58 public Capabilities getCapabilities() {
59 return capabilityMonitoring.getCapabilities();
63 public AutoCloseable registerCapabilitiesListener(CapabilitiesListener listener) {
64 return capabilityMonitoring.registerListener(listener);
68 public AutoCloseable registerSessionsListener(SessionsListener listener) {
69 return sessionMonitoring.registerListener(listener);
72 public void setNotificationPublisher(BaseNotificationPublisherRegistration notificationPublisher) {
73 this.capabilityMonitoring.setNotificationPublisher(notificationPublisher);
77 public void close() throws Exception {
78 capabilityMonitoring.close();
79 sessionMonitoring.close();