DataSampleElement.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #include "DCPS/DdsDcps_pch.h"
00009 #include "DataSampleElement.h"
00010 #include "PublicationInstance.h"
00011
00012 #if !defined (__ACE_INLINE__)
00013 #include "DataSampleElement.inl"
00014 #endif
00015
00016
00017 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
00018
00019 namespace OpenDDS {
00020 namespace DCPS {
00021
00022 DataSampleElement::DataSampleElement(
00023 PublicationId publication_id,
00024 TransportSendListener* send_listener,
00025 PublicationInstance_rch handle)
00026 : transaction_id_(0),
00027 publication_id_(publication_id),
00028 num_subs_(0),
00029 send_listener_(send_listener),
00030 handle_(handle),
00031 previous_writer_sample_(0),
00032 next_writer_sample_(0),
00033 next_instance_sample_(0),
00034 previous_instance_sample_(0),
00035 next_send_sample_(0),
00036 previous_send_sample_(0)
00037
00038 {
00039 std::fill(subscription_ids_,
00040 subscription_ids_ + OpenDDS::DCPS::MAX_READERS_PER_ELEM,
00041 GUID_UNKNOWN);
00042 }
00043
00044 DataSampleElement::DataSampleElement(const DataSampleElement& elem)
00045 : transaction_id_(elem.transaction_id_)
00046 , header_(elem.header_)
00047 , sample_(elem.sample_ ? elem.sample_->duplicate() : 0)
00048 , publication_id_(elem.publication_id_)
00049 , num_subs_(elem.num_subs_)
00050 , send_listener_(elem.send_listener_)
00051 , handle_(elem.handle_)
00052 , filter_out_(elem.filter_out_)
00053 , filter_per_link_(elem.filter_per_link_)
00054 , previous_writer_sample_(elem.previous_writer_sample_)
00055 , next_writer_sample_(elem.next_writer_sample_)
00056 , next_instance_sample_(elem.next_instance_sample_)
00057 , previous_instance_sample_(elem.previous_instance_sample_)
00058 , next_send_sample_(elem.next_send_sample_)
00059 , previous_send_sample_(elem.previous_send_sample_)
00060
00061 {
00062 std::copy(elem.subscription_ids_,
00063 elem.subscription_ids_ + num_subs_,
00064 subscription_ids_);
00065 }
00066
00067 DataSampleElement::~DataSampleElement()
00068 {
00069 }
00070
00071 DataSampleElement&
00072 DataSampleElement::operator=(const DataSampleElement& rhs)
00073 {
00074 transaction_id_ = rhs.transaction_id_;
00075 header_ = rhs.header_;
00076 sample_.reset(rhs.sample_->duplicate());
00077 publication_id_ = rhs.publication_id_;
00078 num_subs_ = rhs.num_subs_;
00079
00080 std::copy(rhs.subscription_ids_,
00081 rhs.subscription_ids_ + num_subs_,
00082 subscription_ids_);
00083
00084 previous_writer_sample_ = rhs.previous_writer_sample_;
00085 next_writer_sample_ = rhs.next_writer_sample_;
00086 next_instance_sample_ = rhs.next_instance_sample_;
00087 previous_instance_sample_ = rhs.previous_instance_sample_;
00088 next_send_sample_ = rhs.next_send_sample_;
00089 previous_send_sample_ = rhs.previous_send_sample_;
00090 send_listener_ = rhs.send_listener_;
00091 handle_ = rhs.handle_;
00092 filter_out_ = rhs.filter_out_;
00093 filter_per_link_ = rhs.filter_per_link_;
00094
00095 return *this;
00096 }
00097
00098 PublicationInstance_rch
00099 DataSampleElement::get_handle() const
00100 {
00101 return handle_;
00102 }
00103
00104
00105 }
00106 }
00107
00108 OPENDDS_END_VERSIONED_NAMESPACE_DECL
00109