Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Unified Diff: editor/tools/plugins/com.google.dart.server_test/src/com/google/dart/server/internal/remote/TestResponseStream.java

Issue 300313002: Switch to using remote analysis server instead of local. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.server_test/src/com/google/dart/server/internal/remote/TestResponseStream.java
diff --git a/editor/tools/plugins/com.google.dart.server_test/src/com/google/dart/server/internal/remote/TestResponseStream.java b/editor/tools/plugins/com.google.dart.server_test/src/com/google/dart/server/internal/remote/TestResponseStream.java
index 4d37bb71cfb151b94817911b52d55c1a6ae91741..a07fbe6775d1a33453e56c00d3914bd909fc42e0 100644
--- a/editor/tools/plugins/com.google.dart.server_test/src/com/google/dart/server/internal/remote/TestResponseStream.java
+++ b/editor/tools/plugins/com.google.dart.server_test/src/com/google/dart/server/internal/remote/TestResponseStream.java
@@ -15,23 +15,33 @@
package com.google.dart.server.internal.remote;
import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
+import java.util.LinkedList;
/**
* A test implementation of {@link ResponseStream}.
*/
public class TestResponseStream implements ResponseStream {
- private final BlockingQueue<JsonObject> responses = new LinkedBlockingQueue<JsonObject>();
+ private final Object lock = new Object();
+ private final LinkedList<JsonObject> responses = Lists.newLinkedList();
+ private boolean lastRequestProcessed;
+
+ @Override
+ public void lastRequestProcessed() {
+ lastRequestProcessed = true;
+ }
/**
* Puts the given response into the queue.
*/
public void put(JsonObject response) throws Exception {
- responses.put(response);
+ synchronized (lock) {
+ responses.addLast(response);
+ lock.notifyAll();
+ }
}
/**
@@ -45,7 +55,31 @@ public class TestResponseStream implements ResponseStream {
}
@Override
- public JsonObject take() throws Exception {
- return responses.take();
+ public JsonObject take() {
+ synchronized (lock) {
+ while (true) {
+ if (!responses.isEmpty()) {
+ lastRequestProcessed = false;
+ return responses.removeFirst();
+ }
+ try {
+ lock.wait();
+ } catch (InterruptedException e) {
+ continue;
+ }
+ }
+ }
+ }
+
+ public void waitForEmpty() {
+ while (!isEmpty()) {
+ Thread.yield();
+ }
+ }
+
+ private boolean isEmpty() {
+ synchronized (lock) {
+ return lastRequestProcessed && responses.isEmpty();
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698