diff options
| author | Ryan Williams <rdw@lindenlab.com> | 2010-02-28 15:00:19 -0800 |
|---|---|---|
| committer | Ryan Williams <rdw@lindenlab.com> | 2010-02-28 15:00:19 -0800 |
| commit | 6f7cc6a112a5b415a6e959b5e91deee0ae2b9144 (patch) | |
| tree | 0a7073fd4be2b2c2f569b72021d9eaf7b589b232 /examples | |
| parent | 34557336096d133c5369aa1b5a0945f51e471717 (diff) | |
| parent | 75e50ee098da6a41fc72e879239d39ec06d4a0e4 (diff) | |
| download | eventlet-6f7cc6a112a5b415a6e959b5e91deee0ae2b9144.tar.gz | |
Merge
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/forwarder.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/examples/forwarder.py b/examples/forwarder.py new file mode 100644 index 0000000..1cc4fa4 --- /dev/null +++ b/examples/forwarder.py @@ -0,0 +1,24 @@ +""" This is an incredibly simple port forwarder from port 7000 to 22 on localhost. It calls a callback function when the socket is closed, to demonstrate one way that you could start to do interesting things by +starting from a simple framework like this. +""" + +import eventlet +def closed_callback(): + print "called back" + +def forward(source, dest, cb = lambda: None): + """Forwards bytes unidirectionally from source to dest""" + while True: + d = source.recv(32384) + if d == '': + cb() + break + dest.sendall(d) + +listener = eventlet.listen(('localhost', 7000)) +while True: + client, addr = listener.accept() + server = eventlet.connect(('localhost', 22)) + # two unidirectional forwarders make a bidirectional one + eventlet.spawn_n(forward, client, server, closed_callback) + eventlet.spawn_n(forward, server, client) |
