00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef OPENDDS_DCPS_TRANSPORTCUSTOMIZEDELEMENT_H 00009 #define OPENDDS_DCPS_TRANSPORTCUSTOMIZEDELEMENT_H 00010 00011 #include "dds/DCPS/dcps_export.h" 00012 #include "TransportQueueElement.h" 00013 #include "dds/DCPS/Message_Block_Ptr.h" 00014 00015 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 00016 00017 namespace OpenDDS { 00018 namespace DCPS { 00019 00020 class TransportSendElement; 00021 00022 class OpenDDS_Dcps_Export TransportCustomizedElement 00023 : public TransportQueueElement { 00024 00025 public: 00026 TransportCustomizedElement(TransportQueueElement* orig, 00027 bool fragment); 00028 00029 virtual RepoId publication_id() const; 00030 void set_publication_id(const RepoId& id); 00031 00032 virtual const ACE_Message_Block* msg() const; 00033 void set_msg(Message_Block_Ptr m); 00034 00035 virtual const ACE_Message_Block* msg_payload() const; 00036 00037 virtual SequenceNumber sequence() const; 00038 00039 virtual bool owned_by_transport() { return false; } 00040 00041 virtual bool is_fragment() const { return fragment_; } 00042 00043 const TransportSendElement* original_send_element() const; 00044 00045 protected: 00046 virtual void release_element(bool dropped_by_transport); 00047 00048 virtual bool requires_exclusive_packet() const { return exclusive_; } 00049 void set_requires_exclusive() { exclusive_ = true; } 00050 00051 void set_fragment() { fragment_ = true; } 00052 00053 00054 virtual ~TransportCustomizedElement(); 00055 00056 00057 private: 00058 RepoId subscription_id() const; 00059 00060 TransportQueueElement* orig_; 00061 Message_Block_Ptr msg_; 00062 RepoId publication_id_; 00063 bool fragment_, exclusive_; 00064 }; 00065 00066 } // namespace DCPS 00067 } // namespace OpenDDS 00068 00069 OPENDDS_END_VERSIONED_NAMESPACE_DECL 00070 00071 #if defined (__ACE_INLINE__) 00072 #include "TransportCustomizedElement.inl" 00073 #endif /* __ACE_INLINE__ */ 00074 00075 #endif /* OPENDDS_DCPS_TRANSPORTCUSTOMIZEDELEMENT_H */