Sequence number abstraction. Only allows positive 64 bit values. More...
#include <SequenceNumber.h>
Public Types | |
typedef ACE_INT64 | Value |
Public Member Functions | |
SequenceNumber (Value value=MIN_VALUE) | |
Construct with a value, default to one (starting point). | |
SequenceNumber & | operator++ () |
Pre-increment. | |
SequenceNumber | operator++ (int) |
Post-increment. | |
SequenceNumber | previous () const |
void | setValue (Value value) |
void | setValue (ACE_INT32 high, ACE_UINT32 low) |
Value | getValue () const |
bool | operator< (const SequenceNumber &rvalue) const |
bool | operator== (const SequenceNumber &rvalue) const |
Derive a full suite of logical operations. | |
bool | operator!= (const SequenceNumber &rvalue) const |
bool | operator>= (const SequenceNumber &rvalue) const |
bool | operator<= (const SequenceNumber &rvalue) const |
bool | operator> (const SequenceNumber &rvalue) const |
ACE_INT32 | getHigh () const |
ACE_UINT32 | getLow () const |
Static Public Member Functions | |
static SequenceNumber | SEQUENCENUMBER_UNKNOWN () |
static SequenceNumber | ZERO () |
Static Public Attributes | |
static const Value | MAX_VALUE = ACE_INT64_MAX |
static const Value | MIN_VALUE = 1 |
static const Value | LOW_BASE = 0x0000000100000000LL |
Private Member Functions | |
SequenceNumber (ACE_INT32 high, ACE_UINT32 low) | |
Private Attributes | |
ACE_INT32 | high_ |
ACE_UINT32 | low_ |
Friends | |
ACE_CDR::Boolean | operator>> (Serializer &s, SequenceNumber &x) |
Sequence number abstraction. Only allows positive 64 bit values.
Definition at line 27 of file SequenceNumber.h.
Definition at line 29 of file SequenceNumber.h.
Construct with a value, default to one (starting point).
Definition at line 31 of file SequenceNumber.h.
00031 { 00032 setValue(value); 00033 }
OpenDDS::DCPS::SequenceNumber::SequenceNumber | ( | ACE_INT32 | high, | |
ACE_UINT32 | low | |||
) | [inline, private] |
Definition at line 147 of file SequenceNumber.h.
ACE_INT32 OpenDDS::DCPS::SequenceNumber::getHigh | ( | ) | const [inline] |
Definition at line 121 of file SequenceNumber.h.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::add_gap_submsg(), OpenDDS::RTPS::Spdp::SpdpTransport::dispose_unregister(), OpenDDS::DCPS::RtpsUdpDataLink::marshal_gaps(), OpenDDS::DCPS::operator<<(), OpenDDS::DCPS::RtpsSampleHeader::populate_data_control_submessages(), OpenDDS::DCPS::RtpsSampleHeader::populate_data_sample_submessages(), OpenDDS::DCPS::RtpsUdpDataLink::send_heartbeat_replies(), OpenDDS::DCPS::RtpsUdpDataLink::send_heartbeats(), OpenDDS::DCPS::RtpsUdpDataLink::send_heartbeats_manual(), and OpenDDS::RTPS::Spdp::SpdpTransport::write_i().
00121 { 00122 return high_; 00123 }
ACE_UINT32 OpenDDS::DCPS::SequenceNumber::getLow | ( | ) | const [inline] |
Definition at line 124 of file SequenceNumber.h.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::add_gap_submsg(), OpenDDS::RTPS::Spdp::SpdpTransport::dispose_unregister(), OpenDDS::DCPS::TransportReassembly::get_gaps(), OpenDDS::DCPS::RtpsUdpDataLink::marshal_gaps(), OpenDDS::DCPS::operator<<(), OpenDDS::DCPS::RtpsSampleHeader::populate_data_control_submessages(), OpenDDS::DCPS::RtpsSampleHeader::populate_data_sample_submessages(), OpenDDS::DCPS::RtpsUdpDataLink::send_heartbeat_replies(), OpenDDS::DCPS::RtpsUdpDataLink::send_heartbeats(), OpenDDS::DCPS::RtpsUdpDataLink::send_heartbeats_manual(), and OpenDDS::RTPS::Spdp::SpdpTransport::write_i().
00124 { 00125 return low_; 00126 }
Value OpenDDS::DCPS::SequenceNumber::getValue | ( | ) | const [inline] |
Definition at line 92 of file SequenceNumber.h.
Referenced by OpenDDS::DCPS::TcpDataLink::ack_received(), OpenDDS::DCPS::UdpReceiveStrategy::check_header(), OpenDDS::DCPS::BestEffortSession::check_header(), OpenDDS::DCPS::DataWriterImpl::create_ack_token(), OpenDDS::DCPS::WriteDataContainer::data_delivered(), OpenDDS::DCPS::RtpsUdpReceiveStrategy::deliver_sample_i(), OpenDDS::DCPS::ReliableSession::expire_naks(), OpenDDS::DCPS::TcpDataLink::handle_send_request_ack(), OpenDDS::DCPS::SingleSendBuffer::insert(), OpenDDS::DCPS::RtpsUdpDataLink::MultiSendBuffer::insert(), OpenDDS::DCPS::DisjointSequence::insert(), OpenDDS::DCPS::SingleSendBuffer::insert_fragment(), OpenDDS::DCPS::ReliableSession::nak_received(), OpenDDS::DCPS::operator+(), OpenDDS::DCPS::operator+=(), OpenDDS::DCPS::RtpsUdpDataLink::process_data_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_gap_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_heartbeat_i(), OpenDDS::DCPS::ReliableSession::ready_to_deliver(), OpenDDS::DCPS::TransportReassembly::reassemble_i(), OpenDDS::DCPS::InstanceState::sample_info(), OpenDDS::DCPS::DataReaderImpl::sample_info(), OpenDDS::DCPS::RtpsUdpDataLink::send_ack_nacks(), OpenDDS::DCPS::ReliableSession::send_nakack(), OpenDDS::DCPS::ReliableSession::send_naks(), OpenDDS::DCPS::WriteDataContainer::sequence_acknowledged(), OpenDDS::DCPS::DisjointSequence::to_bitmap(), OpenDDS::DCPS::WriteDataContainer::wait_ack_of_seq(), and OpenDDS::DCPS::DataWriterImpl::wait_for_acknowledgments().
bool OpenDDS::DCPS::SequenceNumber::operator!= | ( | const SequenceNumber & | rvalue | ) | const [inline] |
SequenceNumber OpenDDS::DCPS::SequenceNumber::operator++ | ( | int | ) | [inline] |
Post-increment.
Definition at line 54 of file SequenceNumber.h.
00054 { 00055 SequenceNumber value(*this); 00056 ++*this; 00057 return value ; 00058 }
SequenceNumber& OpenDDS::DCPS::SequenceNumber::operator++ | ( | void | ) | [inline] |
Pre-increment.
Definition at line 36 of file SequenceNumber.h.
00036 { 00037 if (this->low_ == ACE_UINT32_MAX) { 00038 if (this->high_ == ACE_INT32_MAX) { 00039 // this code is here, despite the RTPS spec statement: 00040 // "sequence numbers never wrap" 00041 this->high_ = 0; 00042 this->low_ = 1; 00043 } else { 00044 ++this->high_; 00045 this->low_ = 0; 00046 } 00047 } else { 00048 ++this->low_; 00049 } 00050 return *this ; 00051 }
bool OpenDDS::DCPS::SequenceNumber::operator< | ( | const SequenceNumber & | rvalue | ) | const [inline] |
bool OpenDDS::DCPS::SequenceNumber::operator<= | ( | const SequenceNumber & | rvalue | ) | const [inline] |
Definition at line 113 of file SequenceNumber.h.
bool OpenDDS::DCPS::SequenceNumber::operator== | ( | const SequenceNumber & | rvalue | ) | const [inline] |
bool OpenDDS::DCPS::SequenceNumber::operator> | ( | const SequenceNumber & | rvalue | ) | const [inline] |
Definition at line 116 of file SequenceNumber.h.
bool OpenDDS::DCPS::SequenceNumber::operator>= | ( | const SequenceNumber & | rvalue | ) | const [inline] |
Definition at line 110 of file SequenceNumber.h.
SequenceNumber OpenDDS::DCPS::SequenceNumber::previous | ( | void | ) | const [inline] |
Definition at line 60 of file SequenceNumber.h.
Referenced by OpenDDS::DCPS::UdpReceiveStrategy::check_header(), OpenDDS::DCPS::BestEffortSession::check_header(), OpenDDS::DCPS::RtpsUdpDataLink::marshal_gaps(), OpenDDS::DCPS::RtpsUdpDataLink::process_data_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_gap_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_heartbeat_i(), OpenDDS::DCPS::BestEffortSession::ready_to_deliver(), OpenDDS::DCPS::RtpsUdpDataLink::received(), and OpenDDS::DCPS::RtpsUdpDataLink::send_ack_nacks().
00060 { 00061 SequenceNumber retVal(*this); 00062 if ((this->low_ == 1) && (this->high_ == 0)) { 00063 retVal.high_ = ACE_INT32_MAX; 00064 retVal.low_ = ACE_UINT32_MAX; 00065 return retVal; 00066 } 00067 if (this->low_ == 0) { 00068 --retVal.high_; 00069 retVal.low_ = ACE_UINT32_MAX; 00070 } else { 00071 --retVal.low_; 00072 } 00073 return retVal ; 00074 }
static SequenceNumber OpenDDS::DCPS::SequenceNumber::SEQUENCENUMBER_UNKNOWN | ( | ) | [inline, static] |
Definition at line 129 of file SequenceNumber.h.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::add_gap_submsg(), OpenDDS::DCPS::UdpReceiveStrategy::check_header(), OpenDDS::DCPS::BestEffortSession::check_header(), OpenDDS::DCPS::DataReaderImpl::check_historic(), OpenDDS::DCPS::DataWriterImpl::create_control_message(), OpenDDS::DCPS::ReplayerImpl::create_sample_data_message(), OpenDDS::DCPS::DataWriterImpl::create_sample_data_message(), OpenDDS::DCPS::WriteDataContainer::data_delivered(), OpenDDS::DCPS::RtpsUdpDataLink::MultiSendBuffer::insert(), OpenDDS::DCPS::BestEffortSession::ready_to_deliver(), OpenDDS::DCPS::RtpsUdpDataLink::received(), OpenDDS::DCPS::RtpsCustomizedElement::sequence(), OpenDDS::DCPS::WriteDataContainer::sequence_acknowledged(), and OpenDDS::DCPS::RtpsSampleHeader::split().
00129 { 00130 return SequenceNumber(-1, 0); 00131 }
void OpenDDS::DCPS::SequenceNumber::setValue | ( | ACE_INT32 | high, | |
ACE_UINT32 | low | |||
) | [inline] |
void OpenDDS::DCPS::SequenceNumber::setValue | ( | Value | value | ) | [inline] |
Definition at line 76 of file SequenceNumber.h.
Referenced by OpenDDS::DCPS::RtpsSampleHeader::into_received_data_sample(), OpenDDS::DCPS::RtpsUdpDataLink::marshal_gaps(), OpenDDS::DCPS::operator+=(), OpenDDS::DCPS::RtpsUdpDataLink::process_data_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_gap_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_hb_frag_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_heartbeat_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_requested_changes(), and OpenDDS::DCPS::RtpsUdpDataLink::received().
00076 { 00077 if (value < MIN_VALUE) { 00078 value = MIN_VALUE; 00079 } 00080 this->high_ = ACE_INT32(value / LOW_BASE); 00081 this->low_ = ACE_UINT32(value % LOW_BASE); 00082 }
static SequenceNumber OpenDDS::DCPS::SequenceNumber::ZERO | ( | ) | [inline, static] |
Definition at line 133 of file SequenceNumber.h.
Referenced by OpenDDS::DCPS::DisjointSequence::insert_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_heartbeat_i(), OpenDDS::DCPS::RtpsUdpDataLink::received(), OpenDDS::DCPS::SingleSendBuffer::resend_fragments_i(), and OpenDDS::DCPS::RtpsUdpDataLink::send_ack_nacks().
00133 { 00134 return SequenceNumber(0, 0); 00135 }
ACE_CDR::Boolean operator>> | ( | Serializer & | s, | |
SequenceNumber & | x | |||
) | [friend] |
Definition at line 151 of file SequenceNumber.h.
Referenced by operator!=(), operator<(), operator==(), and previous().
Definition at line 152 of file SequenceNumber.h.
Referenced by operator!=(), operator<(), operator==(), and previous().
const Value OpenDDS::DCPS::SequenceNumber::LOW_BASE = 0x0000000100000000LL [static] |
Definition at line 139 of file SequenceNumber.h.
const Value OpenDDS::DCPS::SequenceNumber::MAX_VALUE = ACE_INT64_MAX [static] |
Definition at line 137 of file SequenceNumber.h.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::process_acked_by_all_i(), OpenDDS::DCPS::RtpsUdpDataLink::process_gap_i(), and OpenDDS::DCPS::RtpsUdpDataLink::send_nack_replies().
const Value OpenDDS::DCPS::SequenceNumber::MIN_VALUE = 1 [static] |
Definition at line 138 of file SequenceNumber.h.