UpdateProcessor_T.h

Go to the documentation of this file.
00001 /*
00002  *
00003  *
00004  * Distributed under the OpenDDS License.
00005  * See: http://www.opendds.org/license.html
00006  */
00007 
00008 #ifndef UPDATEPROCESSOR_T_H
00009 #define UPDATEPROCESSOR_T_H
00010 
00011 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00012 #pragma once
00013 #endif /* ACE_LACKS_PRAGMA_ONCE */
00014 
00015 namespace DDS {
00016 
00017 struct SampleInfo;
00018 
00019 } // namespace DDS
00020 
00021 namespace OpenDDS {
00022 namespace Federator {
00023 
00024 /**
00025  * @class UpdateProcessor
00026  *
00027  * @brief Interface for managing update publications.
00028  *
00029  * This class provides interfaces to manage update data received from
00030  * federated repositories.
00031  */
00032 template<class DataType>
00033 class  UpdateProcessor {
00034 public:
00035   /// Default constructor.
00036   UpdateProcessor();
00037 
00038   /// Virtual destructor
00039   virtual ~UpdateProcessor();
00040 
00041   //
00042   // Abstract interface to be implemented per application.
00043   //
00044 
00045   /// Entities are created.
00046   virtual void processCreate(
00047     const DataType*          sample,
00048     const DDS::SampleInfo* info) = 0;
00049 
00050   /// Entity Qos values are modified.
00051   virtual void processUpdateQos1(
00052     const DataType*          sample,
00053     const DDS::SampleInfo* info) = 0;
00054 
00055   /// Entity additional Qos values are modified.
00056   /// A default null implementation is provided.
00057   virtual void processUpdateQos2(
00058     const DataType*          sample,
00059     const DDS::SampleInfo* info);
00060 
00061   /// A default null implementation is provided.
00062   virtual void processUpdateFilterExpressionParams(
00063     const DataType*        sample,
00064     const DDS::SampleInfo* info);
00065 
00066   /// Entities are destroyed.
00067   virtual void processDelete(
00068     const DataType*          sample,
00069     const DDS::SampleInfo* info) = 0;
00070 
00071   //
00072   // Concrete implementation of common processing.
00073   //
00074 
00075   /// Update publication information with sample data.
00076   void processSample(
00077     const DataType*          sample,
00078     const DDS::SampleInfo* info);
00079 
00080 };
00081 
00082 } // namespace Federator
00083 } // namespace OpenDDS
00084 
00085 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00086 #include "UpdateProcessor_T.cpp"
00087 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
00088 
00089 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00090 #pragma message ("UpdateProcessor_T.cpp template inst")
00091 #pragma implementation ("UpdateProcessor_T.cpp")
00092 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
00093 
00094 #endif  /* UPDATEPROCESSOR_T_H */

Generated on Fri Feb 12 20:05:29 2016 for OpenDDS by  doxygen 1.4.7