// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel
{
///
/// The facility role is to increment the kernel functionality
/// by interception the kernel working - throught events - and
/// acting accordingly.
/// For instance, a facility can expose your components as
/// managed components (managed extensions) by intercept
/// the components registration events. Other facility can intercept
/// the model construction and change the logger or configuration.
///
///
public interface IKernelFacility
{
///
/// Init the facility given it a chance to subscribe
/// to kernel events.
///
/// Kernel instance
void Init(IKernel kernel);
///
/// Gives a chance to the facility to unsubscribe from the
/// events and do its proper clean up.
///
void Terminate(IKernel kernel);
}
}