/*
* Jicofo, the Jitsi Conference Focus.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jitsi.jicofo;
import net.java.sip.communicator.impl.protocol.jabber.extensions.caps.*;
import net.java.sip.communicator.util.*;
import org.jitsi.service.configuration.*;
import org.jitsi.videobridge.log.*;
import org.jitsi.videobridge.osgi.*;
import org.osgi.framework.*;
import java.util.concurrent.*;
/**
* Activator of the Jitsi Meet Focus bundle.
*
* @author Pawel Domas
*/
public class FocusBundleActivator
implements BundleActivator
{
/**
* The number of threads available in the thread pool shared through OSGi.
*/
private static final int SHARED_POOL_SIZE = 20;
/**
* OSGi bundle context held by this activator.
*/
public static BundleContext bundleContext;
/**
* {@link ConfigurationService} instance cached by the activator.
*/
private static ConfigurationService configService;
/**
* {@link org.jitsi.jicofo.FocusManager} instance created by this activator.
*/
private FocusManager focusManager;
/**
* Shared thread pool available through OSGi for other components that do
* not like to manage their own pool.
*/
private static ExecutorService sharedThreadPool;
@Override
public void start(BundleContext context)
throws Exception
{
bundleContext = context;
EntityCapsManager.setBundleContext(context);
sharedThreadPool = Executors.newFixedThreadPool(SHARED_POOL_SIZE);
context.registerService(ExecutorService.class, sharedThreadPool, null);
this.focusManager = new FocusManager();
context.registerService(FocusManager.class, focusManager, null);
}
@Override
public void stop(BundleContext context)
throws Exception
{
sharedThreadPool.shutdownNow();
sharedThreadPool = null;
configService = null;
EntityCapsManager.setBundleContext(null);
}
/**
* Returns the instance of <tt>ConfigurationService</tt>.
*/
public static ConfigurationService getConfigService()
{
if (configService == null)
{
configService = ServiceUtils.getService(
bundleContext, ConfigurationService.class);
}
return configService;
}
/**
* Returns the <tt>LoggingService</tt> instance, if any.
* @return the <tt>LoggingService</tt> instance, if any.
*/
public static LoggingService getLoggingService()
{
if (bundleContext != null)
{
return ServiceUtils2.getService(bundleContext,
LoggingService.class);
}
return null;
}
/**
* Returns shared thread pool service.
*/
public static ExecutorService getSharedThreadPool()
{
return sharedThreadPool;
}
}