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 namespace OpenDDS { 00015 namespace DCPS { 00016 00017 class ReceivedDataElementList; 00018 class ReceivedDataElement; 00019 00020 class OpenDDS_Dcps_Export ReceivedDataStrategy : public PoolAllocationBase { 00021 public: 00022 explicit ReceivedDataStrategy(ReceivedDataElementList& rcvd_samples); 00023 virtual ~ReceivedDataStrategy(); 00024 00025 virtual void add(ReceivedDataElement* data_sample); 00026 00027 #ifndef OPENDDS_NO_OBJECT_MODEL_PROFILE 00028 virtual void accept_coherent(PublicationId& writer, 00029 RepoId& publisher); 00030 00031 virtual void reject_coherent(PublicationId& writer, 00032 RepoId& publisher); 00033 #endif 00034 00035 protected: 00036 ReceivedDataElementList& rcvd_samples_; 00037 }; 00038 00039 class OpenDDS_Dcps_Export ReceptionDataStrategy 00040 : public ReceivedDataStrategy { 00041 public: 00042 explicit ReceptionDataStrategy(ReceivedDataElementList& rcvd_samples); 00043 00044 ~ReceptionDataStrategy(); 00045 }; 00046 00047 class OpenDDS_Dcps_Export SourceDataStrategy 00048 : public ReceivedDataStrategy { 00049 public: 00050 explicit SourceDataStrategy(ReceivedDataElementList& rcvd_samples); 00051 00052 ~SourceDataStrategy(); 00053 00054 virtual void add(ReceivedDataElement* data_sample); 00055 }; 00056 00057 } // namespace DCPS 00058 } // namespace OpenDDS 00059 00060 #endif /* DCPS_RECEIVEDDATASTRATEGY_H */