Advanced Multi-Physics (AMP)
On-Line Documentation
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
AMP::LinearAlgebra::DataChangeListener Class Referenceabstract

Interface for managing classes that need to know when managed data has changed. More...

#include <DataChangeListener.h>

Inheritance diagram for AMP::LinearAlgebra::DataChangeListener:
Inheritance graph
[legend]

Public Member Functions

 DataChangeListener ()
 Construct the DataChangeListener.
 
virtual void receiveDataChanged ()=0
 The method called when a data change event occurs.
 
virtual ~DataChangeListener ()
 Destroy the DataChangeListener.
 

Private Member Functions

void deregisterFromFirer (DataChangeFirer *firer)
 Deregister this DataChangeListener with a DataChangeFirer.
 
void registerWithFirer (DataChangeFirer *firer)
 Register this DataChangeListener with a DataChangeFirer.
 

Private Attributes

std::vector< DataChangeFirer * > d_firers
 

Friends

class DataChangeFirer
 

Detailed Description

Interface for managing classes that need to know when managed data has changed.

Some linear algebra packages, such as PETSc, use sophisticated caching schemes to reduce the amount of communication necessary to perform some computations. For instance, unless the values of a vector change, the L1 norm will remain constant. Since computing the L1 norm requires communication for parallel vectors, communication can be reduced by caching this value and invalidating the cache when the data changes. To pass these messages around, a set of classes are provided which allow for the invalidation of the cache. These classes are used when AMP managed data is changed by some linear algebra packages to inform other packages that their cache needs to be invalidated. These classes implement a callback mechansim in an environment of reference counted pointers.

The DataChangeListener provides a mechanism to register and de-register itself with a DataChangeFirer. It is a list of DataChangeFirers with which it is registered. It implements a receiveDataChanged() method used by the DataChangeFirer to indicate managed data has changed.

Definition at line 34 of file DataChangeListener.h.

Constructor & Destructor Documentation

◆ DataChangeListener()

AMP::LinearAlgebra::DataChangeListener::DataChangeListener ( )

Construct the DataChangeListener.

When constructed, a DataChangeListener object is empty. It has no default firers.

◆ ~DataChangeListener()

virtual AMP::LinearAlgebra::DataChangeListener::~DataChangeListener ( )
virtual

Destroy the DataChangeListener.

On destruction, the DataChangeListener will deregister itself with all DataChangeFirers it is registered with.

Member Function Documentation

◆ deregisterFromFirer()

void AMP::LinearAlgebra::DataChangeListener::deregisterFromFirer ( DataChangeFirer firer)
private

Deregister this DataChangeListener with a DataChangeFirer.

Parameters
firerthe data change firer this object will no longer listen for

This method will erase firer from the list. This method is only used by the DataChangeFirer

◆ receiveDataChanged()

virtual void AMP::LinearAlgebra::DataChangeListener::receiveDataChanged ( )
pure virtual

The method called when a data change event occurs.

The method called when a data change event occurs

Implemented in AMP::LinearAlgebra::ManagedVectorData, and AMP::LinearAlgebra::MultiVectorData.

◆ registerWithFirer()

void AMP::LinearAlgebra::DataChangeListener::registerWithFirer ( DataChangeFirer firer)
private

Register this DataChangeListener with a DataChangeFirer.

Parameters
firerthe data change firer this object will listen for

This method will push firer onto the list. This method is only used by the DataChangeFirer

Friends And Related Symbol Documentation

◆ DataChangeFirer

friend class DataChangeFirer
friend

Definition at line 53 of file DataChangeListener.h.

Member Data Documentation

◆ d_firers

std::vector<DataChangeFirer *> AMP::LinearAlgebra::DataChangeListener::d_firers
private

Definition at line 80 of file DataChangeListener.h.


The documentation for this class was generated from the following file:



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:42.
Comments on this page