| #!/usr/bin/env python |
| |
| import sys |
| sys.path.append('../gen-py') |
| |
| from tutorial import Calculator |
| from tutorial.ttypes import * |
| |
| from thrift.transport import TSocket |
| from thrift.transport import TTransport |
| from thrift.protocol import TBinaryProtocol |
| |
| # Make socket |
| transport = TSocket.TSocket('localhost', 9090) |
| |
| # Buffering is critical. Raw sockets are very slow |
| transport = TTransport.TBufferedTransport(transport) |
| |
| # Wrap in a protocol |
| protocol = TBinaryProtocol.TBinaryProtocol(transport) |
| |
| # Create a client to use the protocol encoder |
| client = Calculator.Client(protocol) |
| |
| # Connect! |
| transport.open() |
| |
| client.ping() |
| print 'ping()' |
| |
| sum = client.add(1,1) |
| print '1+1=%d' % (sum) |
| |
| work = Work() |
| |
| work.op = Operation.DIVIDE |
| work.num1 = 1 |
| work.num2 = 0 |
| |
| try: |
| quotient = client.calculate(1, work) |
| print 'Whoa? You know how to divide by zero?' |
| except InvalidOperation, io: |
| print 'InvalidOperation: %s' % (io.__str__()) |
| |
| work.op = Operation.SUBTRACT |
| work.num1 = 15 |
| work.num2 = 10 |
| |
| diff = client.calculate(1, work) |
| print '15-10=%d' % (diff) |
| |
| log = client.getStruct(1) |
| print 'Check log: %s' % (log.value) |
| |
| # Close! |
| transport.close() |
| |