ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/util/uk/org/iscream/cms/util/Queue.java
(Generate patch)

Comparing projects/cms/source/util/uk/org/iscream/cms/util/Queue.java (file contents):
Revision 1.20 by tdb, Mon Mar 26 17:59:47 2001 UTC vs.
Revision 1.21 by tdb, Wed Apr 4 20:51:16 2001 UTC

# Line 94 | Line 94 | public class Queue {
94          for(int i=0; i < _lists.size(); i++) {
95              // skip over any gaps left in the list
96              if(_lists.get(i) != null) {
97                // get size before adding to the Queue
98                int s = ((LinkedList) _lists.get(i)).size();
99                // check whether we need to remove an item from the current Queue
100                if(_maxSize!=-1 && s>=_maxSize && _removeAlgorithm!=DROP) {
101                    // we need to remove an item
102                    removeQueueItem((LinkedList) _lists.get(i));
103                }
104                // check if we should add (not if Queue full, and using DROP algorithm)
105                if(!(s>=_maxSize && _removeAlgorithm==DROP)) {
106                    // add the next item, ensuring we lock
107                    synchronized(this) {
108                        // LinkedList.add() does the same thing, but this ensures behaviour
109                        ((LinkedList) _lists.get(i)).addLast(o);
110                    }
111                }
112                // if the queue was empty before the add it is possible
113                // that a consumer is waiting... so we notify them
97                  synchronized(((LinkedList) _lists.get(i))) {
98 <                    ((LinkedList) _lists.get(i)).notifyAll();
98 >                    // get size before adding to the Queue
99 >                    int s = ((LinkedList) _lists.get(i)).size();
100 >                    // check whether we need to remove an item from the current Queue
101 >                    if(_maxSize!=-1 && s>=_maxSize && _removeAlgorithm!=DROP) {
102 >                        // we need to remove an item
103 >                        removeQueueItem((LinkedList) _lists.get(i));
104 >                    }
105 >                    // check if we should add (not if Queue full, and using DROP algorithm)
106 >                    if(!(s>=_maxSize && _removeAlgorithm==DROP)) {
107 >                        // add the next item, ensuring we lock
108 >                        synchronized(this) {
109 >                            // LinkedList.add() does the same thing, but this ensures behaviour
110 >                            ((LinkedList) _lists.get(i)).addLast(o);
111 >                        }
112 >                        // if the queue was empty before the add it is possible
113 >                        // that a consumer is waiting... so we notify them
114 >                        //synchronized(((LinkedList) _lists.get(i))) {
115 >                            ((LinkedList) _lists.get(i)).notifyAll();
116 >                        //}
117 >                    }
118                  }
119              }
120          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines