def __init__(self): self.__selectedID = None self.__callback = None self.__callbackUpdate = None self.__isSubscribed = False self.__cooldown = PrbCooldownManager() self.__handlers = {} self.__cache = {}
def __init__(self, settings, permClass = None, limits = None, requestHandlers = None): super(PrbDispatcher, self).__init__(interfaces.IPrbListener, requestHandlers) self._settings = settings self._permClass = permClass or DefaultPrbPermissions self._limits = limits or DefaultLimits(self) self._hasEntity = False self._cooldown = PrbCooldownManager()
class UnitsListRequester(interfaces.IPrbListRequester): def __init__(self): self.__selectedID = None self.__callback = None self.__callbackUpdate = None self.__isSubscribed = False self.__cooldown = PrbCooldownManager() self.__handlers = {} self.__cache = {} return def __del__(self): LOG_DEBUG('Units list requester deleted:', self) def subscribe(self, unitTypeFlags): if self.__isSubscribed: return self.__isSubscribed = True browser = prb_getters.getClientUnitBrowser() if browser: self.__cooldown.process(REQUEST_TYPE.UNITS_LIST) self.__handlers = {REQUEST_TYPE.UNITS_RECENTER: self.__recenter, REQUEST_TYPE.UNITS_REFRESH: self.__refresh, REQUEST_TYPE.UNITS_NAV_LEFT: self.__navLeft, REQUEST_TYPE.UNITS_NAV_RIGHT: self.__navRight} browser.subscribe(unitTypeFlags=unitTypeFlags) browser.onResultsReceived += self.__unitBrowser_onUnitsListReceived browser.onResultsUpdated += self.__unitBrowser_onUnitsListUpdated else: LOG_ERROR('Unit browser is not defined') def unsubscribe(self): self.__handlers.clear() browser = prb_getters.getClientUnitBrowser() if browser: if self.__isSubscribed: browser.unsubscribe() browser.onResultsReceived -= self.__unitBrowser_onUnitsListReceived browser.onResultsUpdated -= self.__unitBrowser_onUnitsListUpdated self.__isSubscribed = False self.__selectedID = None self.__pageNum = 0 return def setSelectedID(self, selectedID): self.__selectedID = selectedID def start(self, callback): self.__cache.clear() if callback is not None and callable(callback): self.__callback = callback else: LOG_ERROR('Callback is None or is not callable') return if self.__cooldown.isInProcess(REQUEST_TYPE.UNITS_LIST): self.__cooldown.fireEvent(REQUEST_TYPE.UNITS_LIST) browser = prb_getters.getClientUnitBrowser() if browser: self.__unitBrowser_onUnitsListReceived(browser.results) return def stop(self): self.__cache.clear() self.__callback = None self.__callbackUpdate = None return def request(self, **kwargs): if self.__cooldown.validate(REQUEST_TYPE.UNITS_LIST): return LOG_DEBUG('Request list of units', kwargs) self.__cooldown.process(REQUEST_TYPE.UNITS_LIST) self.__cache.clear() browser = prb_getters.getClientUnitBrowser() if browser: if 'req' in kwargs: req = kwargs['req'] if req in self.__handlers: if self.__handlers[req](browser, **kwargs): Waiting.show('prebattle/auto_search') else: LOG_ERROR('Request is not supported', kwargs) else: LOG_ERROR('Request is not found', self.__handlers.keys(), kwargs) else: LOG_ERROR('Unit browser is not defined') def addCacheItem(self, item): self.__cache[item.cfdUnitID] = item def getCacheItem(self, cfdUnitID): try: item = self.__cache[cfdUnitID] except KeyError: LOG_ERROR('Item not found in cache', cfdUnitID) item = None return item def removeCacheItem(self, cfdUnitID): self.__cache.pop(cfdUnitID, None) return def __navLeft(self, browser, **kwargs): browser.left() return True def __navRight(self, browser, **kwargs): browser.right() return True def __recenter(self, browser, **kwargs): result = False if 'unitTypeFlags' in kwargs: browser.recenter(g_itemsCache.items.stats.globalRating, unitTypeFlags=kwargs['unitTypeFlags']) result = True else: LOG_ERROR('Types of units are not defined', kwargs) return result def __refresh(self, browser, **kwargs): browser.refresh() return True def __unitBrowser_onUnitsListReceived(self, data): Waiting.hide('prebattle/auto_search') if self.__callback: self.__callback(self.__selectedID, True, self.__cooldown.isInProcess(REQUEST_TYPE.UNITS_LIST), UnitsListIterator(self, data)) def __unitBrowser_onUnitsListUpdated(self, data): if self.__callback: self.__callback(self.__selectedID, False, False, UnitsUpdateIterator(self, data))
class UnitsListRequester(interfaces.IPrbListRequester): def __init__(self): self.__selectedID = None self.__callback = None self.__callbackUpdate = None self.__isSubscribed = False self.__cooldown = PrbCooldownManager() self.__handlers = {} self.__cache = {} return def __del__(self): LOG_DEBUG('Units list requester deleted:', self) def subscribe(self, unitTypeFlags): if self.__isSubscribed: return self.__isSubscribed = True browser = prb_getters.getClientUnitBrowser() if browser: self.__cooldown.process(REQUEST_TYPE.UNITS_LIST) self.__handlers = { REQUEST_TYPE.UNITS_RECENTER: self.__recenter, REQUEST_TYPE.UNITS_REFRESH: self.__refresh, REQUEST_TYPE.UNITS_NAV_LEFT: self.__navLeft, REQUEST_TYPE.UNITS_NAV_RIGHT: self.__navRight } browser.subscribe(unitTypeFlags=unitTypeFlags) browser.onResultsReceived += self.__unitBrowser_onUnitsListReceived browser.onResultsUpdated += self.__unitBrowser_onUnitsListUpdated else: LOG_ERROR('Unit browser is not defined') def unsubscribe(self): self.__handlers.clear() browser = prb_getters.getClientUnitBrowser() if browser: if self.__isSubscribed: browser.unsubscribe() browser.onResultsReceived -= self.__unitBrowser_onUnitsListReceived browser.onResultsUpdated -= self.__unitBrowser_onUnitsListUpdated self.__isSubscribed = False self.__selectedID = None self.__pageNum = 0 return def setSelectedID(self, selectedID): self.__selectedID = selectedID def start(self, callback): self.__cache.clear() if callback is not None and callable(callback): self.__callback = callback else: LOG_ERROR('Callback is None or is not callable') return if self.__cooldown.isInProcess(REQUEST_TYPE.UNITS_LIST): self.__cooldown.fireEvent(REQUEST_TYPE.UNITS_LIST) browser = prb_getters.getClientUnitBrowser() if browser: self.__unitBrowser_onUnitsListReceived(browser.results) return def stop(self): self.__cache.clear() self.__callback = None self.__callbackUpdate = None return def request(self, **kwargs): if self.__cooldown.validate(REQUEST_TYPE.UNITS_LIST): return LOG_DEBUG('Request list of units', kwargs) self.__cooldown.process(REQUEST_TYPE.UNITS_LIST) self.__cache.clear() browser = prb_getters.getClientUnitBrowser() if browser: if 'req' in kwargs: req = kwargs['req'] if req in self.__handlers: if self.__handlers[req](browser, **kwargs): Waiting.show('prebattle/auto_search') else: LOG_ERROR('Request is not supported', kwargs) else: LOG_ERROR('Request is not found', self.__handlers.keys(), kwargs) else: LOG_ERROR('Unit browser is not defined') def addCacheItem(self, item): self.__cache[item.cfdUnitID] = item def getCacheItem(self, cfdUnitID): try: item = self.__cache[cfdUnitID] except KeyError: LOG_ERROR('Item not found in cache', cfdUnitID) item = None return item def removeCacheItem(self, cfdUnitID): self.__cache.pop(cfdUnitID, None) return def __navLeft(self, browser, **kwargs): browser.left() return True def __navRight(self, browser, **kwargs): browser.right() return True def __recenter(self, browser, **kwargs): result = False if 'unitTypeFlags' in kwargs: browser.recenter(g_itemsCache.items.stats.globalRating, unitTypeFlags=kwargs['unitTypeFlags']) result = True else: LOG_ERROR('Types of units are not defined', kwargs) return result def __refresh(self, browser, **kwargs): browser.refresh() return True def __unitBrowser_onUnitsListReceived(self, data): Waiting.hide('prebattle/auto_search') if self.__callback: self.__callback( self.__selectedID, True, self.__cooldown.isInProcess(REQUEST_TYPE.UNITS_LIST), UnitsListIterator(self, data)) def __unitBrowser_onUnitsListUpdated(self, data): if self.__callback: self.__callback(self.__selectedID, False, False, UnitsUpdateIterator(self, data))