Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /* ************************************************************************
 #
 #  DivConq
 #
 #  http://divconq.com/
 #
 #  Copyright:
 #    Copyright 2014 eTimeline, LLC. All rights reserved.
 #
#  License:
#    See the license.txt file in the project's top-level directory for details.
#  Authors:
#    * Andy White
************************************************************************ */
package divconq.lang;
public class CallbackQueue<T> {
	protected volatile boolean disposed = false;
	protected QueueWatcher qwatcher = null;
	public void setWatcher(QueueWatcher watcher) {
		this. = watcher;
	}
	public void pop(FuncCallback<T> callback) {
		if (this.) {
			callback.error(1, "Disposed");		// TODO better code
			callback.complete();
			return;
		}
resource = this..poll();
		if (resource != null) {
			callback.setResult(resource);
			callback.complete();
			return;
		}
		this..add(callback);
	}
	public void add(T resource) {
		if (this.) {
			if (this. != null)
				this..disposed(resource);
			return;
		}
		FuncCallback<T> callback = this..poll();
		if (callback != null) {
			callback.setResult(resource);
			callback.complete();
			return;
		}
		this..add(resource);
	}
	// tell the callbacks to go away, nothing more to do
	// and grab all the available resources 
	public void dispose() {
		this. = true;
		FuncCallback<T> callback = this..poll();
		while (callback != null) {
			callback.error(1, "Nothing more to do");		// TODO better code
			callback.complete();
			callback = this..poll();
		}		
		if (this. != null) {
res = this..poll();
			while (res != null) {
				this..disposed(res);
				res = this..poll();
			}		
		}
	}
	abstract public class QueueWatcher {
		abstract public void disposed(T res);
	}
New to GrepCode? Check out our FAQ X