Package pyxmpp :: Module cache :: Class CacheFetcher

[hide private]

# Class CacheFetcher

source code

Known Subclasses:
  - jabber.disco.DiscoCacheFetcherBase

Base class for cache object fetchers -- classes responsible for retrieving objects from network.

An instance of a fetcher class is created for each object requested and not found in the cache, then fetch method is called to initialize the asynchronous retrieval process. Fetcher object's got_it method should be called on a successfull retrieval and error otherwise. timeout will be called when the request timeouts.

Instance Methods | [hide private]

__init__(self, cache, address, item_freshness_period, item_expiration_period, item_purge_period, object_handler, error_handler, timeout_handler, timeout_period, backup_state=None) Initialize an CacheFetcher object. | source code

_deactivate(self) Remove the fetcher from cache and mark it not active. | source code

_deactivated(self) Mark the fetcher inactive after it is removed from the cache. | source code

`bool`

_try_backup_item(self) Check if a backup item is available in cache and call the item handler if it is. | source code

error(self, error_data) Handle a retrieval error and call apriopriate handler. | source code

fetch(self) Start the retrieval process. | source code

got_it(self, value, state=`'``new``'`) Handle a successfull retrieval and call apriopriate handler. | source code

timeout(self) Handle fetcher timeout and call apriopriate handler. | source code

Instance Variables | [hide private]

`bool` | active `True` as long as the fetcher is active and requestor expects one of the handlers to be called.
any hashable | address requested item address.
Cache | cache cache object which created this fetcher.
datetime | timeout_time timeout time.

Method Details | [hide private]

### __init__(self, cache, address, item_freshness_period, item_expiration_period, item_purge_period, object_handler, error_handler, timeout_handler, timeout_period, backup_state=None)
(Constructor)

source code

Initialize an CacheFetcher object.

Parameters:
  - `cache` (Cache) - cache object which created this fetcher.
  - `address` (any hashable) - requested item address.
  - `item_freshness_period` (timedelta) - freshness period for the requested item.
  - `item_expiration_period` (timedelta) - expiration period for the requested item.
  - `item_purge_period` (timedelta) - purge period for the requested item.
  - `object_handler` (callable(address, value, state)) - function to be called after the item is fetched.
  - `error_handler` (callable(address, error_data)) - function to be called on error.
  - `timeout_handler` (callable(address)) - function to be called on timeout
  - `timeout_period` (timedelta) - timeout interval.
  - `backup_state` (`bool`) - when not `None` and the fetch fails than an object from cache of at least this state will be passed to the `object_handler`. If such object is not available, then `error_handler` is called.

### _try_backup_item(self)

source code

Check if a backup item is available in cache and call the item handler if it is.

Returns: `bool`
  `True` if backup item was found.

### error(self, error_data)

source code

Handle a retrieval error and call apriopriate handler.

Should be called when retrieval fails.

Do nothing when the fetcher is not active any more (after one of handlers was already called).

Parameters:
  - `error_data` (fetcher dependant) - additional information about the error (e.g. `StanzaError` instance).

### fetch(self)

source code

Start the retrieval process.

This method must be implemented in any fetcher class.

### got_it(self, value, state=`'``new``'`)

source code

Handle a successfull retrieval and call apriopriate handler.

Should be called when retrieval succeeds.

Do nothing when the fetcher is not active any more (after one of handlers was already called).

Parameters:
  - `value` (any) - fetched object.
  - `state` (`str`) - initial state of the object.

### timeout(self)

source code

Handle fetcher timeout and call apriopriate handler.

Is called by the cache object and should _not_ be called by fetcher or application.

Do nothing when the fetcher is not active any more (after one of handlers was already called).