Working new tickerhandler, handling both methods and functions.
This commit is contained in:
parent
bd7f9dfe47
commit
dd6b6f06f7
2 changed files with 7 additions and 11 deletions
|
|
@ -71,7 +71,6 @@ contrib = None
|
||||||
# Handlers
|
# Handlers
|
||||||
SESSION_HANDLER = None
|
SESSION_HANDLER = None
|
||||||
TICKER_HANDLER = None
|
TICKER_HANDLER = None
|
||||||
OOB_HANDLER = None
|
|
||||||
CHANNEL_HANDLER = None
|
CHANNEL_HANDLER = None
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -118,7 +117,7 @@ def _init():
|
||||||
global search_object, search_script, search_player, search_channel, search_help, search_tag
|
global search_object, search_script, search_player, search_channel, search_help, search_tag
|
||||||
global create_object, create_script, create_player, create_channel, create_message, create_help_entry
|
global create_object, create_script, create_player, create_channel, create_message, create_help_entry
|
||||||
global settings,lockfuncs, logger, utils, gametime, ansi, spawn, managers
|
global settings,lockfuncs, logger, utils, gametime, ansi, spawn, managers
|
||||||
global contrib, TICKER_HANDLER, OOB_HANDLER, SESSION_HANDLER, CHANNEL_HANDLER
|
global contrib, TICKER_HANDLER, SESSION_HANDLER, CHANNEL_HANDLER
|
||||||
|
|
||||||
from .players.players import DefaultPlayer
|
from .players.players import DefaultPlayer
|
||||||
from .players.players import DefaultGuest
|
from .players.players import DefaultGuest
|
||||||
|
|
|
||||||
|
|
@ -56,14 +56,13 @@ call the handler's `save()` and `restore()` methods when the server reboots.
|
||||||
"""
|
"""
|
||||||
import inspect
|
import inspect
|
||||||
from builtins import object
|
from builtins import object
|
||||||
from future.utils import listvalues
|
|
||||||
|
|
||||||
from twisted.internet.defer import inlineCallbacks
|
from twisted.internet.defer import inlineCallbacks
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from evennia.scripts.scripts import ExtendedLoopingCall
|
from evennia.scripts.scripts import ExtendedLoopingCall
|
||||||
from evennia.server.models import ServerConfig
|
from evennia.server.models import ServerConfig
|
||||||
from evennia.utils.logger import log_trace, log_err
|
from evennia.utils.logger import log_trace, log_err
|
||||||
from evennia.utils.dbserialize import dbserialize, dbunserialize, pack_dbobj
|
from evennia.utils.dbserialize import dbserialize, dbunserialize
|
||||||
from evennia.utils import variable_from_module
|
from evennia.utils import variable_from_module
|
||||||
|
|
||||||
_GA = object.__getattribute__
|
_GA = object.__getattribute__
|
||||||
|
|
@ -101,14 +100,13 @@ class Ticker(object):
|
||||||
"""
|
"""
|
||||||
to_remove = []
|
to_remove = []
|
||||||
for store_key, (args, kwargs) in self.subscriptions.iteritems():
|
for store_key, (args, kwargs) in self.subscriptions.iteritems():
|
||||||
print "calling:", store_key, args, kwargs
|
|
||||||
callback = yield kwargs.pop("_callback", "at_tick")
|
callback = yield kwargs.pop("_callback", "at_tick")
|
||||||
obj = yield kwargs.pop("_obj", None)
|
obj = yield kwargs.pop("_obj", None)
|
||||||
try:
|
try:
|
||||||
if callable(callback):
|
if callable(callback):
|
||||||
# call directly
|
# call directly
|
||||||
yield callback(*args, **kwargs)
|
yield callback(*args, **kwargs)
|
||||||
return
|
continue
|
||||||
# try object method
|
# try object method
|
||||||
if not obj or not obj.pk:
|
if not obj or not obj.pk:
|
||||||
# object was deleted between calls
|
# object was deleted between calls
|
||||||
|
|
@ -173,7 +171,6 @@ class Ticker(object):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
start_delay = kwargs.pop("_start_delay", None)
|
start_delay = kwargs.pop("_start_delay", None)
|
||||||
print "adding sub:", store_key, args, kwargs
|
|
||||||
self.subscriptions[store_key] = (args, kwargs)
|
self.subscriptions[store_key] = (args, kwargs)
|
||||||
self.validate(start_delay=start_delay)
|
self.validate(start_delay=start_delay)
|
||||||
|
|
||||||
|
|
@ -422,6 +419,7 @@ class TickerHandler(object):
|
||||||
when wanting to modify/remove the ticker later.
|
when wanting to modify/remove the ticker later.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
interval = int(interval)
|
||||||
obj, path, callfunc = self._get_callback(callback)
|
obj, path, callfunc = self._get_callback(callback)
|
||||||
store_key = self._store_key(obj, path, interval, callfunc, idstring)
|
store_key = self._store_key(obj, path, interval, callfunc, idstring)
|
||||||
self.ticker_storage[store_key] = (args, kwargs)
|
self.ticker_storage[store_key] = (args, kwargs)
|
||||||
|
|
@ -444,7 +442,6 @@ class TickerHandler(object):
|
||||||
"""
|
"""
|
||||||
obj, path, callfunc = self._get_callback(callback)
|
obj, path, callfunc = self._get_callback(callback)
|
||||||
store_key = self._store_key(obj, path, interval, callfunc, idstring)
|
store_key = self._store_key(obj, path, interval, callfunc, idstring)
|
||||||
print "remove store_key:", store_key
|
|
||||||
to_remove = self.ticker_storage.pop(store_key, None)
|
to_remove = self.ticker_storage.pop(store_key, None)
|
||||||
if to_remove:
|
if to_remove:
|
||||||
self.ticker_pool.remove(store_key)
|
self.ticker_pool.remove(store_key)
|
||||||
|
|
@ -487,13 +484,13 @@ class TickerHandler(object):
|
||||||
"""
|
"""
|
||||||
if interval is None:
|
if interval is None:
|
||||||
# return dict of all, ordered by interval
|
# return dict of all, ordered by interval
|
||||||
return dict((interval, listvalues(ticker.subscriptions))
|
return dict((interval, ticker.subscriptions)
|
||||||
for interval, ticker in self.ticker_pool.tickers.items())
|
for interval, ticker in self.ticker_pool.tickers.iteritems())
|
||||||
else:
|
else:
|
||||||
# get individual interval
|
# get individual interval
|
||||||
ticker = self.ticker_pool.tickers.get(interval, None)
|
ticker = self.ticker_pool.tickers.get(interval, None)
|
||||||
if ticker:
|
if ticker:
|
||||||
return listvalues(ticker.subscriptions)
|
return {interval: ticker.subscriptions}
|
||||||
|
|
||||||
# main tickerhandler
|
# main tickerhandler
|
||||||
TICKER_HANDLER = TickerHandler()
|
TICKER_HANDLER = TickerHandler()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue