From e528bf36132ae71d509584e62921e9ef3c6123b5 Mon Sep 17 00:00:00 2001
From: jdemendi <jdemendi@localhost>
Date: Tue, 06 Jan 2009 10:41:50 +0000
Subject: [PATCH] add missing file for the affinity support
---
opends/src/server/org/opends/server/core/networkgroups/ClientConnectionAffinityPolicy.java | 127 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 127 insertions(+), 0 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/networkgroups/ClientConnectionAffinityPolicy.java b/opends/src/server/org/opends/server/core/networkgroups/ClientConnectionAffinityPolicy.java
new file mode 100644
index 0000000..68cb0b8
--- /dev/null
+++ b/opends/src/server/org/opends/server/core/networkgroups/ClientConnectionAffinityPolicy.java
@@ -0,0 +1,127 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Copyright 2009 Sun Microsystems, Inc.
+ */
+package org.opends.server.core.networkgroups;
+
+import org.opends.server.admin.std.meta.NetworkGroupCfgDefn.AffinityPolicy;
+
+
+/**
+ * This enumerate defines the client connection affinity policy.
+ * An affinity is the ability for the server to bypass some
+ * route algorithm so that requests are always sent to a specific
+ * data source.
+ */
+public enum ClientConnectionAffinityPolicy
+{
+ /**
+ * Disables the client connection affinity.
+ */
+ NONE,
+
+ /**
+ * Routes all the read requests to the data source to which
+ * a previous write request has been routed to. This affinity
+ * is useful when a client application performs a read request
+ * after a write request and the read request should return
+ * consistent data.
+ */
+ FIRST_READ_REQUEST_AFTER_WRITE_REQUEST,
+
+ /**
+ * Routes all the write requests to the data source to which
+ * a previous write request has been routed to. This affinity
+ * policy is useful for batch update where a parent entry and
+ * its subordinates must be sent to the same data source.
+ */
+ ALL_WRITE_REQUESTS_AFTER_FIRST_WRITE_REQUEST,
+
+ /**
+ * Routes all the requests to the data source to which a
+ * previous write request has been routed to.
+ */
+ ALL_REQUESTS_AFTER_FIRST_WRITE_REQUEST,
+
+ /**
+ * Routes all the requests to the data source to which a
+ * previous request has been routed to. This affinity policy
+ * allows to create a kind of tunnel between a client application
+ * and a data source.
+ */
+ ALL_REQUESTS_AFTER_FIRST_REQUEST;
+
+
+ /**
+ * Indicates whether the current policy defines an active affinity
+ * policy or not.
+ *
+ * @return <code>true</code> if the current value of the policy indicates
+ * an active affinity.
+ */
+ public boolean affinityIsActive()
+ {
+ return (this != NONE);
+ }
+
+
+ /**
+ * Returns the client connection affinity policy that matches the
+ * affinity policy as defined by the administration framework.
+ *
+ * @param affinityPolicy
+ * The administration framework affinity policy for which we
+ * want to make a determination.
+ *
+ * @return the client connection affinity policy that matches an affinity
+ * policy as defined by the administration framework.
+ */
+ public static ClientConnectionAffinityPolicy
+ toClientConnectionAffinityPolicy(AffinityPolicy affinityPolicy)
+ {
+ switch (affinityPolicy)
+ {
+ case NONE:
+ return NONE;
+
+ case ALL_REQUESTS_AFTER_FIRST_WRITE_REQUEST:
+ return ALL_REQUESTS_AFTER_FIRST_WRITE_REQUEST;
+
+ case ALL_REQUESTS_AFTER_FIRST_REQUEST:
+ return ALL_REQUESTS_AFTER_FIRST_REQUEST;
+
+ case ALL_WRITE_REQUESTS_AFTER_FIRST_WRITE_REQUEST:
+ return ALL_WRITE_REQUESTS_AFTER_FIRST_WRITE_REQUEST;
+
+ case FIRST_READ_REQUEST_AFTER_WRITE_REQUEST:
+ return FIRST_READ_REQUEST_AFTER_WRITE_REQUEST;
+
+ default:
+ throw new AssertionError(
+ "Unexpected afinity policy value " + affinityPolicy);
+ }
+ }
+
+}
--
Gitblit v1.10.0