From 6c374c777f206ec5320aada93f7ffcabf7f51ab9 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Thu, 01 Nov 2007 20:54:43 +0000
Subject: [PATCH] Added a server property to use nanoseconds instead of milliseconds in etime measurements.

---
 opendj-sdk/opends/src/server/org/opends/server/types/AbstractOperation.java |   36 ++++++++++++++++++++++++++++++++++--
 opendj-sdk/opends/src/server/org/opends/server/util/ServerConstants.java    |    8 ++++++++
 2 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/AbstractOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/AbstractOperation.java
index ad00786..7866fca 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/AbstractOperation.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/AbstractOperation.java
@@ -30,6 +30,7 @@
 
 
 import static org.opends.server.core.CoreConstants.*;
+import static org.opends.server.util.ServerConstants.*;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -68,6 +69,23 @@
        new ArrayList<Control>(0);
 
   /**
+   * Indicates whether to use nanoTime instead of
+   * currentTimeMillis when setting processing start and stop times.
+   */
+  protected static boolean useNanoTime = false;
+
+  static
+  {
+    if(System.getProperty(PROPERTY_ETIME_NANO) != null &&
+         System.getProperty(PROPERTY_ETIME_NANO).
+            equalsIgnoreCase("true"))
+    {
+      useNanoTime = true;
+    }
+  }
+
+
+  /**
    * The client connection with which this operation is associated.
    */
   protected final ClientConnection clientConnection;
@@ -1027,7 +1045,14 @@
    */
   public final void setProcessingStartTime()
   {
-    processingStartTime = System.currentTimeMillis();
+    if(useNanoTime)
+    {
+      processingStartTime = System.nanoTime();
+    }
+    else
+    {
+      processingStartTime = System.currentTimeMillis();
+    }
   }
 
 
@@ -1053,7 +1078,14 @@
    */
   public final void setProcessingStopTime()
   {
-    this.processingStopTime = System.currentTimeMillis();
+    if(useNanoTime)
+    {
+      this.processingStopTime = System.nanoTime();
+    }
+    else
+    {
+      this.processingStopTime = System.currentTimeMillis();
+    }
   }
 
 
diff --git a/opendj-sdk/opends/src/server/org/opends/server/util/ServerConstants.java b/opendj-sdk/opends/src/server/org/opends/server/util/ServerConstants.java
index 55ac28e..8a557d7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/util/ServerConstants.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/util/ServerConstants.java
@@ -2752,6 +2752,14 @@
        "org.opends.server.UseLastKnownGoodConfiguration";
 
 
+  /**
+   * The name of the system property that can be used to configure the
+   * server to report etimes in nanoseconds instead of milliseconds.
+   */
+  public static final String PROPERTY_ETIME_NANO =
+      "org.opends.server.etime.nano";
+
+
 
   /**
    * The column at which to wrap long lines of output in the command-line tools.

--
Gitblit v1.10.0