OpenDDS  Snapshot(2023/04/28-20:55)
UpdateProcessor_T.h
Go to the documentation of this file.
1 /*
2  *
3  *
4  * Distributed under the OpenDDS License.
5  * See: http://www.opendds.org/license.html
6  */
7 
8 #ifndef UPDATEPROCESSOR_T_H
9 #define UPDATEPROCESSOR_T_H
10 
11 #if !defined (ACE_LACKS_PRAGMA_ONCE)
12 #pragma once
13 #endif /* ACE_LACKS_PRAGMA_ONCE */
14 
16 
17 namespace DDS {
18 
19 struct SampleInfo;
20 
21 } // namespace DDS
22 
23 namespace OpenDDS {
24 namespace Federator {
25 
26 /**
27  * @class UpdateProcessor
28  *
29  * @brief Interface for managing update publications.
30  *
31  * This class provides interfaces to manage update data received from
32  * federated repositories.
33  */
34 template<class DataType>
36 public:
38 
39  virtual ~UpdateProcessor();
40 
41  //
42  // Abstract interface to be implemented per application.
43  //
44 
45  /// Entities are created.
46  virtual void processCreate(
47  const DataType* sample,
48  const DDS::SampleInfo* info) = 0;
49 
50  /// Entity Qos values are modified.
51  virtual void processUpdateQos1(
52  const DataType* sample,
53  const DDS::SampleInfo* info) = 0;
54 
55  /// Entity additional Qos values are modified.
56  /// A default null implementation is provided.
57  virtual void processUpdateQos2(
58  const DataType* sample,
59  const DDS::SampleInfo* info);
60 
61  /// A default null implementation is provided.
62  virtual void processUpdateFilterExpressionParams(
63  const DataType* sample,
64  const DDS::SampleInfo* info);
65 
66  /// Entities are destroyed.
67  virtual void processDelete(
68  const DataType* sample,
69  const DDS::SampleInfo* info) = 0;
70 
71  //
72  // Concrete implementation of common processing.
73  //
74 
75  /// Update publication information with sample data.
76  void processSample(
77  const DataType* sample,
78  const DDS::SampleInfo* info);
79 
80 };
81 
82 } // namespace Federator
83 } // namespace OpenDDS
84 
86 
87 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
88 #include "UpdateProcessor_T.cpp"
89 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
90 
91 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
92 #pragma message ("UpdateProcessor_T.cpp template inst")
93 #pragma implementation ("UpdateProcessor_T.cpp")
94 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
95 
96 #endif /* UPDATEPROCESSOR_T_H */
Interface for managing update publications.
The End User API.
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
The Internal API and Implementation of OpenDDS.
Definition: AddressCache.h:28