1 #include "ace/Remote_Name_Space.h"
2 #include "ace/Auto_Ptr.h"
3 #include "ace/Log_Msg.h"
4 #include "ace/SString.h"
5 #include "ace/OS_NS_string.h"
9 "$Id: Remote_Name_Space.cpp 80826 2008-03-04 14:51:23Z wotte $")
11 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
14 ACE_Remote_Name_Space::open (const ACE_TCHAR
*servername
, u_short port
)
16 ACE_TRACE ("ACE_Remote_Name_Space::open");
17 ACE_INET_Addr servaddr
;
20 if (servaddr
.set (port
, servername
) == -1)
23 // Connect to Name Server process.
24 if (this->ns_proxy_
.open (servaddr
) == -1)
30 ACE_Remote_Name_Space::ACE_Remote_Name_Space (void)
32 ACE_TRACE ("ACE_Remote_Name_Space::ACE_Remote_Name_Space");
35 ACE_Remote_Name_Space::ACE_Remote_Name_Space (const ACE_TCHAR
*hostname
,
38 ACE_TRACE ("ACE_Remote_Name_Space::ACE_Remote_Name_Space");
39 if (this->open (hostname
, port
) == -1)
40 ACE_ERROR ((LM_ERROR
, ACE_TEXT ("%p\n"), ACE_TEXT ("ACE_Remote_Name_Space::ACE_Remote_Name_Space")));
44 ACE_Remote_Name_Space::bind (const ACE_NS_WString
&name
,
45 const ACE_NS_WString
&value
,
48 ACE_TRACE ("ACE_Remote_Name_Space::bind");
49 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> name_urep (name
.rep ());
50 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> value_urep (value
.rep ());
52 static_cast<ACE_UINT32
> (name
.length () * sizeof (ACE_WCHAR_T
));
53 ACE_UINT32 value_len
=
54 static_cast<ACE_UINT32
> (value
.length () * sizeof (ACE_WCHAR_T
));
56 static_cast<ACE_UINT32
> (ACE_OS::strlen (type
));
57 ACE_Name_Request
request (ACE_Name_Request::BIND
,
64 return this->ns_proxy_
.request_reply (request
);
68 ACE_Remote_Name_Space::rebind (const ACE_NS_WString
&name
,
69 const ACE_NS_WString
&value
,
72 ACE_TRACE ("ACE_Remote_Name_Space::rebind");
73 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> name_urep (name
.rep ());
74 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> value_urep (value
.rep ());
76 static_cast<ACE_UINT32
> (name
.length () * sizeof (ACE_WCHAR_T
));
77 ACE_UINT32 value_len
=
78 static_cast<ACE_UINT32
> (value
.length () * sizeof (ACE_WCHAR_T
));
80 static_cast<ACE_UINT32
> (ACE_OS::strlen (type
));
81 ACE_Name_Request
request (ACE_Name_Request::REBIND
,
88 return this->ns_proxy_
.request_reply (request
);
92 ACE_Remote_Name_Space::resolve (const ACE_NS_WString
&name
,
93 ACE_NS_WString
&value
,
96 ACE_TRACE ("ACE_Remote_Name_Space::resolve");
97 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> name_urep (name
.rep ());
99 static_cast<ACE_UINT32
> (name
.length () * sizeof (ACE_WCHAR_T
));
100 ACE_Name_Request
request (ACE_Name_Request::RESOLVE
,
105 if (this->ns_proxy_
.send_request (request
) == -1)
108 ACE_Name_Request reply
;
110 if (this->ns_proxy_
.recv_reply (reply
) == -1)
113 ACE_NS_WString
temp (reply
.value (), reply
.value_len () / sizeof (ACE_WCHAR_T
));
115 ACE_NEW_RETURN (type
,
116 char[reply
.type_len () + 1],
118 ACE_OS::strcpy (type
, reply
.type ());
123 ACE_Remote_Name_Space::unbind (const ACE_NS_WString
&name
)
125 ACE_TRACE ("ACE_Remote_Name_Space::unbind");
126 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> name_urep (name
.rep ());
127 ACE_UINT32 name_len
=
128 static_cast<ACE_UINT32
> (name
.length () * sizeof (ACE_WCHAR_T
));
129 ACE_Name_Request
request (ACE_Name_Request::UNBIND
,
133 return this->ns_proxy_
.request_reply (request
);
137 ACE_Remote_Name_Space::list_names (ACE_WSTRING_SET
&set
,
138 const ACE_NS_WString
&pattern
)
140 ACE_TRACE ("ACE_Remote_Name_Space::list_names");
141 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> pattern_urep (pattern
.rep ());
142 ACE_UINT32 pattern_len
=
143 static_cast<ACE_UINT32
> (pattern
.length () * sizeof (ACE_WCHAR_T
));
144 ACE_Name_Request
request (ACE_Name_Request::LIST_NAMES
,
148 if (this->ns_proxy_
.send_request (request
) == -1)
151 ACE_Name_Request
reply (0, 0, 0, 0, 0, 0, 0, 0);
153 while (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
155 if (this->ns_proxy_
.recv_reply (reply
) == -1)
156 ACE_ERROR_RETURN ((LM_ERROR
,
158 ACE_TEXT ("ACE_Remote_Name_Space::list_names")),
160 if (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
162 ACE_NS_WString
name (reply
.name (),
163 reply
.name_len () / sizeof (ACE_WCHAR_T
));
171 ACE_Remote_Name_Space::list_values (ACE_WSTRING_SET
&set
,
172 const ACE_NS_WString
&pattern
)
174 ACE_TRACE ("ACE_Remote_Name_Space::list_values");
175 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> pattern_urep (pattern
.rep ());
176 ACE_UINT32 pattern_len
=
177 static_cast<ACE_UINT32
> (pattern
.length () * sizeof (ACE_WCHAR_T
));
178 ACE_Name_Request
request (ACE_Name_Request::LIST_VALUES
,
182 if (this->ns_proxy_
.send_request (request
) == -1)
185 ACE_Name_Request
reply (0, 0, 0, 0, 0, 0, 0, 0);
187 while (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
189 if (this->ns_proxy_
.recv_reply (reply
) == -1)
190 ACE_ERROR_RETURN ((LM_ERROR
,
192 ACE_TEXT ("ACE_Remote_Name_Space::list_values")),
194 if (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
196 ACE_NS_WString
value (reply
.value (),
197 reply
.value_len () / sizeof (ACE_WCHAR_T
));
206 ACE_Remote_Name_Space::list_types (ACE_WSTRING_SET
&set
,
207 const ACE_NS_WString
&pattern
)
209 ACE_TRACE ("ACE_Remote_Name_Space::list_types");
210 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> pattern_urep (pattern
.rep ());
211 ACE_UINT32 pattern_len
=
212 static_cast<ACE_UINT32
> (pattern
.length () * sizeof (ACE_WCHAR_T
));
213 ACE_Name_Request
request (ACE_Name_Request::LIST_TYPES
,
218 if (this->ns_proxy_
.send_request (request
) == -1)
221 ACE_Name_Request
reply (0, 0, 0, 0, 0, 0, 0, 0);
223 while (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
225 if (this->ns_proxy_
.recv_reply (reply
) == -1)
226 ACE_ERROR_RETURN ((LM_ERROR
,
228 ACE_TEXT ("ACE_Remote_Name_Space::list_values")),
230 if (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
232 ACE_NS_WString
type (reply
.type ());
241 ACE_Remote_Name_Space::list_name_entries (ACE_BINDING_SET
&set
,
242 const ACE_NS_WString
&pattern
)
244 ACE_TRACE ("ACE_Remote_Name_Space::list_name_entries");
245 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> pattern_urep (pattern
.rep ());
246 ACE_UINT32 pattern_len
=
247 static_cast<ACE_UINT32
> (pattern
.length () * sizeof (ACE_WCHAR_T
));
248 ACE_Name_Request
request (ACE_Name_Request::LIST_NAME_ENTRIES
,
253 if (this->ns_proxy_
.send_request (request
) == -1)
256 ACE_Name_Request
reply (0, 0, 0, 0, 0, 0, 0, 0);
258 while (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
260 if (this->ns_proxy_
.recv_reply (reply
) == -1)
261 ACE_ERROR_RETURN ((LM_ERROR
,
263 ACE_TEXT ("ACE_Remote_Name_Space::list_names")),
265 if (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
267 ACE_NS_WString
name (reply
.name (),
268 reply
.name_len () / sizeof (ACE_WCHAR_T
));
269 ACE_NS_WString
value (reply
.value (),
270 reply
.value_len () / sizeof (ACE_WCHAR_T
));
271 ACE_Name_Binding
entry (name
,
274 if (set
.insert (entry
) == -1)
282 ACE_Remote_Name_Space::list_value_entries (ACE_BINDING_SET
&set
,
283 const ACE_NS_WString
&pattern
)
285 ACE_TRACE ("ACE_Remote_Name_Space::list_value_entries");
286 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> pattern_urep (pattern
.rep ());
287 ACE_UINT32 pattern_len
=
288 static_cast<ACE_UINT32
> (pattern
.length () * sizeof (ACE_WCHAR_T
));
289 ACE_Name_Request
request (ACE_Name_Request::LIST_VALUE_ENTRIES
,
294 if (this->ns_proxy_
.send_request (request
) == -1)
297 ACE_Name_Request
reply (0, 0, 0, 0, 0, 0, 0, 0);
299 while (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
301 if (this->ns_proxy_
.recv_reply (reply
) == -1)
302 ACE_ERROR_RETURN ((LM_ERROR
,
304 ACE_TEXT ("ACE_Remote_Name_Space::list_values")),
306 if (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
308 ACE_NS_WString
name (reply
.name (),
309 reply
.name_len () / sizeof (ACE_WCHAR_T
));
310 ACE_NS_WString
value (reply
.value (),
311 reply
.value_len () / sizeof (ACE_WCHAR_T
));
312 ACE_Name_Binding
entry (name
,
315 if (set
.insert (entry
) == -1)
323 ACE_Remote_Name_Space::list_type_entries (ACE_BINDING_SET
&set
,
324 const ACE_NS_WString
&pattern
)
326 ACE_TRACE ("ACE_Remote_Name_Space::list_type_entries");
327 ACE_Auto_Basic_Array_Ptr
<ACE_WCHAR_T
> pattern_urep (pattern
.rep ());
328 ACE_UINT32 pattern_len
=
329 static_cast<ACE_UINT32
> (pattern
.length () * sizeof (ACE_WCHAR_T
));
330 ACE_Name_Request
request (ACE_Name_Request::LIST_TYPE_ENTRIES
,
335 if (this->ns_proxy_
.send_request (request
) == -1)
338 ACE_Name_Request
reply (0, 0, 0, 0, 0, 0, 0, 0);
340 while (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
342 if (this->ns_proxy_
.recv_reply (reply
) == -1)
343 ACE_ERROR_RETURN ((LM_ERROR
,
345 ACE_TEXT ("ACE_Remote_Name_Space::list_values")),
347 if (reply
.msg_type () != ACE_Name_Request::MAX_ENUM
)
349 ACE_NS_WString
name (reply
.name (),
350 reply
.name_len () / sizeof (ACE_WCHAR_T
));
351 ACE_NS_WString
value (reply
.value (),
352 reply
.value_len () / sizeof (ACE_WCHAR_T
));
353 ACE_Name_Binding
entry (name
,
356 if (set
.insert (entry
) == -1)
363 ACE_Remote_Name_Space::~ACE_Remote_Name_Space (void)
365 ACE_TRACE ("ACE_Remote_Name_Space::~ACE_Remote_Name_Space");
369 ACE_Remote_Name_Space::dump (void) const
371 #if defined (ACE_HAS_DUMP)
372 ACE_TRACE ("ACE_Remote_Name_Space::dump");
374 ACE_DEBUG ((LM_DEBUG
, ACE_BEGIN_DUMP
, this));
375 this->ns_proxy_
.dump ();
376 ACE_DEBUG ((LM_DEBUG
, ACE_END_DUMP
));
377 #endif /* ACE_HAS_DUMP */
380 ACE_END_VERSIONED_NAMESPACE_DECL