Public Member Functions | Protected Member Functions | Private Attributes

ACE::INet::URL_INetBase Class Reference

#include <URLBase.h>

Inheritance diagram for ACE::INet::URL_INetBase:
Inheritance graph
[legend]
Collaboration diagram for ACE::INet::URL_INetBase:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 URL_INetBase (u_short port)
virtual ~URL_INetBase ()
void set_host (const ACE_CString &host)
void set_port (u_short port)
const ACE_CStringget_host () const
u_short get_port () const
virtual u_short default_port () const =0
virtual ACE_CString get_authority () const
virtual bool validate ()

Protected Member Functions

virtual int parse_authority (std::istream &is)
virtual bool has_authority ()
int parse_authority_i (std::istream &is, std::ostream &os, int lastch)

Private Attributes

ACE_CString host_
u_short port_

Detailed Description

Definition at line 147 of file URLBase.h.


Constructor & Destructor Documentation

ACE::INet::URL_INetBase::URL_INetBase ( u_short  port  ) 

Definition at line 243 of file URLBase.cpp.

      : URL_Base (), port_ (port)
      {
      }

ACE::INet::URL_INetBase::~URL_INetBase (  )  [virtual]

Definition at line 248 of file URLBase.cpp.

{}


Member Function Documentation

virtual u_short ACE::INet::URL_INetBase::default_port (  )  const [pure virtual]
ACE_CString ACE::INet::URL_INetBase::get_authority (  )  const [virtual]

Reimplemented from ACE::INet::URL_Base.

Reimplemented in ACE::INet::URL_INetAuthBase.

Definition at line 335 of file URLBase.cpp.

      {
        ACE::IOS::CString_OStream sos;
        sos << this->get_host().c_str ();
        if (this->get_port () != this->default_port ())
          sos << ':' << this->get_port ();
        return sos.str ();
      }

const ACE_CString & ACE::INet::URL_INetBase::get_host (  )  const [inline]

Definition at line 58 of file URLBase.inl.

      {
        return this->host_;
      }

u_short ACE::INet::URL_INetBase::get_port (  )  const [inline]

Definition at line 64 of file URLBase.inl.

      {
        return this->port_;
      }

bool ACE::INet::URL_INetBase::has_authority (  )  [protected, virtual]

Reimplemented from ACE::INet::URL_Base.

Definition at line 325 of file URLBase.cpp.

      {
        return true;
      }

int ACE::INet::URL_INetBase::parse_authority ( std::istream &  is  )  [protected, virtual]

Reimplemented from ACE::INet::URL_Base.

Reimplemented in ACE::INet::URL_INetAuthBase.

Definition at line 250 of file URLBase.cpp.

      {
        ACE::IOS::CString_OStream sos;
        return this->parse_authority_i (is, sos, 0);
      }

int ACE::INet::URL_INetBase::parse_authority_i ( std::istream &  is,
std::ostream &  os,
int  lastch 
) [protected]

Definition at line 256 of file URLBase.cpp.

      {
        static const int eof =
          std::char_traits<ACE::IOS::CString_OStream::char_type>::eof ();

        ACE::IOS::CString_OStream& sos =
            dynamic_cast<ACE::IOS::CString_OStream&> (os);

        int ch = lastch;
        if (ch == 0)
          {
            // parse host part
            for (ch = is.get ();
#if defined (ACE_HAS_IPV6)
                 ch != '[' && ch != '/' && ch != ':' && ch != '@' && ch != '?' && ch != '#' && ch != eof ;
#else
                 ch != '/' && ch != ':' && ch != '@' && ch != '?' && ch != '#' && ch != eof ;
#endif
                 ch = is.get ())
              sos.put (ch);
          }

#if defined (ACE_HAS_IPV6)
        if (ch == '[')
          {
            sos.clear ();
            for (ch = is.get (); ch != ']' && ch != eof ;ch = is.get ())
              sos.put (ch);
            if (ch != eof)
              ch = is.get (); // skip ']'
            if (ch != '/' && ch != ':' && ch != '?' && ch != '#' && ch != eof)
              {
                this->set_host (empty_); // invalid URL, clear host field
                ch = eof; // stop parsing
              }
            else
              {
                this->set_host (sos.str ());
              }
          }
        else
          {
#endif
            this->set_host (sos.str ());
#if defined (ACE_HAS_IPV6)
          }
#endif
        sos.clear ();

        if (ch == ':')
          {
            u_short port = 0;
            is >> port; // should stop at '/' or '?' or '#' or eof
            ch = is.get ();
            if (ch == '/' || ch == '?' || ch == '#' || ch == eof)
              this->set_port (port);
            else
              this->set_port (0);
          }
        else
          {
            this->set_port (this->default_port ());
          }

        return ch;
      }

void ACE::INet::URL_INetBase::set_host ( const ACE_CString host  )  [inline]

Definition at line 70 of file URLBase.inl.

      {
        this->host_ = host;
      }

void ACE::INet::URL_INetBase::set_port ( u_short  port  )  [inline]

Definition at line 76 of file URLBase.inl.

      {
        this->port_ = port;
      }

bool ACE::INet::URL_INetBase::validate (  )  [virtual]

Reimplemented from ACE::INet::URL_Base.

Definition at line 330 of file URLBase.cpp.

      {
        return !this->host_.empty () && this->port_>0;
      }


Member Data Documentation

Definition at line 178 of file URLBase.h.

u_short ACE::INet::URL_INetBase::port_ [private]

Definition at line 179 of file URLBase.h.


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