diff options
author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2007-10-11 21:16:28 +0000 |
---|---|---|
committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2007-10-11 21:16:28 +0000 |
commit | 52ac60af8132ae7e42151d3012a9607d7cadaf95 (patch) | |
tree | 95085f9f535d20b6686399af1ba284bb74ac89d3 /gem/ex10.lua | |
parent | e394956cde629e24ecdd285c4c13c206891fcec4 (diff) | |
download | luasocket-52ac60af8132ae7e42151d3012a9607d7cadaf95.tar.gz luasocket-52ac60af8132ae7e42151d3012a9607d7cadaf95.tar.bz2 luasocket-52ac60af8132ae7e42151d3012a9607d7cadaf95.zip |
Tested each sample.
Diffstat (limited to 'gem/ex10.lua')
-rw-r--r-- | gem/ex10.lua | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gem/ex10.lua b/gem/ex10.lua new file mode 100644 index 0000000..2b1b98f --- /dev/null +++ b/gem/ex10.lua | |||
@@ -0,0 +1,17 @@ | |||
1 | function pump.step(src, snk) | ||
2 | local chunk, src_err = src() | ||
3 | local ret, snk_err = snk(chunk, src_err) | ||
4 | if chunk and ret then return 1 | ||
5 | else return nil, src_err or snk_err end | ||
6 | end | ||
7 | |||
8 | function pump.all(src, snk, step) | ||
9 | step = step or pump.step | ||
10 | while true do | ||
11 | local ret, err = step(src, snk) | ||
12 | if not ret then | ||
13 | if err then return nil, err | ||
14 | else return 1 end | ||
15 | end | ||
16 | end | ||
17 | end | ||