Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Attributes

ACE_RMCast::NAK Class Reference

#include <Protocol.h>

Inheritance diagram for ACE_RMCast::NAK:
Inheritance graph
[legend]
Collaboration diagram for ACE_RMCast::NAK:
Collaboration graph
[legend]

List of all members.

Public Types

typedef ACE_Vector< u64,
ACE_VECTOR_DEFAULT_SIZE > 
SerialNumbers
typedef SerialNumbers::Iterator iterator

Public Member Functions

 NAK (Header const &h, istream &is)
 NAK (Address const &src)
NAK_ptr clone ()
void add (u64 sn)
Address const & address () const
iterator begin ()
size_t count () const
virtual void serialize_body (ostream &os) const
virtual void serialize_body (sstream &ss) const

Static Public Member Functions

static u32 max_count (u32 max_size)

Static Public Attributes

static u16 const id = 0x0005

Protected Member Functions

virtual Profile_ptr clone_ ()
 NAK (NAK const &nak)

Private Attributes

Address address_
SerialNumbers sns_

Detailed Description

Definition at line 756 of file Protocol.h.


Member Typedef Documentation

Definition at line 763 of file Protocol.h.

typedef ACE_Vector<u64, ACE_VECTOR_DEFAULT_SIZE> ACE_RMCast::NAK::SerialNumbers

Definition at line 762 of file Protocol.h.


Constructor & Destructor Documentation

ACE_RMCast::NAK::NAK ( Header const &  h,
istream is 
) [inline]

Definition at line 765 of file Protocol.h.

        : Profile (h)
    {
      u64 sn (0);
      u32 addr (0);
      u16 port (0);

      sstream ss;

      ss << sn;
      size_t sn_size (ss.total_length ());

      ss.reset ();

      ss << addr;
      ss << port;

      size_t addr_size (ss.total_length ());


      is >> addr;
      is >> port;

      // num_of_sns = (size - addr_size) / sn_size
      //
      for (unsigned long i (0); i < ((h.size () - addr_size) / sn_size); ++i)
      {
        is >> sn;
        sns_.push_back (sn);
      }


      address_ = Address (port, addr);
    }

ACE_RMCast::NAK::NAK ( Address const &  src  )  [inline]

Definition at line 800 of file Protocol.h.

        : Profile (id), address_ (src)
    {
      size (calculate_size ());
    }

ACE_RMCast::NAK::NAK ( NAK const &  nak  )  [inline, protected]

Definition at line 820 of file Protocol.h.

        : Profile (nak),
          address_ (nak.address_),
          sns_ (nak.sns_)
    {
    }


Member Function Documentation

void ACE_RMCast::NAK::add ( u64  sn  )  [inline]

Definition at line 829 of file Protocol.h.

    {
      sns_.push_back (sn);
      size (calculate_size ());
    }

Address const& ACE_RMCast::NAK::address ( void   )  const [inline]

Definition at line 837 of file Protocol.h.

    {
      return address_;
    }

iterator ACE_RMCast::NAK::begin ( void   )  [inline]

Definition at line 844 of file Protocol.h.

    {
      return iterator (sns_);
    }

NAK_ptr ACE_RMCast::NAK::clone ( void   )  [inline]

Reimplemented from ACE_RMCast::Profile.

Definition at line 807 of file Protocol.h.

    {
      return NAK_ptr (clone_ ());
    }

virtual Profile_ptr ACE_RMCast::NAK::clone_ (  )  [inline, protected, virtual]

Implements ACE_RMCast::Profile.

Definition at line 814 of file Protocol.h.

    {
      Profile_ptr p (new NAK (*this));
      return p;
    }

size_t ACE_RMCast::NAK::count ( void   )  const [inline]

Definition at line 858 of file Protocol.h.

    {
      return sns_.size ();
    }

static u32 ACE_RMCast::NAK::max_count ( u32  max_size  )  [inline, static]

Definition at line 868 of file Protocol.h.

    {
      u32 n (0);

      sstream ss;

      Profile::Header hdr (0, 0);
      ss << hdr;

      u32 addr (0);
      u16 port (0);
      ss << addr;
      ss << port;

      while (true)
      {
        u64 sn (0);
        ss << sn;

        if (ss.total_length () <= max_size)
          ++n;

        if (ss.total_length () >= max_size)
          break;
      }

      return n;
    }

virtual void ACE_RMCast::NAK::serialize_body ( sstream ss  )  const [inline, virtual]

Implements ACE_RMCast::Profile.

Definition at line 920 of file Protocol.h.

    {
      NAK& this_ = const_cast<NAK&> (*this); // Don't put in ROM.

      u32 addr (0);
      u16 port (0);

      ss << addr;
      ss << port;

      // Stone age iteration.
      //
      for (iterator i (this_.begin ()); !i.done (); i.advance ())
      {
        u64 sn (0);
        ss << sn;
      }
    }

virtual void ACE_RMCast::NAK::serialize_body ( ostream os  )  const [inline, virtual]

Implements ACE_RMCast::Profile.

Definition at line 899 of file Protocol.h.

    {
      NAK& this_ = const_cast<NAK&> (*this); // Don't put in ROM.

      u32 addr (address_.get_ip_address ());
      u16 port (address_.get_port_number ());

      os << addr;
      os << port;

      // Stone age iteration.
      //
      for (iterator i (this_.begin ()); !i.done (); i.advance ())
      {
        u64* psn = 0;
        i.next (psn);
        os << *psn;
      }
    }


Member Data Documentation

Definition at line 940 of file Protocol.h.

u16 const ACE_RMCast::NAK::id = 0x0005 [static]

Definition at line 760 of file Protocol.h.

Definition at line 941 of file Protocol.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Defines