**** Merged from MCS ****
[mono-project.git] / mcs / class / Novell.Directory.Ldap / Novell.Directory.Ldap / LdapExtendedResponse.cs
blob31de852965341734f106f5ff7b91d1d373031353
1 /******************************************************************************
2 * The MIT License
3 * Copyright (c) 2003 Novell Inc. www.novell.com
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the Software), to deal
7 * in the Software without restriction, including without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
15 * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 * SOFTWARE.
22 *******************************************************************************/
24 // Novell.Directory.Ldap.LdapExtendedResponse.cs
26 // Author:
27 // Sunil Kumar (Sunilk@novell.com)
29 // (C) 2003 Novell, Inc (http://www.novell.com)
32 using System;
33 using Novell.Directory.Ldap.Rfc2251;
34 using Novell.Directory.Ldap.Asn1;
35 using RespExtensionSet = Novell.Directory.Ldap.Utilclass.RespExtensionSet;
37 namespace Novell.Directory.Ldap
40 /// <summary>
41 /// Encapsulates the response returned by an Ldap server on an
42 /// asynchronous extended operation request. It extends LdapResponse.
43 ///
44 /// The response can contain the OID of the extension, an octet string
45 /// with the operation's data, both, or neither.
46 /// </summary>
47 public class LdapExtendedResponse:LdapResponse
49 /// <summary> Returns the message identifier of the response.
50 ///
51 /// </summary>
52 /// <returns> OID of the response.
53 /// </returns>
54 virtual public System.String ID
56 get
58 RfcLdapOID respOID = ((RfcExtendedResponse) message.Response).ResponseName;
59 if (respOID == null)
60 return null;
61 return respOID.stringValue();
66 static LdapExtendedResponse()
68 registeredResponses = new RespExtensionSet();
71 public static RespExtensionSet RegisteredResponses
73 /* package */
75 get
77 return registeredResponses;
82 /// <summary> Returns the value part of the response in raw bytes.
83 ///
84 /// </summary>
85 /// <returns> The value of the response.
86 /// </returns>
87 [CLSCompliantAttribute(false)]
88 virtual public sbyte[] Value
90 get
92 Asn1OctetString tempString = ((RfcExtendedResponse) message.Response).Response;
93 if (tempString == null)
94 return null;
95 else
96 return (tempString.byteValue());
100 private static RespExtensionSet registeredResponses;
102 /// <summary> Creates an LdapExtendedResponse object which encapsulates
103 /// a server response to an asynchronous extended operation request.
104 ///
105 /// </summary>
106 /// <param name="message"> The RfcLdapMessage to convert to an
107 /// LdapExtendedResponse object.
108 /// </param>
109 public LdapExtendedResponse(RfcLdapMessage message):base(message)
113 /// <summary> Registers a class to be instantiated on receipt of a extendedresponse
114 /// with the given OID.
115 ///
116 /// <p>Any previous registration for the OID is overridden. The
117 /// extendedResponseClass object MUST be an extension of
118 /// LDAPExtendedResponse. </p>
119 ///
120 /// </summary>
121 /// <param name="oid"> The object identifier of the control.
122 /// </param>
123 /// <param name="extendedResponseClass"> A class which can instantiate an
124 /// LDAPExtendedResponse.
125 /// </param>
126 public static void register(System.String oid, System.Type extendedResponseClass)
128 registeredResponses.registerResponseExtension(oid, extendedResponseClass);
129 return ;