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_TRANSPORT_FRAMEWORK_TRANSPORTCUSTOMIZEDELEMENT_H 9 : #define OPENDDS_DCPS_TRANSPORT_FRAMEWORK_TRANSPORTCUSTOMIZEDELEMENT_H 10 : 11 : #include "dds/DCPS/dcps_export.h" 12 : #include "TransportQueueElement.h" 13 : #include "dds/DCPS/Message_Block_Ptr.h" 14 : 15 : OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 16 : 17 : namespace OpenDDS { 18 : namespace DCPS { 19 : 20 : class TransportSendElement; 21 : 22 : class OpenDDS_Dcps_Export TransportCustomizedElement 23 : : public TransportQueueElement { 24 : 25 : public: 26 : explicit TransportCustomizedElement(TransportQueueElement* orig); 27 : 28 : void set_fragment(TransportQueueElement* orig); 29 : 30 : virtual GUID_t publication_id() const; 31 : void set_publication_id(const GUID_t& id); 32 : 33 : GUID_t subscription_id() const; 34 : void set_subscription_id(const GUID_t& id); 35 : 36 : SequenceNumber sequence() const; 37 : void set_sequence(const SequenceNumber& value); 38 : 39 : virtual ACE_Message_Block* duplicate_msg() const; 40 : 41 : virtual const ACE_Message_Block* msg() const; 42 : void set_msg(Message_Block_Ptr m); 43 : 44 : virtual const ACE_Message_Block* msg_payload() const; 45 : 46 0 : virtual bool owned_by_transport() { return false; } 47 : 48 0 : virtual bool is_fragment() const { return fragment_; } 49 : 50 : const TransportSendElement* original_send_element() const; 51 : 52 : virtual bool is_last_fragment() const; 53 : 54 : protected: 55 : virtual void release_element(bool dropped_by_transport); 56 : 57 0 : virtual bool requires_exclusive_packet() const { return exclusive_; } 58 : void set_requires_exclusive() { exclusive_ = true; } 59 : 60 : virtual ~TransportCustomizedElement(); 61 : 62 : static const TransportSendElement* find_original_send_element(TransportQueueElement* orig); 63 : 64 : private: 65 : TransportQueueElement* orig_; 66 : const TransportSendElement* original_send_element_; 67 : Message_Block_Ptr msg_; 68 : GUID_t publication_id_; 69 : GUID_t subscription_id_; 70 : SequenceNumber sequence_; 71 : bool fragment_, exclusive_; 72 : }; 73 : 74 : } // namespace DCPS 75 : } // namespace OpenDDS 76 : 77 : OPENDDS_END_VERSIONED_NAMESPACE_DECL 78 : 79 : #if defined (__ACE_INLINE__) 80 : #include "TransportCustomizedElement.inl" 81 : #endif /* __ACE_INLINE__ */ 82 : 83 : #endif /* OPENDDS_DCPS_TRANSPORTCUSTOMIZEDELEMENT_H */