summaryrefslogtreecommitdiff
path: root/examples/sink.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2013-10-17 15:37:47 -0700
committerGuido van Rossum <guido@python.org>2013-10-17 15:37:47 -0700
commitaa8ca3a0e22289dfe2dc14935730af6b199539bf (patch)
tree325aa7d9d584f40e4e48a36536fd97b9a34bff56 /examples/sink.py
parent4e43e8312f55cd98a53cdafecbdd953f60ed415c (diff)
parent1baab9131db010f8372ae63ae30b74ff3b4cbb17 (diff)
downloadtrollius-aa8ca3a0e22289dfe2dc14935730af6b199539bf.tar.gz
Merge
Diffstat (limited to 'examples/sink.py')
-rw-r--r--examples/sink.py29
1 files changed, 24 insertions, 5 deletions
diff --git a/examples/sink.py b/examples/sink.py
index bb29be2..eab6ffa 100644
--- a/examples/sink.py
+++ b/examples/sink.py
@@ -1,14 +1,28 @@
"""Test service that accepts connections and reads all data off them."""
+import argparse
import sys
from asyncio import *
+ARGS = argparse.ArgumentParser(description="TCP data sink example.")
+ARGS.add_argument(
+ '--iocp', action='store_true', dest='iocp',
+ default=False, help='Use IOCP event loop (Windows only)')
+ARGS.add_argument(
+ '--host', action='store', dest='host',
+ default='127.0.0.1', help='Host name')
+ARGS.add_argument(
+ '--port', action='store', dest='port',
+ default=1111, type=int, help='Port number')
+
server = None
+
def dprint(*args):
print('sink:', *args, file=sys.stderr)
+
class Service(Protocol):
def connection_made(self, tr):
@@ -32,21 +46,26 @@ class Service(Protocol):
def connection_lost(self, how):
dprint('closed', repr(how))
+
@coroutine
-def start(loop):
+def start(loop, host, port):
global server
- server = yield from loop.create_server(Service, 'localhost', 1111)
+ server = yield from loop.create_server(Service, host, port)
dprint('serving', [s.getsockname() for s in server.sockets])
yield from server.wait_closed()
+
def main():
- if '--iocp' in sys.argv:
+ args = ARGS.parse_args()
+ if args.iocp:
from asyncio.windows_events import ProactorEventLoop
loop = ProactorEventLoop()
set_event_loop(loop)
- loop = get_event_loop()
- loop.run_until_complete(start(loop))
+ else:
+ loop = get_event_loop()
+ loop.run_until_complete(start(loop, args.host, args.port))
loop.close()
+
if __name__ == '__main__':
main()