forked from M-Labs/artiq
pc_rpc: factor out asyncio server code
This commit is contained in:
parent
1e5b05d4ec
commit
2946fa58b8
|
@ -10,7 +10,7 @@ import asyncio
|
||||||
from scipy import interpolate
|
from scipy import interpolate
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from artiq.management.pc_rpc import Server
|
from artiq.management.pc_rpc import simple_server_loop
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger("Pdq2")
|
logger = logging.getLogger("Pdq2")
|
||||||
|
@ -355,16 +355,7 @@ def main():
|
||||||
|
|
||||||
dev = Pdq2(serial=args.serial)
|
dev = Pdq2(serial=args.serial)
|
||||||
try:
|
try:
|
||||||
loop = asyncio.get_event_loop()
|
simple_server_loop(dev, args.bind, args.port)
|
||||||
try:
|
|
||||||
server = Server(dev)
|
|
||||||
loop.run_until_complete(server.start(args.bind, args.port))
|
|
||||||
try:
|
|
||||||
loop.run_forever()
|
|
||||||
finally:
|
|
||||||
loop.run_until_complete(server.stop())
|
|
||||||
finally:
|
|
||||||
loop.close()
|
|
||||||
finally:
|
finally:
|
||||||
dev.close()
|
dev.close()
|
||||||
|
|
||||||
|
|
|
@ -158,3 +158,24 @@ class Server:
|
||||||
writer.write(line.encode())
|
writer.write(line.encode())
|
||||||
finally:
|
finally:
|
||||||
writer.close()
|
writer.close()
|
||||||
|
|
||||||
|
|
||||||
|
def simple_server_loop(target, host, port):
|
||||||
|
"""Runs a server until an exception is raised (e.g. the user hits Ctrl-C).
|
||||||
|
|
||||||
|
:param target: Object providing the RPC methods to be exposed to the
|
||||||
|
client.
|
||||||
|
:param host: Bind address of the server.
|
||||||
|
:param port: TCP port to bind to.
|
||||||
|
|
||||||
|
"""
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
try:
|
||||||
|
server = Server(target)
|
||||||
|
loop.run_until_complete(server.start(host, port))
|
||||||
|
try:
|
||||||
|
loop.run_forever()
|
||||||
|
finally:
|
||||||
|
loop.run_until_complete(server.stop())
|
||||||
|
finally:
|
||||||
|
loop.close()
|
||||||
|
|
Loading…
Reference in New Issue