Public Types | Public Member Functions | Private Member Functions | Private Attributes

TAO_Parser_Registry Class Reference

Maintain the collection of known IOR format parsers. More...

#include <Parser_Registry.h>

Collaboration diagram for TAO_Parser_Registry:
Collaboration graph
[legend]

List of all members.

Public Types

typedef TAO_IOR_Parser ** Parser_Iterator

Public Member Functions

 TAO_Parser_Registry (void)
 Default constructor.
 ~TAO_Parser_Registry (void)
 Dstructor.
int open (TAO_ORB_Core *orb_core)
TAO_IOR_Parsermatch_parser (const char *ior_string)
Parser_Iterator begin (void) const
Parser_Iterator end (void) const

Private Member Functions

 TAO_Parser_Registry (const TAO_Parser_Registry &)
void operator= (const TAO_Parser_Registry &)

Private Attributes

TAO_IOR_Parser ** parsers_
 List of parsers.
size_t size_
 Number of parsers.

Detailed Description

Maintain the collection of known IOR format parsers.

The ORB dynamically loads a collection of IOR parsers (check the IOR_Parser class). The collection is kept in this class for easy lookup and use.

Definition at line 46 of file Parser_Registry.h.


Member Typedef Documentation

Definition at line 65 of file Parser_Registry.h.


Constructor & Destructor Documentation

TAO_Parser_Registry::TAO_Parser_Registry ( void   ) 

Default constructor.

Definition at line 19 of file Parser_Registry.cpp.

  : parsers_ (0),
    size_ (0)
{
}

TAO_Parser_Registry::~TAO_Parser_Registry ( void   ) 

Dstructor.

Definition at line 25 of file Parser_Registry.cpp.

{
  delete [] this->parsers_;
}

TAO_Parser_Registry::TAO_Parser_Registry ( const TAO_Parser_Registry  )  [private]

Member Function Documentation

TAO_Parser_Registry::Parser_Iterator TAO_Parser_Registry::begin ( void   )  const

Definition at line 8 of file Parser_Registry.inl.

{
  return this->parsers_;
}

TAO_Parser_Registry::Parser_Iterator TAO_Parser_Registry::end ( void   )  const

Definition at line 14 of file Parser_Registry.inl.

{
  return this->parsers_ + this->size_;
}

TAO_IOR_Parser * TAO_Parser_Registry::match_parser ( const char *  ior_string  ) 

Find the parser that can parse ior_string The lookup is based on the prefix in the string

Definition at line 79 of file Parser_Registry.cpp.

{
  for (Parser_Iterator i = this->begin (); i != this->end (); ++i)
    {
      if ((*i)->match_prefix (ior_string))
        {
          return *i;
        }
    }

  return 0;
}

int TAO_Parser_Registry::open ( TAO_ORB_Core orb_core  ) 

Initialize the parser registry with the list of known protocols. Invoked by the ORB during startup.

Definition at line 31 of file Parser_Registry.cpp.

{
  char **names = 0;
  int number_of_names = 0;

  if (orb_core->resource_factory () == 0)
    {
      return -1;
    }

  orb_core->resource_factory ()->get_parser_names (names, number_of_names);

  if (number_of_names == 0)
    {
      return -1;
    }

  this->size_ = number_of_names;
  ACE_NEW_RETURN (this->parsers_,
                  TAO_IOR_Parser*[this->size_],
                  -1);

  for (size_t i = 0, index = 0; i != this->size_; ++i)
    {
      this->parsers_[index] =
        ACE_Dynamic_Service<TAO_IOR_Parser>::instance (orb_core->configuration (),
                                                       names [i]);

      if (this->parsers_[index] == 0)
        {
          --number_of_names;
          if (TAO_debug_level >= 1)
            {
              ACE_DEBUG ((LM_DEBUG, "TAO (%P|%t) Failed to find Service Object"
                          " for %C.\n", names[i]));
            }
        }
      else
        {
          ++index;
        }
    }

  this->size_ = number_of_names;
  return 0;
}

void TAO_Parser_Registry::operator= ( const TAO_Parser_Registry  )  [private]

Member Data Documentation

List of parsers.

Definition at line 78 of file Parser_Registry.h.

size_t TAO_Parser_Registry::size_ [private]

Number of parsers.

Definition at line 81 of file Parser_Registry.h.


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