From 22094368c2865dcfb6daf8366425212b721a4657 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Thu, 05 Feb 2009 17:42:14 +0000
Subject: [PATCH] Merge ASN1 branch to trunk
---
opends/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 48 insertions(+), 8 deletions(-)
diff --git a/opends/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java b/opends/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java
index 32480c8..cb17df6 100644
--- a/opends/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java
+++ b/opends/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java
@@ -30,6 +30,8 @@
import java.util.Set;
import java.util.TreeSet;
+import java.io.IOException;
+
import org.opends.messages.Message;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.meta.PluginCfgDefn;
@@ -39,7 +41,7 @@
import org.opends.server.api.plugin.PluginType;
import org.opends.server.api.plugin.PluginResult;
import org.opends.server.config.ConfigException;
-import org.opends.server.protocols.asn1.ASN1OctetString;
+import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.replication.common.ChangeNumber;
import org.opends.server.replication.protocol.OperationContext;
import org.opends.server.types.ConfigChangeResult;
@@ -65,6 +67,48 @@
private ChangeNumberControlPluginCfg currentConfig;
/**
+ * The control used by this plugin.
+ */
+ public static class ChangeNumberControl extends Control
+ {
+ private ChangeNumber cn;
+
+ /**
+ * Constructs a new change number control.
+ *
+ * @param isCritical Indicates whether support for this control should be
+ * considered a critical part of the server processing.
+ * @param cn The change number.
+ */
+ public ChangeNumberControl(boolean isCritical, ChangeNumber cn)
+ {
+ super(OID_CSN_CONTROL, isCritical);
+ this.cn = cn;
+ }
+
+ /**
+ * Writes this control's value to an ASN.1 writer. The value (if any) must
+ * be written as an ASN1OctetString.
+ *
+ * @param writer The ASN.1 writer to use.
+ * @throws IOException If a problem occurs while writing to the stream.
+ */
+ protected void writeValue(ASN1Writer writer) throws IOException {
+ writer.writeOctetString(cn.toString());
+ }
+
+ /**
+ * Retrieves the change number.
+ *
+ * @return The change number.
+ */
+ public ChangeNumber getChangeNumber()
+ {
+ return cn;
+ }
+ }
+
+ /**
* Creates a new instance of this Directory Server plugin. Every plugin must
* implement a default constructor (it is the only one that will be used to
* create plugins defined in the configuration), and every plugin constructor
@@ -273,13 +317,9 @@
if (ctx != null) {
ChangeNumber cn = ctx.getChangeNumber();
if (cn != null) {
- String csn = cn.toString();
- if (csn != null) {
- Control responseControl =
- new Control(OID_CSN_CONTROL, c.isCritical(),
- new ASN1OctetString(csn));
- operation.getResponseControls().add(responseControl);
- }
+ Control responseControl =
+ new ChangeNumberControl(c.isCritical(), cn);
+ operation.getResponseControls().add(responseControl);
}
}
break;
--
Gitblit v1.10.0