Esempio n. 1
0
File: client.py Progetto: f3at/feat
 def cancel_listener(self, filter_):
     for l_id, listener_filter in self._listeners.items():
         if ((IViewFactory.providedBy(listener_filter) and
              filter_ is listener_filter) or
             (isinstance(listener_filter, (list, tuple)) and
              (filter_ in listener_filter))):
             self._cancel_listener(l_id)
Esempio n. 2
0
File: client.py Progetto: f3at/feat
    def listen_changes(self, filter_, callback, kwargs=dict()):
        assert callable(callback), ("Callback should be callable, got %r" %
                                    (callback), )

        l_id = str(uuid.uuid1())

        if isinstance(filter_, (list, tuple, )):
            doc_ids = list(filter_)
            filter_i = self._filters['doc_ids']
            filter_i.add_listener(callback, l_id, doc_ids)
            self.log("Registering listener for doc_ids: %r, callback %r",
                     doc_ids, callback)
        elif IViewFactory.providedBy(filter_):
            filter_i = ViewFilter(filter_, kwargs)
            if filter_i.name in self._filters:
                filter_i = self._filters[filter_i.name]
            self._filters[filter_i.name] = filter_i
            filter_i.add_listener(callback, l_id)
        else:
            raise AttributeError("Not suported filter. You should pass a list"
                                 " of document ids or a IViewFactory object "
                                 "passed: %r" % (filter_))
        d = self._setup_notifier(filter_i)
        d.addCallback(defer.override_result, l_id)
        return d
Esempio n. 3
0
File: client.py Progetto: f3at/feat
 def get_changes(self, filter_=None, limit=None, since=0):
     if IViewFactory.providedBy(filter_):
         filter_ = ViewFilter(filter_, params=dict())
     elif filter_ is not None:
         raise ValueError("%r should provide IViewFacory" % (filter_, ))
     return self._database.get_changes(filter_, limit, since)