From cc5fe433720a832e47261480440cc33a57c10c9a Mon Sep 17 00:00:00 2001 From: Griatch Date: Thu, 24 Mar 2016 17:28:00 +0100 Subject: [PATCH] Added a simple tickers command for inspecting the running tickers (no manipulation at this time, not sure how to make that in a safe way). --- evennia/commands/default/building.py | 1 - evennia/commands/default/cmdset_character.py | 1 + evennia/commands/default/system.py | 27 ++++++++++++++++++++ evennia/scripts/tickerhandler.py | 13 ++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index 2ba7211c7..25bc95cba 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -2574,4 +2574,3 @@ class CmdSpawn(MuxCommand): for obj in spawn(prototype): self.caller.msg("Spawned %s." % obj.get_display_name(self.caller)) - diff --git a/evennia/commands/default/cmdset_character.py b/evennia/commands/default/cmdset_character.py index 14a2c09f7..7aa9ed84d 100644 --- a/evennia/commands/default/cmdset_character.py +++ b/evennia/commands/default/cmdset_character.py @@ -47,6 +47,7 @@ class CharacterCmdSet(CmdSet): self.add(system.CmdTime()) self.add(system.CmdServerLoad()) #self.add(system.CmdPs()) + self.add(system.CmdTickers()) # Admin commands self.add(admin.CmdBoot()) diff --git a/evennia/commands/default/system.py b/evennia/commands/default/system.py index 4eabe9f81..e87524d94 100644 --- a/evennia/commands/default/system.py +++ b/evennia/commands/default/system.py @@ -755,3 +755,30 @@ class CmdServerLoad(MuxCommand): # return to caller self.caller.msg(string) + +class CmdTickers(MuxCommand): + """ + View and manage running tickers + + Usage: + @tickers + + """ + key = "@tickers" + help_category = "System" + + def func(self): + from evennia import TICKER_HANDLER + all_subs = TICKER_HANDLER.all_display() + table = EvTable("interv(s)", "object", "path/methodname", "idstring") + for sub in all_subs: + table.add_row(sub[3], + sub[1] or "[None]", + sub[1] if sub[1] else sub[2], + sub[4] or "[Unset]") + return self.caller.msg(table) + + + + + diff --git a/evennia/scripts/tickerhandler.py b/evennia/scripts/tickerhandler.py index d5b3ef326..db94a2dcd 100644 --- a/evennia/scripts/tickerhandler.py +++ b/evennia/scripts/tickerhandler.py @@ -492,5 +492,18 @@ class TickerHandler(object): if ticker: return {interval: ticker.subscriptions} + def all_display(self): + """ + Get all tickers on an easily displayable form. + + Returns: + tickers (dict): A list of all storekeys + + """ + store_keys = [] + for ticker in self.ticker_pool.tickers.itervalues(): + store_keys.extend([store_key for store_key in ticker.subscriptions]) + return store_keys + # main tickerhandler TICKER_HANDLER = TickerHandler()