1 /******************************************************************************
3 * Copyright (c) 2003 Novell Inc. www.novell.com
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
22 *******************************************************************************/
24 // Novell.Directory.Ldap.LdapExtendedResponse.cs
27 // Sunil Kumar (Sunilk@novell.com)
29 // (C) 2003 Novell, Inc (http://www.novell.com)
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
41 /// Encapsulates the response returned by an Ldap server on an
42 /// asynchronous extended operation request. It extends LdapResponse.
44 /// The response can contain the OID of the extension, an octet string
45 /// with the operation's data, both, or neither.
47 public class LdapExtendedResponse
:LdapResponse
49 /// <summary> Returns the message identifier of the response.
52 /// <returns> OID of the response.
54 virtual public System
.String ID
58 RfcLdapOID respOID
= ((RfcExtendedResponse
) message
.Response
).ResponseName
;
61 return respOID
.stringValue();
66 static LdapExtendedResponse()
68 registeredResponses
= new RespExtensionSet();
71 public static RespExtensionSet RegisteredResponses
77 return registeredResponses
;
82 /// <summary> Returns the value part of the response in raw bytes.
85 /// <returns> The value of the response.
87 [CLSCompliantAttribute(false)]
88 virtual public sbyte[] Value
92 Asn1OctetString tempString
= ((RfcExtendedResponse
) message
.Response
).Response
;
93 if (tempString
== null)
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.
106 /// <param name="message"> The RfcLdapMessage to convert to an
107 /// LdapExtendedResponse object.
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.
116 /// <p>Any previous registration for the OID is overridden. The
117 /// extendedResponseClass object MUST be an extension of
118 /// LDAPExtendedResponse. </p>
121 /// <param name="oid"> The object identifier of the control.
123 /// <param name="extendedResponseClass"> A class which can instantiate an
124 /// LDAPExtendedResponse.
126 public static void register(System
.String oid
, System
.Type extendedResponseClass
)
128 registeredResponses
.registerResponseExtension(oid
, extendedResponseClass
);