import com.google.common.base.Preconditions;
import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
import java.util.Collection;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
import org.slf4j.LoggerFactory;
/**
- * This class implements {@link SessionListener} to receive updates about Netconf sessions. Instance notifies its listeners
+ * This class implements {@link SessionListener} to receive updates about Netconf sessions. Instance notifies its
+ * listeners
* about session start and end. It also publishes on regular interval list of sessions,
* where events like rpc or notification happened.
*/
private static final Logger LOG = LoggerFactory.getLogger(NetconfSessionMonitoringService.class);
- private final Set<NetconfManagementSession> sessions = Sets.newHashSet();
- private final Set<NetconfManagementSession> changedSessions = Sets.newHashSet();
- private final Set<NetconfMonitoringService.SessionsListener> listeners = Sets.newHashSet();
+ private final Set<NetconfManagementSession> sessions = new HashSet<>();
+ private final Set<NetconfManagementSession> changedSessions = new HashSet<>();
+ private final Set<NetconfMonitoringService.SessionsListener> listeners = new HashSet<>();
private final ScheduledExecutorService executor;
private final long updateInterval;
private boolean running;
/**
- * @param schedulingThreadPool thread pool for scheduling session stats updates. If not present, updates won't be scheduled.
- * @param updateInterval update interval. If is less than 0, updates won't be scheduled
+ * Constructor for {@code NetconfSessionMonitoringService}.
+ *
+ * @param schedulingThreadPool thread pool for scheduling session stats updates. If not present, updates won't be
+ * scheduled.
+ * @param updateInterval update interval. If is less than 0, updates won't be scheduled
*/
NetconfSessionMonitoringService(Optional<ScheduledThreadPool> schedulingThreadPool, long updateInterval) {
this.updateInterval = updateInterval;
if (schedulingThreadPool.isPresent() && updateInterval > 0) {
- this.executor = schedulingThreadPool.get().getExecutor();
+ this.executor = schedulingThreadPool.get().getExecutor();
LOG.info("/netconf-state/sessions will be updated every {} seconds.", updateInterval);
} else {
- LOG.info("Scheduling thread pool is present = {}, update interval {}: /netconf-state/sessions won't be updated.",
+ LOG.info("Scheduling thread pool is present = {}, "
+ + "update interval {}: /netconf-state/sessions won't be updated.",
schedulingThreadPool.isPresent(), updateInterval);
this.executor = null;
}
}
synchronized Sessions getSessions() {
- final Collection<Session> managementSessions = Collections2.transform(sessions, NetconfManagementSession::toManagementSession);
+ final Collection<Session> managementSessions = Collections2.transform(sessions,
+ NetconfManagementSession::toManagementSession);
return new SessionsBuilder().setSession(ImmutableList.copyOf(managementSessions)).build();
}
if (!running) {
startUpdateSessionStats();
}
- return new AutoCloseable() {
- @Override
- public void close() throws Exception {
- listeners.remove(listener);
- }
- };
+ return () -> listeners.remove(listener);
}
@Override
- public synchronized void close() throws Exception {
+ public synchronized void close() {
stopUpdateSessionStats();
listeners.clear();
sessions.clear();