#include <Registry_Name_Space.h>
Inheritance diagram for ACE_Registry_Name_Space:


Public Member Functions | |
| ACE_Registry_Name_Space (void) | |
| Constructor. | |
| ACE_Registry_Name_Space (ACE_Name_Options *name_options) | |
| Contacts and opens the registry on the specified server. | |
| ~ACE_Registry_Name_Space (void) | |
| Destructor. | |
| int | open (ACE_Name_Options *name_options) |
| Contacts and opens the registry on the specified server. | |
| int | bind (const ACE_NS_WString &name_in, const ACE_NS_WString &value_in, const char *type_in="") |
| Bind a new name to a naming context (Wide character strings). | |
| int | rebind (const ACE_NS_WString &name_in, const ACE_NS_WString &value_in, const char *type_in="") |
| int | unbind (const ACE_NS_WString &name_in) |
| int | resolve (const ACE_NS_WString &name_in, ACE_NS_WString &value_out, char *&type_out) |
| int | list_names (ACE_WSTRING_SET &set_out, const ACE_NS_WString &pattern_in) |
| int | list_values (ACE_WSTRING_SET &set_out, const ACE_NS_WString &pattern_in) |
| int | list_types (ACE_WSTRING_SET &set_out, const ACE_NS_WString &pattern_in) |
| int | list_name_entries (ACE_BINDING_SET &set, const ACE_NS_WString &pattern) |
| int | list_value_entries (ACE_BINDING_SET &set, const ACE_NS_WString &pattern) |
| int | list_type_entries (ACE_BINDING_SET &set, const ACE_NS_WString &pattern) |
| void | dump (void) const |
| Dump the state of the object. | |
Private Attributes | |
| ACE_Registry::Naming_Context | context_ |
| current context | |
Manages a Naming Service for a registry name space which includes bindings for all contexts. All strings are stored in wide character format. A Name Binding consists of a name (that's the key), a value string. There is no type string support in this Name Space.
Definition at line 46 of file Registry_Name_Space.h.
|
|
Constructor.
Definition at line 12 of file Registry_Name_Space.cpp.
00013 {
00014 }
|
|
|
Contacts and opens the registry on the specified server.
Definition at line 16 of file Registry_Name_Space.cpp. References ACE_ERROR, ACE_LIB_TEXT, LM_ERROR, and open().
|
|
|
Destructor.
Definition at line 24 of file Registry_Name_Space.cpp.
00025 {
00026 }
|
|
||||||||||||||||
|
Bind a new name to a naming context (Wide character strings).
Implements ACE_Name_Space. Definition at line 62 of file Registry_Name_Space.cpp. References ACE_WSTRING_TYPE, ACE_Registry::Naming_Context::bind(), ACE_NS_WString::char_rep(), ACE_String_Base< CHAR >::fast_rep(), and ACE_String_Base< CHAR >::length().
00065 {
00066 ACE_UNUSED_ARG(type);
00067
00068 // Pointer to data
00069 const ACE_WSTRING_TYPE *data = value.fast_rep ();
00070
00071 // Size
00072 size_t size = value.length () * sizeof (ACE_WSTRING_TYPE);
00073
00074 // Represent value as an ACE_Registry::Object
00075 ACE_Registry::Object object ((void *) data,
00076 static_cast<u_long> (size),
00077 REG_SZ);
00078 // Add new <key>/<value> pair
00079 #if defined ACE_USES_WCHAR
00080 return this->context_.bind (name.fast_rep(),
00081 object);
00082 #else
00083 return this->context_.bind (name.char_rep(),
00084 object);
00085 #endif /* ACE_HAS_WCHAR */
00086 }
|
|
|
Dump the state of the object.
Implements ACE_Name_Space. Definition at line 285 of file Registry_Name_Space.cpp.
00286 {
00287 #if defined (ACE_HAS_DUMP)
00288 #endif /* ACE_HAS_DUMP */
00289 }
|
|
||||||||||||
|
Get a set of names matching a specified pattern (wchars). Matching means the names must begin with the pattern string. Returns the complete binding associated each pattern match. Implements ACE_Name_Space. Definition at line 226 of file Registry_Name_Space.cpp. References ACE_BINDING_SET, ACE_ERROR_RETURN, ACE_LIB_TEXT, ACE_TString, ACE_Unbounded_Set< T >::begin(), ACE_Registry::Binding_List, ACE_String_Base< CHAR >::c_str(), ACE_Unbounded_Set< T >::end(), ACE_Unbounded_Set< T >::insert(), ACE_Registry::Naming_Context::list(), LM_ERROR, ACE_Registry::Binding::name(), resolve(), and ACE_Registry::Binding::type(). Referenced by list_names(), list_type_entries(), list_value_entries(), and list_values().
00228 {
00229 ACE_UNUSED_ARG(pattern);
00230
00231 ACE_Registry::Binding_List list;
00232 int result = this->context_.list (list);
00233 if (result != 0)
00234 return result;
00235
00236 // Iterator through all entries
00237 for (ACE_Registry::Binding_List::iterator i = list.begin ();
00238 i != list.end ();
00239 i++)
00240 {
00241 // Yeeesss! STL rules!
00242 ACE_Registry::Binding &binding = *i;
00243
00244 if (binding.type () == ACE_Registry::OBJECT)
00245 {
00246 // Key
00247 ACE_TString string = binding.name ();
00248 ACE_NS_WString key (string.c_str ());
00249
00250 // Value
00251 ACE_NS_WString value;
00252 char *type = 0;
00253 result = this->resolve (key,
00254 value,
00255 type);
00256 if (result != 0)
00257 ACE_ERROR_RETURN ((LM_ERROR, ACE_LIB_TEXT ("%p\n"), ACE_LIB_TEXT ("ACE_Registry::Naming_Context::resolve")), result);
00258
00259 // Complete binding
00260 ACE_Name_Binding binding (key, value, type);
00261 set.insert (binding);
00262 }
00263 }
00264 return 0;
00265 }
|
|
||||||||||||
|
Get a set of names matching a specified pattern (wchars). Matching means the names must begin with the pattern string. Implements ACE_Name_Space. Definition at line 171 of file Registry_Name_Space.cpp. References ACE_BINDING_ITERATOR, ACE_BINDING_SET, ACE_WSTRING_SET, ACE_Unbounded_Set_Iterator< T >::advance(), ACE_Unbounded_Set< T >::insert(), list_name_entries(), ACE_Name_Binding::name_, and ACE_Unbounded_Set_Iterator< T >::next().
00173 {
00174 ACE_BINDING_SET binding_set;
00175 int result = this->list_name_entries (binding_set,
00176 pattern);
00177 if (result != 0)
00178 return result;
00179
00180 ACE_BINDING_ITERATOR iterator (binding_set);
00181
00182 for (ACE_Name_Binding *entry = 0;
00183 iterator.next (entry) !=0;
00184 iterator.advance())
00185 {
00186 set.insert (entry->name_);
00187 }
00188 return 0;
00189 }
|
|
||||||||||||
|
Get a set of types matching a specified pattern (wchars). Matching means the types must begin with the pattern string. Returns the complete binding associated each pattern match. Implements ACE_Name_Space. Definition at line 277 of file Registry_Name_Space.cpp. References ACE_BINDING_SET, and list_name_entries().
00279 {
00280 return this->list_name_entries (set, pattern);
00281 }
|
|
||||||||||||
|
Get a set of types matching a specified pattern (wchars). Matching means the types must begin with the pattern string. Implements ACE_Name_Space. Definition at line 215 of file Registry_Name_Space.cpp. References ACE_WSTRING_SET.
00217 {
00218 ACE_UNUSED_ARG(set);
00219 ACE_UNUSED_ARG(pattern);
00220
00221 return 0;
00222 }
|
|
||||||||||||
|
Get a set of values matching a specified pattern (wchars). Matching means the values must begin with the pattern string. Returns the complete binding associated each pattern match. Implements ACE_Name_Space. Definition at line 269 of file Registry_Name_Space.cpp. References ACE_BINDING_SET, and list_name_entries().
00271 {
00272 return this->list_name_entries (set, pattern);
00273 }
|
|
||||||||||||
|
Get a set of values matching a specified pattern (wchars). Matching means the values must begin with the pattern string. Implements ACE_Name_Space. Definition at line 193 of file Registry_Name_Space.cpp. References ACE_BINDING_ITERATOR, ACE_BINDING_SET, ACE_WSTRING_SET, ACE_Unbounded_Set_Iterator< T >::advance(), ACE_Unbounded_Set< T >::insert(), list_name_entries(), ACE_Unbounded_Set_Iterator< T >::next(), and ACE_Name_Binding::value_.
00195 {
00196 ACE_BINDING_SET binding_set;
00197 int result = this->list_name_entries (binding_set,
00198 pattern);
00199 if (result != 0)
00200 return result;
00201
00202 ACE_BINDING_ITERATOR iterator (binding_set);
00203
00204 for (ACE_Name_Binding *entry = 0;
00205 iterator.next (entry) !=0;
00206 iterator.advance())
00207 {
00208 set.insert (entry->value_);
00209 }
00210 return 0;
00211 }
|
|
|
Contacts and opens the registry on the specified server.
Definition at line 30 of file Registry_Name_Space.cpp. References ACE_ERROR_RETURN, ACE_LIB_TEXT, ACE_TCHAR, ACE_TString, ACE_Registry::Naming_Context::bind_context(), ACE_Predefined_Naming_Contexts::connect(), ACE_Name_Options::database(), LM_ERROR, ACE_Name_Options::nameserver_host(), and ACE_Name_Options::namespace_dir(). Referenced by ACE_Registry_Name_Space().
00031 {
00032 const ACE_TCHAR *host = name_options->nameserver_host ();
00033 ACE_Registry::Naming_Context predefined;
00034
00035 int result = ACE_Predefined_Naming_Contexts::connect (predefined,
00036 HKEY_LOCAL_MACHINE,
00037 host);
00038 if (result != 0)
00039 ACE_ERROR_RETURN ((LM_ERROR, ACE_LIB_TEXT ("%p\n"),
00040 ACE_LIB_TEXT ("ACE_Predefined_Naming_Context::connect")),
00041 result);
00042 else
00043 {
00044 // Directory
00045 ACE_TString name = name_options->namespace_dir ();
00046 // Separator
00047 name += ACE_Registry::STRING_SEPARATOR;
00048 // Filename
00049 name += name_options->database ();
00050
00051 // Create new context or bind to existing one
00052 result = predefined.bind_context (name,
00053 this->context_);
00054 if (result != 0)
00055 ACE_ERROR_RETURN ((LM_ERROR, ACE_LIB_TEXT ("%p\n"), ACE_LIB_TEXT ("ACE_Registry::Naming_Context::bind_context")), result);
00056 }
00057 return 0;
00058 }
|
|
||||||||||||||||
|
Overwrite the value or type of an existing name in a ACE_Name_Space or bind a new name to the context, if it didn't exist yet. (Wide charcter strings interface). Implements ACE_Name_Space. Definition at line 90 of file Registry_Name_Space.cpp. References ACE_WSTRING_TYPE, ACE_NS_WString::char_rep(), ACE_String_Base< CHAR >::fast_rep(), ACE_String_Base< CHAR >::length(), and ACE_Registry::Naming_Context::rebind().
00093 {
00094 ACE_UNUSED_ARG(type);
00095
00096 // Pointer to data
00097 const ACE_WSTRING_TYPE *data = value.fast_rep ();
00098
00099 // Size
00100 size_t size = value.length () * sizeof (ACE_WSTRING_TYPE);
00101
00102 // Represent value as an ACE_Registry::Object
00103 ACE_Registry::Object object ((void *) data,
00104 static_cast<u_long> (size),
00105 REG_SZ);
00106 // Add new <key>/<value> pair
00107 #if defined (ACE_USES_WCHAR)
00108 return this->context_.rebind (name.fast_rep (),
00109 object);
00110 #else
00111 return this->context_.rebind (name.char_rep (),
00112 object);
00113 #endif /* ACE_USES_WCHAR */
00114 }
|
|
||||||||||||||||
|
Get value and type of a given name binding (Wide chars). The caller is responsible for deleting both and ! Implements ACE_Name_Space. Definition at line 129 of file Registry_Name_Space.cpp. References ACE_WSTRING_TYPE, ACE_NS_WString::char_rep(), ACE_String_Base< CHAR >::fast_rep(), ACE_String_Base< CHAR >::resize(), ACE_Registry::Naming_Context::resolve(), and ACE_Registry::Object::size(). Referenced by list_name_entries().
00132 {
00133 ACE_UNUSED_ARG(type);
00134
00135 // This object will be used to query the size of the data.
00136 // Note: The query_object.data will be null for this invocation.
00137 ACE_Registry::Object query_object;
00138 int result =
00139 #if defined (ACE_USES_WCHAR)
00140 this->context_.resolve (name.fast_rep (), query_object);
00141 #else
00142 this->context_.resolve (name.char_rep (), query_object);
00143 #endif /* ACE_USES_WCHAR */
00144 if (result != 0)
00145 return result;
00146
00147 // Resize the value passed by the user
00148 // Note: -1 is used because the size includes the null terminator
00149 value.resize ((query_object.size () - 1) / sizeof (ACE_WSTRING_TYPE));
00150
00151 // Represent new space as an ACE_Registry::Object
00152 ACE_Registry::Object object ((void *) value.fast_rep (),
00153 query_object.size (),
00154 REG_SZ);
00155
00156 #if defined (ACE_USES_WCHAR)
00157 result = this->context_.resolve (name.fast_rep (), object);
00158 #else
00159 result = this->context_.resolve (name.char_rep (), object);
00160 #endif /* ACE_USES_WCHAR */
00161 if (object.size () != query_object.size ())
00162 return -1;
00163 if (result != 0)
00164 return result;
00165
00166 return 0;
00167 }
|
|
|
Delete a name from a ACE_Name_Space (Wide charcter strings Interface). Implements ACE_Name_Space. Definition at line 118 of file Registry_Name_Space.cpp. References ACE_NS_WString::char_rep(), ACE_String_Base< CHAR >::fast_rep(), and ACE_Registry::Naming_Context::unbind().
|
|
|
current context
Definition at line 131 of file Registry_Name_Space.h. |
1.3.6