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
|
from twisted.protocols import amp
class Sum(amp.Command):
arguments = [(b"a", amp.Integer()), (b"b", amp.Integer())]
response = [(b"total", amp.Integer())]
class Divide(amp.Command):
arguments = [(b"numerator", amp.Integer()), (b"denominator", amp.Integer())]
response = [(b"result", amp.Float())]
errors = {ZeroDivisionError: b"ZERO_DIVISION"}
class Math(amp.AMP):
def sum(self, a, b):
total = a + b
print(f"Did a sum: {a} + {b} = {total}")
return {"total": total}
Sum.responder(sum)
def divide(self, numerator, denominator):
result = float(numerator) / denominator
print(f"Divided: {numerator} / {denominator} = {result}")
return {"result": result}
Divide.responder(divide)
def main():
from twisted.internet import reactor
from twisted.internet.protocol import Factory
pf = Factory()
pf.protocol = Math
reactor.listenTCP(1234, pf)
print("started")
reactor.run()
if __name__ == "__main__":
main()
|