Newer
Older
def get_redeemer(plugin_name, node_config, announcement, reactor):
section_name = u"storageclient.plugins.{}".format(plugin_name)
redeemer_kind = node_config.get_config(
section=section_name,
option=u"redeemer",
default=u"ristretto",
)
return _REDEEMERS[redeemer_kind](section_name, node_config, announcement, reactor)
_REDEEMERS = {
u"dummy": DummyRedeemer.make,
u"double-spend": DoubleSpendRedeemer.make,
u"unpaid": UnpaidRedeemer.make,
u"error": ErrorRedeemer.make,
u"ristretto": RistrettoRedeemer.make,
}
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
@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()
raise info[0], info[1], info[2]
else:
yield last()
returnValue(result)