Skip to content
Snippets Groups Projects
controller.py 36.5 KiB
Newer Older
  • Learn to ignore specific revisions
  •                 )
                if voucher.number in self._unpaid:
                    return attr.evolve(
                        voucher,
                        state=model_Unpaid(finished=self._unpaid[voucher.number]),
                    )
    
                if voucher.number in self._error:
                    return attr.evolve(
                        voucher,
                        state=self._error[voucher.number],
                    )
    
    
    def get_redeemer(plugin_name, node_config, announcement, reactor):
    
        section_name = "storageclient.plugins.{}".format(plugin_name)
    
        redeemer_kind = node_config.get_config(
            section=section_name,
    
            option="redeemer",
            default="ristretto",
    
        )
        return _REDEEMERS[redeemer_kind](section_name, node_config, announcement, reactor)
    
    
    _REDEEMERS = {
    
        "non": NonRedeemer.make,
        "dummy": DummyRedeemer.make,
        "double-spend": DoubleSpendRedeemer.make,
        "unpaid": UnpaidRedeemer.make,
        "error": ErrorRedeemer.make,
        "ristretto": RistrettoRedeemer.make,
    
    
    
    @inlineCallbacks
    def bracket(first, last, between):
        """
        Invoke an action between two other actions.
    
        :param first: A no-argument function that may return a Deferred.  It is
            called first.
    
        :param last: A no-argument function that may return a Deferred.  It is
            called last.
    
        :param between: A no-argument function that may return a Deferred.  It is
            called after ``first`` is done and completes before ``last`` is called.
    
        :return Deferred: A ``Deferred`` which fires with the result of
            ``between``.
        """
        yield first()
        try:
            result = yield between()
        except GeneratorExit:
            raise
        except:
            info = exc_info()
            yield last()
    
            if PY2:
                exec("raise info[0], info[1], info[2]")
            raise
    
        else:
            yield last()
            returnValue(result)