All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nz.net.ultraq.groovy.extensions.BlockingQueueExtensions.groovy Maven / Gradle / Ivy

Go to download

A collection of extensions for Groovy projects that I almost wish were a part of the GDK

The newest version!
/* 
 * Copyright 2019, Emanuel Rabina (http://www.ultraq.net.nz/)
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package nz.net.ultraq.groovy.extensions

import java.util.concurrent.BlockingQueue

/**
 * Extensions to the {@link BlockingQueue} interface.
 * 
 * @author Emanuel Rabina
 */
class BlockingQueueExtensions {

	/**
	 * Drains all available elements to a new list which is returned.
	 * 
	 * @param self
	 * @return
	 */
	static  List drain(BlockingQueue self) {

		def remaining = []
		self.drainTo(remaining)
		return remaining
	}

	/**
	 * Drain at most the given number of elements into a new list which is
	 * returned.
	 * 
	 * @param self
	 * @param maxElements
	 * @return
	 */
	static  List drain(BlockingQueue self, int maxElements) {

		def elements = []
		self.drainTo(elements, maxElements)
		return elements
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy