00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef DCPS_RTPSTRANSPORTHEADER_H 00009 #define DCPS_RTPSTRANSPORTHEADER_H 00010 00011 #include "dds/DCPS/Definitions.h" 00012 #include "dds/DCPS/RTPS/RtpsCoreC.h" 00013 00014 ACE_BEGIN_VERSIONED_NAMESPACE_DECL 00015 class ACE_Message_Block; 00016 ACE_END_VERSIONED_NAMESPACE_DECL 00017 00018 namespace OpenDDS { 00019 namespace DCPS { 00020 00021 /// Adapt the TransportReceiveStrategy for RTPS's "transport" (message) Header 00022 struct RtpsTransportHeader { 00023 00024 static size_t max_marshaled_size(); 00025 00026 RtpsTransportHeader(); 00027 explicit RtpsTransportHeader(ACE_Message_Block& mb); 00028 RtpsTransportHeader& operator=(ACE_Message_Block& mb); 00029 00030 bool valid() const; 00031 00032 bool last_fragment(); 00033 void last_fragment(bool frag); 00034 const SequenceNumber& sequence(); 00035 00036 void init(ACE_Message_Block& mb); 00037 void incomplete(ACE_Message_Block& mb); 00038 00039 size_t length_; 00040 OpenDDS::RTPS::Header header_; 00041 bool valid_; 00042 }; 00043 00044 } 00045 } 00046 00047 #ifdef __ACE_INLINE__ 00048 #include "RtpsTransportHeader.inl" 00049 #endif 00050 00051 #endif