blob: a5d5621b6a0cc5264037cc5dc572eda30c375854 [file] [log] [blame]
Mark Sleec98d0502006-09-06 02:42:25 +00001import sys
2import traceback
3
Mark Sleec9676562006-09-05 17:34:52 +00004from thrift.Thrift import TProcessor
5from thrift.transport import TTransport
6
7class TServer:
8
9 """Base interface for a server, which must have a run method."""
10
11 def __init__(self, proc):
12 self.processor = proc
13
14 def run(self):
15 pass
16
17class TSimpleServer(TServer):
18
19 """Simple single-threaded server that just pumps around one transport."""
20
21 def __init__(self, proc, trans):
22 TServer.__init__(self, proc)
23 self.transport = trans
24
25 def run(self):
26 self.transport.listen()
27 while True:
28 client = TTransport.TBufferedTransport(self.transport.accept())
29 try:
30 while True:
31 self.processor.process(client, client)
32 except Exception, x:
Mark Sleec98d0502006-09-06 02:42:25 +000033 print '%s, %s, %s' % (type(x), x, traceback.format_exc())
Mark Sleec9676562006-09-05 17:34:52 +000034 print 'Client died.'
35 client.close()