Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import SocketServer
|
||||
import pickle
|
||||
|
||||
HOST = "localhost"
|
||||
PORT = 8000
|
||||
|
||||
class RPCServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
|
||||
# The object_to_proxy member should be set to the object we want
|
||||
# methods called on. Unfortunately, we can't do this in the constructor
|
||||
# because the constructor should not be overridden in TCPServer...
|
||||
|
||||
daemon_threads = True
|
||||
|
||||
class RPCHandler(SocketServer.StreamRequestHandler):
|
||||
def handle(self):
|
||||
in_channel = pickle.Unpickler(self.rfile)
|
||||
out_channel = pickle.Pickler(self.wfile, protocol=2)
|
||||
while True:
|
||||
try:
|
||||
name, args, kwargs = in_channel.load()
|
||||
print 'got %s %s %s' % (name, args, kwargs)
|
||||
except EOFError:
|
||||
# EOF means we're done with this request.
|
||||
# Catching this exception to detect EOF is a bit hackish,
|
||||
# but will work for a quick demo like this
|
||||
break
|
||||
try:
|
||||
method = getattr(self.server.object_to_proxy, name)
|
||||
result = method(*args, **kwargs)
|
||||
except Exception, e:
|
||||
out_channel.dump(('Error',e))
|
||||
else:
|
||||
out_channel.dump(('OK',result))
|
||||
|
||||
class MyHandlerInstance(object):
|
||||
def echo(self, data):
|
||||
'''Method for returning data got from client'''
|
||||
return 'Server responded: %s' % data
|
||||
|
||||
def div(self, dividend, divisor):
|
||||
'''Method to divide 2 numbers'''
|
||||
return dividend/divisor
|
||||
|
||||
def is_computer_on(self):
|
||||
return True
|
||||
|
||||
if __name__ == '__main__':
|
||||
rpcserver = RPCServer((HOST, PORT), RPCHandler)
|
||||
rpcserver.object_to_proxy = MyHandlerInstance()
|
||||
try:
|
||||
rpcserver.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
print 'Exiting...'
|
||||
rpcserver.server_close()
|
||||
Loading…
Add table
Add a link
Reference in a new issue