Line data Source code
1 : /* 2 : * 3 : * 4 : * Distributed under the OpenDDS License. 5 : * See: http://www.opendds.org/license.html 6 : */ 7 : 8 : #ifndef OPENDDS_DCPS_PUBLICATION_INSTANCE_H 9 : #define OPENDDS_DCPS_PUBLICATION_INSTANCE_H 10 : 11 : #include "dcps_export.h" 12 : #include "InstanceDataSampleList.h" 13 : #include "DataSampleElement.h" 14 : #include "PoolAllocationBase.h" 15 : #include "ace/Synch_Traits.h" 16 : #include "RcObject.h" 17 : #include "unique_ptr.h" 18 : #include "TimeTypes.h" 19 : 20 : #if !defined (ACE_LACKS_PRAGMA_ONCE) 21 : #pragma once 22 : #endif /* ACE_LACKS_PRAGMA_ONCE */ 23 : 24 : OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 25 : 26 : namespace OpenDDS { 27 : namespace DCPS { 28 : 29 : typedef ACE_UINT16 CoherencyGroup; 30 : 31 : /** 32 : * @class PublicationInstance 33 : * 34 : * @brief Struct that has information about an instance and the instance 35 : * sample list. 36 : * @note This struct retains the ownership of the registered sample data 37 : * from typed datawriter. The data will be duplicated for the register, 38 : * unregister and dispose control message. 39 : */ 40 : struct OpenDDS_Dcps_Export PublicationInstance : public virtual RcObject { 41 : 42 0 : PublicationInstance(Message_Block_Ptr registered_sample) 43 0 : : sequence_(), 44 0 : group_id_(0), 45 0 : registered_sample_(registered_sample.release()), 46 0 : instance_handle_(0), 47 0 : durable_samples_remaining_(0), 48 0 : deadline_() 49 : { 50 0 : } 51 : 52 0 : ~PublicationInstance() { 53 0 : } 54 : 55 : /// The sequence number. 56 : SequenceNumber sequence_; 57 : 58 : /// The group id. // NOT USED IN FIRST IMPL 59 : CoherencyGroup group_id_ ; 60 : 61 : /// The sample data for registration. 62 : Message_Block_Ptr registered_sample_; 63 : 64 : /// History of the instance samples. 65 : InstanceDataSampleList samples_; 66 : 67 : /// The instance handle for the registered object 68 : DDS::InstanceHandle_t instance_handle_; 69 : 70 : /// Only used by WriteDataContainer::reenqueue_all() while WDC is locked. 71 : ssize_t durable_samples_remaining_; 72 : 73 : /// Deadline for Deadline QoS. 74 : MonotonicTimePoint deadline_; 75 : }; 76 : 77 : typedef RcHandle<PublicationInstance> PublicationInstance_rch; 78 : 79 : } // namespace DCPS 80 : } // namespace OpenDDS 81 : 82 : OPENDDS_END_VERSIONED_NAMESPACE_DECL 83 : 84 : #endif /* OPENDDS_DCPS_PUBLICATION_INSTANCE_H */