~launchpad-pqm/launchpad/devel

« back to all changes in this revision

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

Long poll interfaces.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright 2011 Canonical Ltd.  This software is licensed under the
 
2
# GNU Affero General Public License version 3 (see the file LICENSE).
 
3
 
 
4
"""Long-poll infrastructure interfaces."""
 
5
 
 
6
__metaclass__ = type
 
7
__all__ = []
 
8
 
 
9
 
 
10
from zope.interface import Attribute, Interface
 
11
 
 
12
 
 
13
class ILongPollEmitter(Interface):
 
14
 
 
15
    emit_key = Attribute(
 
16
        "The key with which events will be emitted. Should be predictable "
 
17
        "and stable.")
 
18
 
 
19
 
 
20
class ILongPollSubscriber(Interface):
 
21
 
 
22
    subscribe_key = Attribute(
 
23
        "The key which the subscriber must know in order to be able "
 
24
        "to long-poll for subscribed events. Should be infeasible to "
 
25
        "guess, a UUID for example.")
 
26
 
 
27
    def subscribe(emitter):
 
28
        """Subscribe to the given event emitter.
 
29
 
 
30
        :type emitter: ILongPollEmitter
 
31
        """