Update examples for RPC

This commit is contained in:
Jason Paryani
2013-11-13 21:52:50 -08:00
parent 64619758ab
commit 7d82dcbfd8
3 changed files with 100 additions and 1 deletions

View File

@@ -0,0 +1,39 @@
import capnp
import test_capnp
import socket
import traceback
class Server:
def __init__(self, val=1):
self.val = val
def foo(self, context):
context.results.x = str(context.params.i * 5 + self.val)
def restore(ref_id):
return test_capnp.TestInterface.new_server(Server(100))
def example_server(host='localhost', port=49999):
backlog = 1
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
loop = capnp.EventLoop()
while 1:
try:
(clientsocket, address) = s.accept()
stream = capnp.FdAsyncIoStream(clientsocket.fileno())
restorer = capnp.Restorer(test_capnp.TestSturdyRefObjectId, restore)
server = capnp.RpcServer(loop, stream, restorer)
waiter = capnp.PromiseFulfillerPair()
loop.wait(waiter)
except KeyboardInterrupt:
break
except:
traceback.print_exc()
example_server()