function Bucket() {
this.pending = new Array();
this.locked = false;
this.allow_nulls = false;
this.add = Bucket__add;
this.next = Bucket__next;
this.empty = Bucket__empty;
this.reset = Bucket__reset;
this.size = Bucket__size;
this.addByIndex = Bucket__addByIndex;
}
function Bucket__add(item) {
fs('Bucket::add', true);
if(item == null && !this.allow_nulls) {
return failp('item');
}
try {
this.pending.push(item);
} catch(e) {
return fail(e);
}
return true;
}
function Bucket__addByIndex(index, item) {
fs('Bucket::addByIndex', true);
if(!pcheck( new Array('index', index, 'item', item))) {
return false;
}
try {
this.pending[index] = item;
} catch(e) {
return fail(e);
}
return true;
}
function Bucket__next() {
fs('Bucket::next', true);
var item = null;
try {
if(this.empty()) {
return null;
}
item = this.pending.shift();
} catch(e) {
fail(e);
return null;
}
return item;
}
function Bucket__empty() {
try {
if(this.pending.length > 0) {
return false;
}
} catch(e) {
fail(e);
}
return true;
}
function Bucket__reset() {
fs('Bucket::reset');
try {
log('Resetting bucket', LOG_SET);
this.locked = true;
this.pending = new Array();
this.locked = false;
} catch(e) {
return fail(e);
}
return true;
}
function Bucket__size() {
var size = 0;
try {
if(this.pending.length > 0) {
size = this.pending.length;
}
} catch(e) {
fail(e);
}
return size;
}
