Maintain the collection of known IOR format parsers. More...
#include <Parser_Registry.h>
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_Parser * | match_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. |
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.
Definition at line 65 of file Parser_Registry.h.
TAO_Parser_Registry::TAO_Parser_Registry | ( | void | ) |
Default constructor.
Definition at line 19 of file Parser_Registry.cpp.
TAO_Parser_Registry::~TAO_Parser_Registry | ( | void | ) |
TAO_Parser_Registry::TAO_Parser_Registry | ( | const TAO_Parser_Registry & | ) | [private] |
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.
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] |
TAO_IOR_Parser** TAO_Parser_Registry::parsers_ [private] |
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.