Skip to content

Commit

Permalink
EventMagicMeta will now also discover events defined in base classes …
Browse files Browse the repository at this point in the history
…of cls.
  • Loading branch information
specialunderwear committed Mar 21, 2012
1 parent 5f3423e commit 97b9438
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions tornadio2/conn.py
Expand Up @@ -22,6 +22,7 @@
"""
import time
import logging
from inspect import ismethod, getmembers

from tornadio2 import proto

Expand Down Expand Up @@ -57,17 +58,10 @@ def handler(f):
class EventMagicMeta(type):
"""Event handler metaclass"""
def __init__(cls, name, bases, attrs):
# Manage events
events = {}

for a in attrs:
attr = getattr(cls, a)
name = getattr(attr, '_event_name', None)

if name:
events[name] = attr

setattr(cls, '_events', events)
# find events, also in bases
is_event = lambda x: ismethod(x) and hasattr(x, '_event_name')
events = getmembers(cls, is_event)
setattr(cls, '_events', dict(events))

# Call base
super(EventMagicMeta, cls).__init__(name, bases, attrs)
Expand Down

0 comments on commit 97b9438

Please sign in to comment.