diff options
| author | Kristofer Hallin <kristofer@sunet.se> | 2022-01-04 22:12:26 +0100 |
|---|---|---|
| committer | Kristofer Hallin <kristofer@sunet.se> | 2022-01-04 22:12:26 +0100 |
| commit | 2ea8d3a44d89934f7b22ddb932c76322601028a5 (patch) | |
| tree | 84d210f850ea745f787cff403fcc553767b5c38c /src/db/couch/feedreader.py | |
| parent | a3b5cde94981b9a98d367004b4c513c81e5870e4 (diff) | |
Use FastAPI routers and split things to multiple files.
Diffstat (limited to 'src/db/couch/feedreader.py')
| -rw-r--r-- | src/db/couch/feedreader.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/db/couch/feedreader.py b/src/db/couch/feedreader.py new file mode 100644 index 0000000..e293932 --- /dev/null +++ b/src/db/couch/feedreader.py @@ -0,0 +1,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) |
