diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-01-22 08:03:37 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-01-22 08:03:37 +0000 |
| commit | 2bb9b76c01019f3c82776429c07d34bd1c439f2b (patch) | |
| tree | fc670cf3479cd1ec47e875b4b707c28a3c15f036 /repoze/bfg/registry.py | |
| parent | 9fb1153a2ca9b912f79ac963ef955bcd6058f491 (diff) | |
| download | pyramid-2bb9b76c01019f3c82776429c07d34bd1c439f2b.tar.gz pyramid-2bb9b76c01019f3c82776429c07d34bd1c439f2b.tar.bz2 pyramid-2bb9b76c01019f3c82776429c07d34bd1c439f2b.zip | |
If no subscribers are registered via ``registerHandler`` or
``registerSubscriptionAdapter``, ``notify`` is a noop for speed.
Diffstat (limited to 'repoze/bfg/registry.py')
| -rw-r--r-- | repoze/bfg/registry.py | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/repoze/bfg/registry.py b/repoze/bfg/registry.py index d1dff6744..b9a74d885 100644 --- a/repoze/bfg/registry.py +++ b/repoze/bfg/registry.py @@ -25,10 +25,26 @@ deprecated( ) class Registry(Components): + + # for optimization purposes, if no listeners are listening, don't try + # to notify them + _has_listeners = False + + def registerSubscriptionAdapter(self, *arg, **kw): + result = Components.registerSubscriptionAdapter(self, *arg, **kw) + self._has_listeners = True + return result + + def registerHandler(self, *arg, **kw): + result = Components.registerHandler(self, *arg, **kw) + self._has_listeners = True + return result + def notify(self, *events): - # iterating over subscribers assures they get executed - for ignored in self.subscribers(events, None): - pass + if self._has_listeners: + # iterating over subscribers assures they get executed + for ignored in self.subscribers(events, None): + pass class ThreadLocalRegistryManager(threading.local): def __init__(self): |
