00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef DCPS_RECEIVEDDATASTRATEGY_H 00009 #define DCPS_RECEIVEDDATASTRATEGY_H 00010 00011 #include "CoherentChangeControl.h" 00012 #include "PoolAllocationBase.h" 00013 00014 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 00015 00016 namespace OpenDDS { 00017 namespace DCPS { 00018 00019 class ReceivedDataElementList; 00020 class ReceivedDataElement; 00021 00022 class OpenDDS_Dcps_Export ReceivedDataStrategy : public PoolAllocationBase { 00023 public: 00024 explicit ReceivedDataStrategy(ReceivedDataElementList& rcvd_samples); 00025 virtual ~ReceivedDataStrategy(); 00026 00027 virtual void add(ReceivedDataElement* data_sample); 00028 00029 #ifndef OPENDDS_NO_OBJECT_MODEL_PROFILE 00030 virtual void accept_coherent(PublicationId& writer, 00031 RepoId& publisher); 00032 00033 virtual void reject_coherent(PublicationId& writer, 00034 RepoId& publisher); 00035 #endif 00036 00037 protected: 00038 ReceivedDataElementList& rcvd_samples_; 00039 }; 00040 00041 class OpenDDS_Dcps_Export ReceptionDataStrategy 00042 : public ReceivedDataStrategy { 00043 public: 00044 explicit ReceptionDataStrategy(ReceivedDataElementList& rcvd_samples); 00045 00046 ~ReceptionDataStrategy(); 00047 }; 00048 00049 class OpenDDS_Dcps_Export SourceDataStrategy 00050 : public ReceivedDataStrategy { 00051 public: 00052 explicit SourceDataStrategy(ReceivedDataElementList& rcvd_samples); 00053 00054 ~SourceDataStrategy(); 00055 00056 virtual void add(ReceivedDataElement* data_sample); 00057 }; 00058 00059 } // namespace DCPS 00060 } // namespace OpenDDS 00061 00062 OPENDDS_END_VERSIONED_NAMESPACE_DECL 00063 00064 #endif /* DCPS_RECEIVEDDATASTRATEGY_H */