mirror of https://github.com/hyperledger/besu
naming things is important (#7895)
BesuContext was not a helpful name for an interface that only manipulates services to be used by plugins. --------- Signed-off-by: jflo <justin+github@florentine.us>main
parent
9718fd58e7
commit
c127f9c1d7
@ -0,0 +1,55 @@ |
|||||||
|
/* |
||||||
|
* Copyright ConsenSys AG. |
||||||
|
* |
||||||
|
* 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. |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
package org.hyperledger.besu.plugin; |
||||||
|
|
||||||
|
import org.hyperledger.besu.plugin.services.BesuService; |
||||||
|
|
||||||
|
import java.util.Optional; |
||||||
|
|
||||||
|
/** Adds and accesses BesuServices for plugins to provide or use. */ |
||||||
|
public interface ServiceManager { |
||||||
|
|
||||||
|
/** |
||||||
|
* Add service. Used by core besu or other plugins to add services to the service manager. |
||||||
|
* |
||||||
|
* @param <T> the type parameter |
||||||
|
* @param serviceType the service type |
||||||
|
* @param service the service |
||||||
|
*/ |
||||||
|
<T extends BesuService> void addService(final Class<T> serviceType, final T service); |
||||||
|
|
||||||
|
/** |
||||||
|
* Get the requested service, if it is available. There are a number of reasons that a service may |
||||||
|
* not be available: |
||||||
|
* |
||||||
|
* <ul> |
||||||
|
* <li>The service may not have started yet. Most services are not available before the {@link |
||||||
|
* BesuPlugin#start()} method is called |
||||||
|
* <li>The service is not supported by this version of Besu |
||||||
|
* <li>The service may not be applicable to the current configuration. For example some services |
||||||
|
* may only be available when a proof of authority network is in use, or when user provided. |
||||||
|
* </ul> |
||||||
|
* |
||||||
|
* <p>Since plugins are automatically loaded, unless the user has specifically requested |
||||||
|
* functionality provided by the plugin, no error should be raised if required services are |
||||||
|
* unavailable. |
||||||
|
* |
||||||
|
* @param serviceType the class defining the requested service. |
||||||
|
* @param <T> the service type |
||||||
|
* @return an optional containing the instance of the requested service, or empty if the service |
||||||
|
* is unavailable |
||||||
|
*/ |
||||||
|
<T extends BesuService> Optional<T> getService(Class<T> serviceType); |
||||||
|
} |
Loading…
Reference in new issue