~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/services/longpoll/interfaces.py

  • Committer: Stuart Bishop
  • Date: 2011-09-28 12:49:24 UTC
  • mfrom: (9893.10.1 trivial)
  • mto: This revision was merged to the branch mainline in revision 14178.
  • Revision ID: stuart.bishop@canonical.com-20110928124924-m5a22fymqghw6c5i
Merged trivial into distinct-db-users.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
    source = Attribute("The event source.")
24
24
 
25
 
    event = Attribute("An object indicating the type of event.")
26
 
 
27
25
    event_key = Attribute(
28
26
        "The key with which events will be emitted. Should be predictable "
29
27
        "and stable.")
30
28
 
31
 
    def emit(data):
 
29
    def emit(**data):
32
30
        """Emit the given data to `event_key`.
33
31
 
34
 
        The data will be wrapped up into a `dict` with the keys `event_key`
35
 
        and `event_data`, where `event_key` is a copy of `self.event_key` and
36
 
        `event_data` is the `data` argument.
37
 
 
38
 
        :param data: Any data structure that can be dumped as JSON.
 
32
        :param data: Any data structures that can be dumped as JSON.
39
33
        """
40
34
 
41
35
 
53
47
        """
54
48
 
55
49
 
56
 
def long_poll_event(source_spec, event_spec=basestring):
 
50
def long_poll_event(source_spec):
57
51
    """Class decorator to declare an `ILongPollEvent`.
58
52
 
59
53
    :param source_spec: An interface or other specification understood by
60
54
        `zope.component` (a plain class can be passed too) that defines the
61
55
        source of an event. `IJob` or `storm.base.Storm` for example.
62
 
    :param source_event: An interface or other specification understood by
63
 
        `zope.component`. The exact use here is left to implementers. By
64
 
        default it is `basestring` so that terms like "modified" or
65
 
        "lifecycle" can be used when looking up the event, but it could also
66
 
        be `IObjectModifiedEvent`. The dominant use case is evolving.
67
56
    """
68
 
    declare_adapter = adapter(source_spec, event_spec)
 
57
    declare_adapter = adapter(source_spec)
69
58
 
70
59
    def declare_event(cls):
71
60
        classImplements(cls, ILongPollEvent)