All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.hekate.core.service.InitializingService Maven / Gradle / Ivy

There is a newer version: 4.1.3
Show newest version
/*
 * Copyright 2020 The Hekate Project
 *
 * The Hekate Project 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.
 */

package io.hekate.core.service;

import io.hekate.core.Hekate;
import io.hekate.core.HekateException;
import java.util.Set;

/**
 * Lifecycle interface for services that require initialization.
 *
 * 

* Methods of this interface get invoked when {@link Hekate} instance starts {@link Hekate#join() joining} the cluster. *

*

* Invocation order is: *

*
    *
  1. {@link #preInitialize(InitializationContext)} all services one by one
  2. *
  3. Await for {@link ClusterContext#onJoin(int, Set)} notification from the cluster service
  4. *
  5. {@link #initialize(InitializationContext)} all services one by one
  6. *
  7. {@link #postInitialize(InitializationContext)} all services one by one
  8. *
* *

* Note: Initialization order takes dependencies into account. If some service {@code A} {@link DependentService depends} on some * other service {@code B} then it is guaranteed that initialization methods of service {@code B} will be called prior to initialization * methods of service {@code A}. *

* * @see TerminatingService * @see DependentService */ public interface InitializingService { /** * Initializes this service. * * @param ctx Context. * * @throws HekateException If initialization failed. */ void initialize(InitializationContext ctx) throws HekateException; /** * Pre-initializes this service. * *

* Default implementation of this method is empty. *

* * @param ctx Context. * * @throws HekateException If pre-initialization failed. */ default void preInitialize(InitializationContext ctx) throws HekateException { // No-op. } /** * Post-initializes this service. * *

* Default implementation of this method is empty. *

* * @param ctx Context. * * @throws HekateException If post-initialization failed. */ default void postInitialize(InitializationContext ctx) throws HekateException { // No-op. } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy