blob: e29393215c0580f0ed339683ade0c14d5ba7ceac (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# -*- coding: utf-8 -*-
# Based on py-couchdb (https://github.com/histrio/py-couchdb)
class BaseFeedReader(object):
"""
Base interface class for changes feed reader.
"""
def __call__(self, db):
self.db = db
return self
def on_message(self, message):
"""
Callback method that is called when change
message is received from couchdb.
:param message: change object
:returns: None
"""
raise NotImplementedError()
def on_close(self):
"""
Callback method that is received when connection
is closed with a server. By default, does nothing.
"""
pass
def on_heartbeat(self):
"""
Callback method invoked when a hearbeat (empty line) is received
from the _changes stream. Override this to purge the reader's internal
buffers (if any) if it waited too long without receiving anything.
"""
pass
class SimpleFeedReader(BaseFeedReader):
"""
Simple feed reader that encapsule any callable in
a valid feed reader interface.
"""
def __call__(self, db, callback):
self.callback = callback
return super(SimpleFeedReader, self).__call__(db)
def on_message(self, message):
self.callback(message, db=self.db)
|