/*
* Copyright 2004-2009 James House
*
* 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.
*
*/
/*
* Previously Copyright (c) 2001-2004 James House
*/
using Quartz.Impl;
namespace Quartz.Spi{
/// <summary>
/// Provides an interface for a class to become a "plugin" to Quartz.
/// </summary>
/// <remarks>
/// Plugins can do virtually anything you wish, though the most interesting ones
/// will obviously interact with the scheduler in some way - either actively: by
/// invoking actions on the scheduler, or passively: by being a <see cref="IJobListener" />,
/// <see cref="ITriggerListener" />, and/or <see cref="ISchedulerListener" />.
/// <p>
/// If you use <see cref="StdSchedulerFactory" /> to
/// Initialize your Scheduler, it can also create and Initialize your plugins -
/// look at the configuration docs for details.
/// </p>
/// <p>
/// If you need direct access your plugin, you can have it explicitly put a
/// reference to itself in the <see cref="IScheduler" />'s
/// <see cref="SchedulerContext" /> as part of its
/// <see cref="Initialize(string, IScheduler)" /> method.
/// </p>
/// </remarks>
/// <author>James House</author>
public interface ISchedulerPlugin
{
/// <summary>
/// Called during creation of the <see cref="IScheduler" /> in order to give
/// the <see cref="ISchedulerPlugin" /> a chance to Initialize.
/// </summary>
/// <remarks>
/// At this point, the Scheduler's <see cref="IJobStore" /> is not yet
/// <p>
/// If you need direct access your plugin, you can have it explicitly put a
/// reference to itself in the <see cref="IScheduler" />'s
/// <see cref="SchedulerContext" /> as part of its
/// <see cref="Initialize(string, IScheduler)" /> method.
/// </p>
/// </remarks>
/// <param name="pluginName">
/// The name by which the plugin is identified.
/// </param>
/// <param name="sched">
/// The scheduler to which the plugin is registered.
/// </param>
void Initialize(string pluginName, IScheduler sched);
/// <summary>
/// Called when the associated <see cref="IScheduler" /> is started, in order
/// to let the plug-in know it can now make calls into the scheduler if it
/// needs to.
/// </summary>
void Start();
/// <summary>
/// Called in order to inform the <see cref="ISchedulerPlugin" /> that it
/// should free up all of it's resources because the scheduler is shutting
/// down.
/// </summary>
void Shutdown();
}
}
|