2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / Novell.Directory.Ldap / Novell.Directory.Ldap.Extensions / SendAllUpdatesRequest.cs
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:
11
12 * The above copyright notice and this permission notice shall be included in 
13 * all copies or substantial portions of the Software.
14
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 *******************************************************************************/
23 //
24 // Novell.Directory.Ldap.Extensions.SendAllUpdatesRequest.cs
25 //
26 // Author:
27 //   Sunil Kumar (Sunilk@novell.com)
28 //
29 // (C) 2003 Novell, Inc (http://www.novell.com)
30 //
31
32 using System;
33 using Novell.Directory.Ldap;
34 using Novell.Directory.Ldap.Asn1;
35 using Novell.Directory.Ldap.Utilclass;
36
37 namespace Novell.Directory.Ldap.Extensions
38 {
39         
40         /// <summary> 
41         /// Schedules an updated request to be sent to all directory servers in a
42         /// replica ring.
43         /// 
44         /// The sendAllUpdatesRequest extension uses the following OID:
45         /// 2.16.840.1.113719.1.27.100.23
46         /// 
47         /// The requestValue has the following format:
48         /// 
49         /// requestValue ::=
50         ///     partitionRoot   LdapDN
51         ///     origServerDN    LdapDN
52         /// </summary>
53         public class SendAllUpdatesRequest:LdapExtendedOperation
54         {
55                 
56                 /// <summary> 
57                 /// Constructs an extended operation object for sending updates to a replica ring.
58                 /// 
59                 /// </summary>
60                 /// <param name="partitionRoot">The distinguished name of the replica
61                 /// that will be updated.
62                 /// 
63                 /// </param>
64                 /// <param name="origServerDN"> The distinguished name of the server that sends the
65                 /// updates to the replica ring.
66                 /// 
67                 /// </param>
68                 /// <exception> LdapException A general exception which includes an error message
69                 /// and an Ldap error code.
70                 /// </exception>
71                 public SendAllUpdatesRequest(System.String partitionRoot, System.String origServerDN):base(ReplicationConstants.SEND_ALL_UPDATES_REQ, null)
72                 {
73                         
74                         try
75                         {
76                                 
77                                 if (((System.Object) partitionRoot == null) || ((System.Object) origServerDN == null))
78                                         throw new System.ArgumentException(ExceptionMessages.PARAM_ERROR);
79                                 System.IO.MemoryStream encodedData = new System.IO.MemoryStream();
80                                 LBEREncoder encoder = new LBEREncoder();
81                                 
82                                 Asn1OctetString asn1_partitionRoot = new Asn1OctetString(partitionRoot);
83                                 Asn1OctetString asn1_origServerDN = new Asn1OctetString(origServerDN);
84                                 
85                                 asn1_partitionRoot.encode(encoder, encodedData);
86                                 asn1_origServerDN.encode(encoder, encodedData);
87                                 
88                                 setValue(SupportClass.ToSByteArray(encodedData.ToArray()));
89                         }
90                         catch (System.IO.IOException ioe)
91                         {
92                                 throw new LdapException(ExceptionMessages.ENCODING_ERROR, LdapException.ENCODING_ERROR, (System.String) null);
93                         }
94                 }
95         }
96 }