2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.md.sal.common.api.data;
10 import java.util.EventListener;
11 import org.opendaylight.yangtools.concepts.Path;
14 * Listener of data change events on particular subtree.
17 * User-supplied implementations of this listener interface MUST register via
18 * {@link AsyncDataBroker#registerDataChangeListener(LogicalDatastoreType, Path, AsyncDataChangeListener, AsyncDataBroker.DataChangeScope)}
19 * in order to start receiving data change events, which capture state changes
23 * <b>Implementation Note:</b> This interface is intended to be implemented
27 * Type of path (subtree identifier), which represents location in
30 * Type of data (payload), which represents data payload
32 public interface AsyncDataChangeListener<P extends Path<P>, D> extends EventListener {
35 * Invoked when there is data change for the particular path, which was used to register this
38 * This method may be also invoked during registration of the listener if there is any
39 * preexisting data in the conceptual data tree for supplied path. This initial event will
40 * contain all preexisting data as created.
43 * <b>Note</b>: This method may be invoked from a shared thread pool.
45 * <li>Implementations <b>SHOULD NOT</b> perform CPU-intensive operations on the calling thread.
46 * <li>Implementations <b>MUST NOT block the calling thread</b> - to do so could lead to
52 * @param change Data Change Event being delivered.
54 void onDataChanged(AsyncDataChangeEvent<P, D> change);