00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef OPENDDS_RTPSCUSTOMIZEDELEMENT_H 00009 #define OPENDDS_RTPSCUSTOMIZEDELEMENT_H 00010 00011 #include "Rtps_Udp_Export.h" 00012 00013 #include "dds/DCPS/transport/framework/TransportCustomizedElement.h" 00014 00015 #include "dds/DCPS/Dynamic_Cached_Allocator_With_Overflow_T.h" 00016 00017 namespace OpenDDS { 00018 namespace DCPS { 00019 00020 class OpenDDS_Rtps_Udp_Export RtpsCustomizedElement 00021 : public TransportCustomizedElement { 00022 00023 public: 00024 static RtpsCustomizedElement* alloc(TransportQueueElement* orig, 00025 ACE_Message_Block* msg, 00026 ACE_Allocator* allocator = 0); 00027 00028 SequenceNumber sequence() const; 00029 SequenceNumber last_fragment() const; 00030 00031 private: 00032 RtpsCustomizedElement(TransportQueueElement* orig, 00033 ACE_Message_Block* msg, 00034 ACE_Allocator* allocator); 00035 virtual ~RtpsCustomizedElement(); 00036 00037 ElementPair fragment(size_t size); 00038 const ACE_Message_Block* msg_payload() const; 00039 00040 SequenceNumber seq_, last_frag_; 00041 }; 00042 00043 typedef Dynamic_Cached_Allocator_With_Overflow<ACE_Thread_Mutex> 00044 RtpsCustomizedElementAllocator; 00045 00046 00047 } // namespace DCPS 00048 } // namespace OpenDDS 00049 00050 #if defined (__ACE_INLINE__) 00051 #include "RtpsCustomizedElement.inl" 00052 #endif /* __ACE_INLINE__ */ 00053 00054 #endif /* OPENDDS_RTPSCUSTOMIZEDELEMENT_H */