def __init__(self, config, name, userOpt, itemName, discoverFun):
		Broker.__init__(self, config, name, userOpt, itemName, discoverFun)
		itemsUser = config.getList(userOpt, [], onChange = None)
		if not itemsUser:
			itemsUser = None
		itemsDisc = self._discover(discoverFun).keys()
		self._itemsStart = itemsDisc
		if itemsDisc and itemsUser:
			self._itemsStart = utils.filterBlackWhite(itemsDisc, itemsUser)
		elif not itemsDisc:
			self._itemsStart = utils.filterBlackWhite(itemsUser, itemsUser)
		self._nIndex = 0
	def _broker(self, reqs, items):
		result = Broker._broker(self, reqs, items)
		for (rType, rValue) in reqs:
			if (rType == WMS.STORAGE) and rValue:
				if result == None:
					result = []
				for rval in rValue:
					result.extend(self._storageDict.get(rval, []))
		return result
	def _broker(self, reqs, items):
		items = Broker._broker(self, reqs, items)
		if items:
			items = [items[self._nIndex % len(items)]]
			self._nIndex += 1
		return items
	def __init__(self, config, name, userOpt, itemName, discoverFun):
		Broker.__init__(self, config, name, userOpt, itemName, discoverFun)
		self._itemsStart = config.getList(userOpt, [], onChange = None)
		if not self._itemsStart:
			self._itemsStart = None
	def __init__(self, config, name, userOpt, itemName, discoverFun):
		Broker.__init__(self, config, name, userOpt, itemName, discoverFun)
		self._itemsStart = self._discover(discoverFun)
	def __init__(self, config, name, userOpt, itemName, discoverFun):
		Broker.__init__(self, config, name, userOpt, itemName, discoverFun)
		self._storageDict = config.getDict('%s storage access' % userOpt, {}, onChange = None,
			parser = lambda x: utils.parseList(x, ' '), strfun = lambda x: str.join(' ', x))[0]