You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2014/05/05 20:37:55 UTC

svn commit: r1592601 - in /qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl: CollectorImpl.java EventImpl.java

Author: rhs
Date: Mon May  5 18:37:55 2014
New Revision: 1592601

URL: http://svn.apache.org/r1592601
Log:
PROTON-577: modified EventImpl and CollectorImpl to avoid using LinkedList and to pool events

Modified:
    qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java
    qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java

Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java?rev=1592601&r1=1592600&r2=1592601&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java (original)
+++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java Mon May  5 18:37:55 2014
@@ -35,25 +35,48 @@ import java.util.Queue;
 public class CollectorImpl implements Collector
 {
 
-    private Queue<Event> events = new LinkedList<Event>();
+    private EventImpl head;
+    private EventImpl tail;
+    private EventImpl free;
 
     public CollectorImpl()
     {}
 
     public Event peek()
     {
-        return events.peek();
+        return head;
     }
 
     public void pop()
     {
-        events.poll();
+        if (head != null) {
+            EventImpl next = head.next;
+            head.next = free;
+            free = head;
+            head.clear();
+            head = next;
+        }
     }
 
     public EventImpl put(Event.Type type)
     {
-        EventImpl event = new EventImpl(type);
-        events.add(event);
+        EventImpl event;
+        if (free == null) {
+            event = new EventImpl(type);
+        } else {
+            event = free;
+            free = free.next;
+            event.next = null;
+            event.type = type;
+        }
+
+        if (head == null) {
+            head = event;
+            tail = event;
+        } else {
+            tail.next = event;
+            tail = event;
+        }
         return event;
     }
 

Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java?rev=1592601&r1=1592600&r2=1592601&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java (original)
+++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java Mon May  5 18:37:55 2014
@@ -41,12 +41,23 @@ class EventImpl implements Event
     Link link;
     Delivery delivery;
     Transport transport;
+    EventImpl next;
 
     EventImpl(Type type)
     {
         this.type = type;
     }
 
+    void clear()
+    {
+        type = null;
+        connection = null;
+        session = null;
+        link = null;
+        delivery = null;
+        transport = null;
+    }
+
     public Category getCategory()
     {
         return type.getCategory();



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org