Skip to content

Instantly share code, notes, and snippets.

@posix4e
Created April 3, 2014 17:44
Show Gist options
  • Save posix4e/9959153 to your computer and use it in GitHub Desktop.
Save posix4e/9959153 to your computer and use it in GitHub Desktop.
broken source
diff --git a/src/main/java/org/jetlang/core/BatchExecutorImpl.java b/src/main/java/org/jetlang/core/BatchExecutorImpl.java
index 4efdb48..45bd8b7 100644
--- a/src/main/java/org/jetlang/core/BatchExecutorImpl.java
+++ b/src/main/java/org/jetlang/core/BatchExecutorImpl.java
@@ -1,5 +1,7 @@
package org.jetlang.core;
+import java.util.Iterator;
+
/**
* Default implementation that simply executes all events.
*
@@ -7,8 +9,9 @@ package org.jetlang.core;
*/
public class BatchExecutorImpl implements BatchExecutor {
public void execute(EventReader toExecute) {
- for (int i = 0; i < toExecute.size(); i++) {
- toExecute.get(i).run();
+ Iterator<Runnable> iterator = toExecute.iterator();
+ while(iterator.hasNext()){
+ iterator.next().run();
}
}
}
diff --git a/src/main/java/org/jetlang/core/EventReader.java b/src/main/java/org/jetlang/core/EventReader.java
index 85cd6a9..57833a4 100644
--- a/src/main/java/org/jetlang/core/EventReader.java
+++ b/src/main/java/org/jetlang/core/EventReader.java
@@ -1,5 +1,7 @@
package org.jetlang.core;
+import java.util.Iterator;
+
public interface EventReader extends MessageReader<Runnable> {
- Runnable get(int index);
+ Iterator<Runnable> iterator();
}
diff --git a/src/main/java/org/jetlang/core/MessageBuffer.java b/src/main/java/org/jetlang/core/MessageBuffer.java
index c2d46ef..41020ef 100644
--- a/src/main/java/org/jetlang/core/MessageBuffer.java
+++ b/src/main/java/org/jetlang/core/MessageBuffer.java
@@ -1,16 +1,20 @@
package org.jetlang.core;
+import com.sun.jmx.remote.internal.ArrayQueue;
+
+import java.util.ArrayDeque;
import java.util.ArrayList;
+import java.util.Iterator;
public class MessageBuffer<T> implements MessageReader<T> {
- private ArrayList<T> events = new ArrayList<T>();
+ private ArrayDeque<T> events = new ArrayDeque<T>();
public int size() {
return events.size();
}
- public T get(int index) {
- return events.get(index);
+ public Iterator<T> iterator() {
+ return events.descendingIterator();
}
public void add(T r) {
diff --git a/src/main/java/org/jetlang/core/MessageReader.java b/src/main/java/org/jetlang/core/MessageReader.java
index 4171a8e..965cef0 100644
--- a/src/main/java/org/jetlang/core/MessageReader.java
+++ b/src/main/java/org/jetlang/core/MessageReader.java
@@ -1,9 +1,10 @@
package org.jetlang.core;
+import java.util.Iterator;
+
public interface MessageReader<T> {
int size();
- T get(int index);
-
+ Iterator<T> iterator();
}
diff --git a/src/test/java/org/jetlang/channels/LockFreeBatchSubscriberPerf.java b/src/test/java/org/jetlang/channels/LockFreeBatchSubscriberPerf.java
index 8f75205..5a1046b 100644
--- a/src/test/java/org/jetlang/channels/LockFreeBatchSubscriberPerf.java
+++ b/src/test/java/org/jetlang/channels/LockFreeBatchSubscriberPerf.java
@@ -4,6 +4,7 @@ import org.jetlang.core.Callback;
import org.jetlang.core.MessageReader;
import org.jetlang.fibers.ThreadFiber;
+import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.CountDownLatch;
@@ -47,8 +48,9 @@ public class LockFreeBatchSubscriberPerf {
int count = 0;
public void onMessage(MessageReader<String> message) {
- for (int val = 0; val < message.size(); val++) {
- String m = message.get(val);
+ Iterator<String> iterator = message.iterator();
+ while(iterator.hasNext()){
+ String m = iterator.next();
count++;
}
if (count >= total) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment