// **********************************************************************
//
// Copyright (c) 2003-2010 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
// Ice version 3.4.1
package Ice;
// <auto-generated>
//
// Generated from file `Plugin.ice'
//
// Warning: do not edit this file.
//
// </auto-generated>
/**
* Each communicator has a plug-in manager to administer the set of
* plug-ins.
*
**/
public interface PluginManager
{
/**
* Initialize the configured plug-ins. The communicator automatically initializes
* the plug-ins by default, but an application may need to interact directly with
* a plug-in prior to initialization. In this case, the application must set
* <tt>Ice.InitPlugins=0</tt> and then invoke {@link #initializePlugins}
* manually. The plug-ins are initialized in the order in which they are loaded.
* If a plug-in raises an exception during initialization, the communicator
* invokes destroy on the plug-ins that have already been initialized.
*
* @throws InitializationException Raised if the plug-ins have already been initialized.
*
**/
void initializePlugins();
/**
* Get a list of plugins installed.
*
* @return The names of the plugins installed.
*
* @see #getPlugin
*
**/
String[] getPlugins();
/**
* Obtain a plug-in by name.
*
* @param name The plug-in's name.
*
* @return The plug-in.
*
* @throws NotRegisteredException Raised if no plug-in is found with the given name.
*
**/
Plugin getPlugin(String name);
/**
* Install a new plug-in.
*
* @param name The plug-in's name.
*
* @param pi The plug-in.
*
* @throws AlreadyRegisteredException Raised if a plug-in already exists with the given name.
*
**/
void addPlugin(String name, Plugin pi);
/**
* Called when the communicator is being destroyed.
*
**/
void destroy();
}