| /* |
| * 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. |
| */ |
| package org.apache.ignite.internal.processors.subscription; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| import org.apache.ignite.internal.GridKernalContext; |
| import org.apache.ignite.internal.processors.GridProcessorAdapter; |
| import org.apache.ignite.internal.processors.cache.persistence.DatabaseLifecycleListener; |
| import org.apache.ignite.internal.processors.cache.persistence.metastorage.MetastorageLifecycleListener; |
| import org.jetbrains.annotations.NotNull; |
| |
| /** |
| * Processor enables grid components to register listeners for events |
| * generated by other components on local node. |
| * |
| * It starts very first during node startup procedure so any components could use it. |
| * |
| * As only local events are supported, no network communication occurs during notification process. |
| */ |
| public class GridInternalSubscriptionProcessor extends GridProcessorAdapter { |
| /** */ |
| private List<MetastorageLifecycleListener> metastorageListeners = new ArrayList<>(); |
| |
| /** */ |
| private List<DatabaseLifecycleListener> databaseListeners = new ArrayList<>(); |
| |
| |
| /** |
| * @param ctx Kernal context. |
| */ |
| public GridInternalSubscriptionProcessor(GridKernalContext ctx) { |
| super(ctx); |
| } |
| |
| /** */ |
| public void registerMetastorageListener(@NotNull MetastorageLifecycleListener metastorageListener) { |
| if (metastorageListener == null) |
| throw new NullPointerException("Metastorage subscriber should be not-null."); |
| |
| metastorageListeners.add(metastorageListener); |
| } |
| |
| /** */ |
| public List<MetastorageLifecycleListener> getMetastorageSubscribers() { |
| return metastorageListeners; |
| } |
| |
| /** */ |
| public void registerDatabaseListener(@NotNull DatabaseLifecycleListener databaseListener) { |
| if (databaseListener == null) |
| throw new NullPointerException("Database subscriber should be not-null."); |
| |
| databaseListeners.add(databaseListener); |
| } |
| |
| /** */ |
| public List<DatabaseLifecycleListener> getDatabaseListeners() { |
| return databaseListeners; |
| } |
| } |