[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