DataSampleElement.cpp

Go to the documentation of this file.
00001 /*
00002  *
00003  *
00004  * Distributed under the OpenDDS License.
00005  * See: http://www.opendds.org/license.html
00006  */
00007 
00008 #include "DCPS/DdsDcps_pch.h" //Only the _pch include should start with DCPS/
00009 #include "DataSampleElement.h"
00010 #include "PublicationInstance.h"
00011 
00012 #if !defined (__ACE_INLINE__)
00013 #include "DataSampleElement.inl"
00014 #endif /* __ACE_INLINE__ */
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 } // namespace DCPS
00106 } // namespace OpenDDS
00107 
00108 OPENDDS_END_VERSIONED_NAMESPACE_DECL
00109 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1