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;
12 import org.opendaylight.yangtools.concepts.Path;
15 * Listener of data change events on particular subtree.
18 * User-supplied implementations of this listener interface MUST register via
19 * {@link AsyncDataBroker#registerDataChangeListener(LogicalDatastoreType, Path, AsyncDataChangeListener, AsyncDataBroker.DataChangeScope)}
20 * in order to start receiving data change events, which capture state changes
24 * <b>Implementation Note:</b> This interface is intended to be implemented
28 * Type of path (subtree identifier), which represents location in
31 * Type of data (payload), which represents data payload
33 public interface AsyncDataChangeListener<P extends Path<P>, D> extends EventListener {
36 * Invoked when there is data change for the particular path, which was used to
37 * register this listener.
39 * This method may be also invoked during registration of the listener if
40 * there is any preexisting data in the conceptual data tree for supplied path.
41 * This initial event will contain all preexisting data as created.
44 * <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 deadlock
52 * Data Change Event being delivered.
54 void onDataChanged(AsyncDataChangeEvent<P, D> change);