/*******************************************************************************
* Copyright (c) 2011, 2016 Eurotech and/or its affiliates
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eurotech
*******************************************************************************/
package org.eclipse.kura.core.ssl;
import org.eclipse.kura.ssl.SslServiceListener;
import org.osgi.util.tracker.ServiceTracker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class SslServiceListeners implements SslServiceListener {
private static final Logger s_logger = LoggerFactory.getLogger(SslServiceListeners.class);
private final ServiceTracker<SslServiceListener, SslServiceListener> m_listenersTracker;
public SslServiceListeners(ServiceTracker<SslServiceListener, SslServiceListener> listenersTracker) {
super();
this.m_listenersTracker = listenersTracker;
}
@Override
public void onConfigurationUpdated() {
openOnce();
Object[] listeners = this.m_listenersTracker.getServices();
if (listeners != null && listeners.length != 0) {
for (Object listener : listeners) {
try {
((SslServiceListener) listener).onConfigurationUpdated();
} catch (Throwable t) {
s_logger.error("Unexpected Throwable", t);
}
}
}
}
public synchronized void close() {
if (this.m_listenersTracker.getTrackingCount() != -1) {
this.m_listenersTracker.close();
}
}
private synchronized void openOnce() {
if (this.m_listenersTracker.getTrackingCount() == -1) {
this.m_listenersTracker.open();
}
}
}