[infinispan-commits] Infinispan SVN: r442 - trunk/core/src/main/java/org/infinispan/remoting/rpc.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Fri Jun 12 06:57:48 EDT 2009


Author: manik.surtani at jboss.com
Date: 2009-06-12 06:57:48 -0400 (Fri, 12 Jun 2009)
New Revision: 442

Modified:
   trunk/core/src/main/java/org/infinispan/remoting/rpc/RpcManager.java
   trunk/core/src/main/java/org/infinispan/remoting/rpc/RpcManagerImpl.java
Log:
Ability to specify timeouts

Modified: trunk/core/src/main/java/org/infinispan/remoting/rpc/RpcManager.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/remoting/rpc/RpcManager.java	2009-06-12 10:56:20 UTC (rev 441)
+++ trunk/core/src/main/java/org/infinispan/remoting/rpc/RpcManager.java	2009-06-12 10:57:48 UTC (rev 442)
@@ -181,6 +181,18 @@
    void invokeRemotelyInFuture(List<Address> recipients, ReplicableCommand rpc, boolean usePriorityQueue, NotifyingNotifiableFuture<Object> future);
 
    /**
+    * The same as {@link #invokeRemotelyInFuture(java.util.List, org.infinispan.commands.ReplicableCommand, boolean,
+    * org.infinispan.util.concurrent.NotifyingNotifiableFuture)} except that you can specify a timeout.
+    *
+    * @param recipients       recipients to invoke remote call on
+    * @param rpc              command to execute remotely
+    * @param usePriorityQueue if true, a priority queue is used
+    * @param future           the future which will be passed back to the user
+    * @param timeout          after which to give up (in millis)
+    */
+   void invokeRemotelyInFuture(final List<Address> recipients, final ReplicableCommand rpc, final boolean usePriorityQueue, final NotifyingNotifiableFuture<Object> future, final long timeout);
+
+   /**
     * @return a reference to the underlying transport.
     */
    Transport getTransport();

Modified: trunk/core/src/main/java/org/infinispan/remoting/rpc/RpcManagerImpl.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/remoting/rpc/RpcManagerImpl.java	2009-06-12 10:56:20 UTC (rev 441)
+++ trunk/core/src/main/java/org/infinispan/remoting/rpc/RpcManagerImpl.java	2009-06-12 10:57:48 UTC (rev 442)
@@ -193,10 +193,12 @@
    }
 
    public final void invokeRemotely(List<Address> recipients, ReplicableCommand rpc, boolean sync, boolean usePriorityQueue) throws ReplicationException {
-      if (trace) {
-         log.trace("Broadcasting call " + rpc + " to recipient list " + recipients);
-      }
+      invokeRemotely(recipients, rpc, sync, usePriorityQueue, configuration.getSyncReplTimeout());
+   }
 
+   public final void invokeRemotely(List<Address> recipients, ReplicableCommand rpc, boolean sync, boolean usePriorityQueue, long timeout) throws ReplicationException {
+      if (trace) log.trace("{0} broadcasting call {1} to recipient list {2}", t.getAddress(), rpc, recipients);
+
       if (useReplicationQueue(sync)) {
          replicationQueue.add(rpc);
       } else {
@@ -205,8 +207,7 @@
          }
          List rsps;
          try {
-            rsps = invokeRemotely(recipients, rpc, getResponseMode(sync),
-                                  configuration.getSyncReplTimeout(), usePriorityQueue);
+            rsps = invokeRemotely(recipients, rpc, getResponseMode(sync), timeout, usePriorityQueue);
             if (trace) log.trace("responses=" + rsps);
             if (sync) checkResponses(rsps);
          } catch (CacheException e) {
@@ -224,9 +225,13 @@
    }
 
    public final void invokeRemotelyInFuture(final List<Address> recipients, final ReplicableCommand rpc, final boolean usePriorityQueue, final NotifyingNotifiableFuture<Object> l) {
+      invokeRemotelyInFuture(recipients, rpc, usePriorityQueue, l, configuration.getSyncReplTimeout());
+   }
+
+   public final void invokeRemotelyInFuture(final List<Address> recipients, final ReplicableCommand rpc, final boolean usePriorityQueue, final NotifyingNotifiableFuture<Object> l, final long timeout) {
       Callable<Object> c = new Callable<Object>() {
          public Object call() {
-            invokeRemotely(recipients, rpc, true, usePriorityQueue);
+            invokeRemotely(recipients, rpc, true, usePriorityQueue, timeout);
             l.notifyDone();
             return null;
          }
@@ -300,7 +305,7 @@
 
    @ManagedAttribute
    public String getAddress() {
-      if (t == null || !isStatisticsEnabled()) return "N/A";
+      if (t == null) return "N/A";
       Address address = t.getAddress();
       return address == null ? "N/A" : address.toString();
    }




More information about the infinispan-commits mailing list