summaryrefslogtreecommitdiff
path: root/ACE/ace/Registry_Name_Space.h
blob: ee4ea7418a3b9cdcc8c812f46f8903e062c6f09b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// -*- C++ -*-

//=============================================================================
/**
 *  @file    Registry_Name_Space.h
 *
 *  @author Irfan Pyarali (irfan@cs.wustl.edu)
 */
//=============================================================================


#ifndef ACE_REGISTRY_NAME_SPACE_H
#define ACE_REGISTRY_NAME_SPACE_H
#include /**/ "ace/pre.h"

#include /**/ "ace/config-all.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#if (defined (ACE_WIN32) && defined (ACE_USES_WCHAR))
// This only works on Win32 platforms when ACE_USES_WCHAR is turned on

#include "ace/Registry.h"
#include "ace/Naming_Context.h"
#include "ace/Name_Space.h"

ACE_BEGIN_VERSIONED_NAMESPACE_DECL

/**
 * @class ACE_Registry_Name_Space
 *
 * @brief Interface to a Name Server Database which is maintained by
 * the Win32 Registry.  Allows to add, change, remove and
 * resolve NameBindings.
 *
 * 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.
 */
class ACE_Export ACE_Registry_Name_Space : public ACE_Name_Space
{
public:
  /// Constructor
  ACE_Registry_Name_Space () = default;

  /// Contacts and opens the registry on the specified server
  ACE_Registry_Name_Space (ACE_Name_Options *name_options);

  /// Destructor
  ~ACE_Registry_Name_Space () = default;

  /// Contacts and opens the registry on the specified server
  int open (ACE_Name_Options *name_options);

  /// Bind a new name to a naming context (Wide character strings).
  int bind (const ACE_NS_WString &name_in,
            const ACE_NS_WString &value_in,
            const char *type_in = "");

  /**
   * 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 character strings interface).
   */
  int rebind (const ACE_NS_WString &name_in,
              const ACE_NS_WString &value_in,
              const char *type_in = "");

  /// Delete a name from a ACE_Name_Space (Wide character strings
  /// Interface).
  int unbind (const ACE_NS_WString &name_in);

  /// Get value and type of a given name binding (Wide chars).  The
  /// caller is responsible for deleting both @a value_out and @a type_out!
  int resolve (const ACE_NS_WString &name_in,
               ACE_NS_WString &value_out,
               char *&type_out);

  /// Get a set of names matching a specified pattern (wchars). Matching
  /// means the names must begin with the pattern string.
  int list_names (ACE_WSTRING_SET &set_out,
                  const ACE_NS_WString &pattern_in);

  /// Get a set of values matching a specified pattern (wchars). Matching
  /// means the values must begin with the pattern string.
  int list_values (ACE_WSTRING_SET &set_out,
                   const ACE_NS_WString &pattern_in);

  /// Get a set of types matching a specified pattern (wchars). Matching
  /// means the types must begin with the pattern string.
  int list_types (ACE_WSTRING_SET &set_out,
                  const ACE_NS_WString &pattern_in);

  /**
   * 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.
   */
  int list_name_entries (ACE_BINDING_SET &set,
                         const ACE_NS_WString &pattern);

  /**
   * 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.
   */
  int list_value_entries (ACE_BINDING_SET &set,
                          const ACE_NS_WString &pattern);

  /**
   * 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.
   */
  int list_type_entries (ACE_BINDING_SET &set,
                         const ACE_NS_WString &pattern);

  /// Dump the state of the object
  void dump () const;

private:

  /// current context
  ACE_Registry::Naming_Context context_;
};

ACE_END_VERSIONED_NAMESPACE_DECL

#endif /* ACE_WIN32 && ACE_USES_WCHAR */

#include /**/ "ace/post.h"

#endif /* ACE_REGISTRY_NAME_SPACE_H */