summaryrefslogtreecommitdiff
path: root/repoze/bfg/registry.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-01-22 08:03:37 +0000
committerChris McDonough <chrism@agendaless.com>2009-01-22 08:03:37 +0000
commit2bb9b76c01019f3c82776429c07d34bd1c439f2b (patch)
treefc670cf3479cd1ec47e875b4b707c28a3c15f036 /repoze/bfg/registry.py
parent9fb1153a2ca9b912f79ac963ef955bcd6058f491 (diff)
downloadpyramid-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.py22
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):