mirror of
https://github.com/evennia/evennia.git
synced 2026-03-20 23:06:31 +01:00
Return store_key from TickerHandler.add and accept store_key kwarg to TickerHandler.add, for easier management.
This commit is contained in:
parent
ff7b73981a
commit
878ce99672
2 changed files with 25 additions and 6 deletions
|
|
@ -32,6 +32,8 @@ without arguments starts a full interactive Python console.
|
|||
- Make code auto-formatted with Black.
|
||||
- Make default `set` command able to edit nested structures (PR by Aaron McMillan)
|
||||
- Allow running Evennia test suite from core repo with `make test`.
|
||||
- Return `store_key` from `TickerHandler.add` and add `store_key` as a kwarg to
|
||||
the `TickerHandler.remove` method. This makes it easier to manage tickers.
|
||||
|
||||
|
||||
## Evennia 0.9 (2018-2019)
|
||||
|
|
|
|||
|
|
@ -490,6 +490,11 @@ class TickerHandler(object):
|
|||
callback every time it is called. This must be data possible
|
||||
to pickle!
|
||||
|
||||
Returns:
|
||||
store_key (tuple): The immutable store-key for this ticker. This can
|
||||
be stored and passed into `.remove(store_key=store_key)` later to
|
||||
easily stop this ticker later.
|
||||
|
||||
Notes:
|
||||
The callback will be identified by type and stored either as
|
||||
as combination of serialized database object + methodname or
|
||||
|
|
@ -512,17 +517,27 @@ class TickerHandler(object):
|
|||
self.ticker_storage[store_key] = (args, kwargs)
|
||||
self.ticker_pool.add(store_key, *args, **kwargs)
|
||||
self.save()
|
||||
return store_key
|
||||
|
||||
def remove(self, interval=60, callback=None, idstring="", persistent=True):
|
||||
def remove(self, interval=60, callback=None, idstring="", persistent=True, store_key=None):
|
||||
"""
|
||||
Remove object from ticker or only remove it from tickers with
|
||||
a given interval.
|
||||
Remove ticker subscription from handler.
|
||||
|
||||
Args:
|
||||
interval (int, optional): Interval of ticker to remove.
|
||||
callback (callable function or method): Either a function or
|
||||
the method of a typeclassed object.
|
||||
idstring (str, optional): Identifier id of ticker to remove.
|
||||
persistent (bool, optional): Whether this ticker is persistent or not.
|
||||
store_key (str, optional): If given, all other kwargs are ignored and only
|
||||
this is used to identify the ticker.
|
||||
|
||||
Raises:
|
||||
KeyError: If no matching ticker was found to remove.
|
||||
|
||||
Notes:
|
||||
The store-key is normally built from the interval/callback/idstring/persistent values;
|
||||
but if the `store_key` is explicitly given, this is used instead.
|
||||
|
||||
"""
|
||||
if isinstance(callback, int):
|
||||
|
|
@ -530,13 +545,15 @@ class TickerHandler(object):
|
|||
"TICKER_HANDLER.remove has changed: "
|
||||
"the interval is now the first argument, callback the second."
|
||||
)
|
||||
|
||||
obj, path, callfunc = self._get_callback(callback)
|
||||
store_key = self._store_key(obj, path, interval, callfunc, idstring, persistent)
|
||||
if not store_key:
|
||||
obj, path, callfunc = self._get_callback(callback)
|
||||
store_key = self._store_key(obj, path, interval, callfunc, idstring, persistent)
|
||||
to_remove = self.ticker_storage.pop(store_key, None)
|
||||
if to_remove:
|
||||
self.ticker_pool.remove(store_key)
|
||||
self.save()
|
||||
else:
|
||||
raise KeyError(f"No Ticker was found matching the store-key {store_key}.")
|
||||
|
||||
def clear(self, interval=None):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue