Author: hiranya
Date: Fri May  6 10:07:25 2011
New Revision: 1100155

URL: http://svn.apache.org/viewvc?rev=1100155&view=rev
Log:
Adding S2S latency JMX MBeans

Modified:
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java?rev=1100155&r1=1100154&r2=1100155&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
 Fri May  6 10:07:25 2011
@@ -635,6 +635,9 @@ public class ClientHandler implements NH
      */
     public void responseReceived(final NHttpClientConnection conn) {
 
+        setServerContextAttribute(NhttpConstants.RES_HEADER_ARRIVAL_TIME,
+                System.currentTimeMillis(), conn);
+
         HttpContext context = conn.getContext();
         HttpResponse response = conn.getHttpResponse();
 

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java?rev=1100155&r1=1100154&r2=1100155&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
 Fri May  6 10:07:25 2011
@@ -116,6 +116,7 @@ public class NhttpConstants {
     public static final String REQ_ARRIVAL_TIME = "REQ_ARRIVAL_TIME";
     public static final String REQ_DEPARTURE_TIME = "REQ_DEPARTURE_TIME";
     public static final String RES_ARRIVAL_TIME = "RES_ARRIVAL_TIME";
+    public static final String RES_HEADER_ARRIVAL_TIME = 
"RES_HEADER_ARRIVAL_TIME";
     public static final String RES_DEPARTURE_TIME = "RES_DEPARTURE_TIME";
 
     /**

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java?rev=1100155&r1=1100154&r2=1100155&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
 Fri May  6 10:07:25 2011
@@ -114,6 +114,7 @@ public class ServerHandler implements NH
     private boolean restDispatching = true;
     
     private LatencyView latencyView = null;
+    private LatencyView s2sLatencyView = null;
     private ThreadingView threadingView = null;
 
     public static final String REQUEST_SINK_BUFFER = 
"synapse.request-sink-buffer";
@@ -135,7 +136,8 @@ public class ServerHandler implements NH
         this.connStrategy = new DefaultConnectionReuseStrategy();
         this.allocator = new HeapByteBufferAllocator();
         this.activeConnections = new ArrayList<NHttpServerConnection>();
-        this.latencyView = new LatencyView(isHttps);
+        this.latencyView = new LatencyView("NHTTPLatencyView", isHttps);
+        this.s2sLatencyView = new LatencyView("NHTTPS2SLatencyView", isHttps);
         this.threadingView = new ThreadingView("HttpServerWorker", true, 50);
         this.restDispatching = listenerContext.isRestDispatching();
 
@@ -371,7 +373,20 @@ public class ServerHandler implements NH
         final HttpResponse response) throws IOException, HttpException {
         try {
             conn.suspendInput();
-            httpProcessor.process(response, conn.getContext());
+            HttpContext context = conn.getContext();
+            httpProcessor.process(response, context);
+
+            if (context.getAttribute(NhttpConstants.REQ_ARRIVAL_TIME) != null 
&&
+                context.getAttribute(NhttpConstants.REQ_DEPARTURE_TIME) != 
null &&
+                context.getAttribute(NhttpConstants.RES_HEADER_ARRIVAL_TIME) 
!= null) {
+
+                s2sLatencyView.notifyTimes(
+                    (Long) 
context.getAttribute(NhttpConstants.REQ_ARRIVAL_TIME),
+                    (Long) 
context.getAttribute(NhttpConstants.REQ_DEPARTURE_TIME),
+                    (Long) 
context.getAttribute(NhttpConstants.RES_HEADER_ARRIVAL_TIME),
+                    System.currentTimeMillis());
+            }
+
             conn.submitResponse(response);
         } catch (HttpException e) {
             shutdownConnection(conn);
@@ -600,6 +615,7 @@ public class ServerHandler implements NH
 
     public void stop() {
         latencyView.destroy();
+        s2sLatencyView.destroy();
         threadingView.destroy();
 
         try {

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java?rev=1100155&r1=1100154&r2=1100155&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/LatencyView.java
 Fri May  6 10:07:25 2011
@@ -54,8 +54,6 @@ import java.util.Calendar;
  */
 public class LatencyView implements LatencyViewMBean {
 
-    private static final String NHTTP_LATENCY_VIEW = "NhttpTransportLatency";
-
     private static final int SMALL_DATA_COLLECTION_PERIOD = 5;
     private static final int LARGE_DATA_COLLECTION_PERIOD = 5 * 60;
     private static final int SAMPLES_PER_MINUTE = 60/ 
SMALL_DATA_COLLECTION_PERIOD;
@@ -89,14 +87,16 @@ public class LatencyView implements Late
     private int count = 0;
     private Date resetTime = Calendar.getInstance().getTime();
 
+    private String latencyMode;
     private String name;
 
-    public LatencyView(boolean isHttps) {
+    public LatencyView(final String latencyMode, boolean isHttps) {
+        this.latencyMode = latencyMode;
         name = "nio-http" + (isHttps ? "s" : "");
 
         scheduler =  Executors.newSingleThreadScheduledExecutor(new 
ThreadFactory() {
             public Thread newThread(Runnable r) {
-                return new Thread(r, name + "-latency-view");
+                return new Thread(r, latencyMode + "-" + name + 
"-latency-view");
             }
         });
 
@@ -106,7 +106,7 @@ public class LatencyView implements Late
                 LARGE_DATA_COLLECTION_PERIOD, TimeUnit.SECONDS);
         boolean registered = false;
         try {
-            registered = MBeanRegistrar.getInstance().registerMBean(this, 
NHTTP_LATENCY_VIEW, name);
+            registered = MBeanRegistrar.getInstance().registerMBean(this, 
this.latencyMode, name);
         } finally {
             if (!registered) {
                 scheduler.shutdownNow();
@@ -115,7 +115,7 @@ public class LatencyView implements Late
     }
 
     public void destroy() {
-        MBeanRegistrar.getInstance().unRegisterMBean(NHTTP_LATENCY_VIEW, name);
+        MBeanRegistrar.getInstance().unRegisterMBean(latencyMode, name);
         if (!scheduler.isShutdown()) {
             scheduler.shutdownNow();
         }


Reply via email to