Line data Source code
1 : /* 2 : * 3 : * 4 : * Distributed under the OpenDDS License. 5 : * See: http://www.opendds.org/license.html 6 : */ 7 : 8 : #include "DCPS/DdsDcps_pch.h" //Only the _pch include should start with DCPS/ 9 : #include "DataSampleElement.h" 10 : #include "PublicationInstance.h" 11 : 12 : #if !defined (__ACE_INLINE__) 13 : #include "DataSampleElement.inl" 14 : #endif /* __ACE_INLINE__ */ 15 : 16 : 17 : OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 18 : 19 : namespace OpenDDS { 20 : namespace DCPS { 21 : 22 2 : DataSampleElement::DataSampleElement( 23 : GUID_t publication_id, 24 : TransportSendListener* send_listener, 25 2 : PublicationInstance_rch handle) 26 2 : : transaction_id_(0), 27 2 : publication_id_(publication_id), 28 2 : num_subs_(0), 29 2 : send_listener_(send_listener), 30 2 : handle_(handle), 31 2 : previous_writer_sample_(0), 32 2 : next_writer_sample_(0), 33 2 : next_instance_sample_(0), 34 2 : previous_instance_sample_(0), 35 2 : next_send_sample_(0), 36 4 : previous_send_sample_(0) 37 : 38 : { 39 2 : std::fill(subscription_ids_, 40 2 : subscription_ids_ + OpenDDS::DCPS::MAX_READERS_PER_ELEM, 41 : GUID_UNKNOWN); 42 2 : } 43 : 44 0 : DataSampleElement::DataSampleElement(const DataSampleElement& elem) 45 0 : : transaction_id_(elem.transaction_id_) 46 0 : , header_(elem.header_) 47 0 : , sample_(elem.sample_ ? elem.sample_->duplicate() : 0) 48 0 : , publication_id_(elem.publication_id_) 49 0 : , num_subs_(elem.num_subs_) 50 0 : , send_listener_(elem.send_listener_) 51 0 : , handle_(elem.handle_) 52 0 : , filter_out_(elem.filter_out_) 53 0 : , filter_per_link_(elem.filter_per_link_) 54 0 : , previous_writer_sample_(elem.previous_writer_sample_) 55 0 : , next_writer_sample_(elem.next_writer_sample_) 56 0 : , next_instance_sample_(elem.next_instance_sample_) 57 0 : , previous_instance_sample_(elem.previous_instance_sample_) 58 0 : , next_send_sample_(elem.next_send_sample_) 59 0 : , previous_send_sample_(elem.previous_send_sample_) 60 : 61 : { 62 0 : std::copy(elem.subscription_ids_, 63 0 : elem.subscription_ids_ + num_subs_, 64 0 : subscription_ids_); 65 0 : } 66 : 67 2 : DataSampleElement::~DataSampleElement() 68 : { 69 2 : } 70 : 71 : DataSampleElement& 72 0 : DataSampleElement::operator=(const DataSampleElement& rhs) 73 : { 74 0 : transaction_id_ = rhs.transaction_id_; 75 0 : header_ = rhs.header_; 76 0 : sample_.reset(rhs.sample_->duplicate()); 77 0 : publication_id_ = rhs.publication_id_; 78 0 : num_subs_ = rhs.num_subs_; 79 : 80 0 : std::copy(rhs.subscription_ids_, 81 0 : rhs.subscription_ids_ + num_subs_, 82 0 : subscription_ids_); 83 : 84 0 : previous_writer_sample_ = rhs.previous_writer_sample_; 85 0 : next_writer_sample_ = rhs.next_writer_sample_; 86 0 : next_instance_sample_ = rhs.next_instance_sample_; 87 0 : previous_instance_sample_ = rhs.previous_instance_sample_; 88 0 : next_send_sample_ = rhs.next_send_sample_; 89 0 : previous_send_sample_ = rhs.previous_send_sample_; 90 0 : send_listener_ = rhs.send_listener_; 91 0 : handle_ = rhs.handle_; 92 0 : filter_out_ = rhs.filter_out_; 93 0 : filter_per_link_ = rhs.filter_per_link_; 94 : 95 0 : return *this; 96 : } 97 : 98 : PublicationInstance_rch 99 0 : DataSampleElement::get_handle() const 100 : { 101 0 : return handle_; 102 : } 103 : 104 : 105 : } // namespace DCPS 106 : } // namespace OpenDDS 107 : 108 : OPENDDS_END_VERSIONED_NAMESPACE_DECL