pyxmpp.cache.CacheFetcher

Package pyxmpp :: Module cache :: Class CacheFetcher |
[show private | hide private]
[frames | no frames]

## Class CacheFetcher

Known Subclasses:
  `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.

Method Summary
| ``__init__`(self, cache, address, item_freshness_period, item_expiration_period, item_purge_period, object_handler, error_handler, timeout_handler, timeout_period, backup_state)` Initialize an `CacheFetcher` object.
| ``error`(self, error_data)` Handle a retrieval error and call apriopriate handler.
| ``fetch`(self)` Start the retrieval process.
| ``got_it`(self, value, state)` Handle a successfull retrieval and call apriopriate handler.
| ``timeout`(self)` Handle fetcher timeout and call apriopriate handler.

Instance Variable Summary
`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

### __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) Initialize an `CacheFetcher` object. Parameters: `cache` - cache object which created this fetcher. (type=`Cache`) `address` - requested item address. (type=any hashable) `item_freshness_period` - freshness period for the requested item. (type=`timedelta`) `item_expiration_period` - expiration period for the requested item. (type=`timedelta`) `item_purge_period` - purge period for the requested item. (type=`timedelta`) `object_handler` - function to be called after the item is fetched. (type=callable(address, value, state)) `error_handler` - function to be called on error. (type=callable(address, error_data)) `timeout_handler` - function to be called on timeout (type=callable(address)) `timeout_period` - timeout interval. (type=`timedelta`) `backup_state` - 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. (type=`bool`)

### error(self, error_data) 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` - additional information about the error (e.g. `StanzaError` instance). (type=fetcher dependant)

### fetch(self) Start the retrieval process. This method must be implemented in any fetcher class.

### got_it(self, value, state='new') 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` - fetched object. (type=any) `state` - initial state of the object. (type=`str`)

### timeout(self) 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).

Instance Variable Details

### active `True` as long as the fetcher is active and requestor expects one of the handlers to be called. Type: `bool`

### address requested item address. Type: any hashable

### cache cache object which created this fetcher. Type: `Cache`

### timeout_time timeout time. Type: `datetime`