blob: bc4d66a8a6614c8305380eb9b097c07d9c27ba41 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.Ignite.Core.Lifecycle
{
using Apache.Ignite.Core.Resource;
/// <summary>
/// Handles lifecycle events defined in <see cref="LifecycleEventType"/>.
/// Use this interface whenever you need to plug some custom logic before or after
/// Ignite startup and stopping routines.
/// <para />
/// There are four events you can react to:
/// <list type="bullet">
/// <item>
/// <term>BeforeNodeStart</term>
/// <description>Invoked before Ignite startup routine is initiated. Note that Ignite
/// is not available during this event, therefore if you injected an Ignite instance
/// via <see cref="InstanceResourceAttribute"/> attribute, you cannot
/// use it yet.</description>
/// </item>
/// <item>
/// <term>AfterNodeStart</term>
/// <description>Invoked right after Ignite has started. At this point, if you injected
/// an Ignite instance via <see cref="InstanceResourceAttribute"/> attribute,
/// you can start using it.</description>
/// </item>
/// <item>
/// <term>BeforeNodeStop</term>
/// <description>Invoked right before Ignite stop routine is initiated. Ignite is still
/// available at this stage, so if you injected an Ignite instance via
/// <see cref="InstanceResourceAttribute"/> attribute, you can use it.
/// </description>
/// </item>
/// <item>
/// <term>AfterNodeStop</term>
/// <description>Invoked right after Ignite has stopped. Note that Ignite is not available
/// during this event.</description>
/// </item>
/// </list>
/// </summary>
public interface ILifecycleHandler
{
/// <summary>
/// This method is called when lifecycle event occurs.
/// </summary>
/// <param name="evt">Lifecycle event.</param>
void OnLifecycleEvent(LifecycleEventType evt);
}
}