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 ScheduledThreadPool threadPool,
31 long updateInterval) {
32 this(opProvider, Optional.fromNullable(threadPool), updateInterval);
35 public NetconfMonitoringServiceImpl(NetconfOperationServiceFactory opProvider,
36 Optional<ScheduledThreadPool> threadPool,
37 long updateInterval) {
38 this.capabilityMonitoring = new NetconfCapabilityMonitoringService(opProvider);
39 this.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(String moduleName, Optional<String> revision) {
60 return capabilityMonitoring.getSchemaForModuleRevision(moduleName, revision);
64 public Capabilities getCapabilities() {
65 return capabilityMonitoring.getCapabilities();
69 public AutoCloseable registerCapabilitiesListener(CapabilitiesListener listener) {
70 return capabilityMonitoring.registerListener(listener);
74 public AutoCloseable registerSessionsListener(SessionsListener listener) {
75 return sessionMonitoring.registerListener(listener);
78 public void setNotificationPublisher(BaseNotificationPublisherRegistration notificationPublisher) {
79 this.capabilityMonitoring.setNotificationPublisher(notificationPublisher);
83 public void close() throws Exception {
84 capabilityMonitoring.close();
85 sessionMonitoring.close();