summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-04-11 11:25:28 +0200
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-04-11 11:25:28 +0200
commit6f414b99c94f5e1562785f9f2b95940a50a70a88 (patch)
tree81f2a3f55a7961ae55c9e43f94d4ca28f77e6524
parent5120f84996f8ff8d54c5c119034b9251d07bc07b (diff)
Make Rpc more thread-safe.
:-(
-rw-r--r--src/main/java/com/orbekk/protobuf/Rpc.java12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/main/java/com/orbekk/protobuf/Rpc.java b/src/main/java/com/orbekk/protobuf/Rpc.java
index 0f6b6cb..34cdb31 100644
--- a/src/main/java/com/orbekk/protobuf/Rpc.java
+++ b/src/main/java/com/orbekk/protobuf/Rpc.java
@@ -16,6 +16,7 @@
package com.orbekk.protobuf;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.CountDownLatch;
@@ -23,11 +24,11 @@ import com.google.protobuf.RpcCallback;
import com.google.protobuf.RpcController;
public class Rpc implements RpcController {
- private String errorText = "";
private CountDownLatch done = new CountDownLatch(1);
- private boolean hasFailed;
- private boolean canceled;
- private List<RpcCallback<Object>> cancelNotificationListeners = null;
+ private volatile String errorText = "";
+ private volatile boolean hasFailed;
+ private volatile boolean canceled;
+ private volatile List<RpcCallback<Object>> cancelNotificationListeners = null;
public Rpc() {
}
@@ -95,7 +96,8 @@ public class Rpc implements RpcController {
public void notifyOnCancel(RpcCallback<Object> listener) {
if (cancelNotificationListeners == null) {
cancelNotificationListeners =
- new ArrayList<RpcCallback<Object>>();
+ Collections.synchronizedList(
+ new ArrayList<RpcCallback<Object>>());
}
cancelNotificationListeners.add(listener);
}